| Index: src/ic/ic-state.h
|
| diff --git a/src/ic/ic-state.h b/src/ic/ic-state.h
|
| index dbc504bf6d79f9f95d6a86e14eca0514198507f5..89e455deb786e35edc7034b5d5ebb4750261b2d9 100644
|
| --- a/src/ic/ic-state.h
|
| +++ b/src/ic/ic-state.h
|
| @@ -201,11 +201,21 @@ class CompareICState {
|
|
|
|
|
| class LoadICState final BASE_EMBEDDED {
|
| + private:
|
| + class ContextualModeBits : public BitField<ContextualMode, 0, 1> {};
|
| + class LanguageModeBits : public BitField<LanguageMode, 1, 2> {};
|
| + STATIC_ASSERT(static_cast<int>(NOT_CONTEXTUAL) == 0);
|
| + const ExtraICState state_;
|
| +
|
| public:
|
| + static const ExtraICState kStrongModeState = STRONG
|
| + << LanguageModeBits::kShift;
|
| +
|
| explicit LoadICState(ExtraICState extra_ic_state) : state_(extra_ic_state) {}
|
|
|
| - explicit LoadICState(ContextualMode mode)
|
| - : state_(ContextualModeBits::encode(mode)) {}
|
| + explicit LoadICState(ContextualMode mode, LanguageMode language_mode)
|
| + : state_(ContextualModeBits::encode(mode) |
|
| + LanguageModeBits::encode(language_mode)) {}
|
|
|
| ExtraICState GetExtraICState() const { return state_; }
|
|
|
| @@ -213,15 +223,17 @@ class LoadICState final BASE_EMBEDDED {
|
| return ContextualModeBits::decode(state_);
|
| }
|
|
|
| + LanguageMode language_mode() const {
|
| + return LanguageModeBits::decode(state_);
|
| + }
|
| +
|
| static ContextualMode GetContextualMode(ExtraICState state) {
|
| return LoadICState(state).contextual_mode();
|
| }
|
|
|
| - private:
|
| - class ContextualModeBits : public BitField<ContextualMode, 0, 1> {};
|
| - STATIC_ASSERT(static_cast<int>(NOT_CONTEXTUAL) == 0);
|
| -
|
| - const ExtraICState state_;
|
| + static LanguageMode GetLanguageMode(ExtraICState state) {
|
| + return LoadICState(state).language_mode();
|
| + }
|
| };
|
|
|
|
|
|
|