[ic] Temporary resurrect ICStateField to recover performance regression.

Zero value of ICStateField part made megamorphic stub cache unusable.
We need to revisit hashing algorithm in order to remove the ICStateField.

BUG=chromium:619016
LOG=N

Review-Url: https://codereview.chromium.org/2064713002
Cr-Commit-Position: refs/heads/master@{#36959}
This commit is contained in:
ishell 2016-06-14 03:53:10 -07:00 committed by Commit bot
parent bd451d421b
commit 6c5152406f
2 changed files with 5 additions and 1 deletions

View File

@ -5119,8 +5119,10 @@ Address Code::constant_pool() {
Code::Flags Code::ComputeFlags(Kind kind, ExtraICState extra_ic_state,
CacheHolderFlag holder) {
// TODO(ishell): remove ICStateField.
// Compute the bit mask.
unsigned int bits = KindField::encode(kind) |
ICStateField::encode(MONOMORPHIC) |
ExtraICStateField::encode(extra_ic_state) |
CacheHolderField::encode(holder);
return static_cast<Flags>(bits);

View File

@ -5281,7 +5281,9 @@ class Code: public HeapObject {
class ProfilerTicksField : public BitField<int, 4, 28> {};
// Flags layout. BitField<type, shift, size>.
class CacheHolderField : public BitField<CacheHolderFlag, 0, 2> {};
class ICStateField : public BitField<InlineCacheState, 0, 3> {};
class CacheHolderField
: public BitField<CacheHolderFlag, ICStateField::kNext, 2> {};
class KindField : public BitField<Kind, CacheHolderField::kNext, 5> {};
class ExtraICStateField : public BitField<ExtraICState, KindField::kNext,
PlatformSmiTagging::kSmiValueSize -