| Index: src/ic/ic-state.h
|
| diff --git a/src/ic/ic-state.h b/src/ic/ic-state.h
|
| index dbc504bf6d79f9f95d6a86e14eca0514198507f5..4df355db9022a4c69d8709c68dab23c6d0e16bee 100644
|
| --- a/src/ic/ic-state.h
|
| +++ b/src/ic/ic-state.h
|
| @@ -201,11 +201,20 @@ class CompareICState {
|
|
|
|
|
| class LoadICState final BASE_EMBEDDED {
|
| + private:
|
| + class ContextualModeBits : public BitField<ContextualMode, 0, 1> {};
|
| + class StrengthBits : public BitField<bool, 1, 1> {};
|
| + STATIC_ASSERT(static_cast<int>(NOT_CONTEXTUAL) == 0);
|
| + const ExtraICState state_;
|
| +
|
| public:
|
| + static const ExtraICState kStrongModeState = 1 << StrengthBits::kShift;
|
| +
|
| explicit LoadICState(ExtraICState extra_ic_state) : state_(extra_ic_state) {}
|
|
|
| - explicit LoadICState(ContextualMode mode)
|
| - : state_(ContextualModeBits::encode(mode)) {}
|
| + explicit LoadICState(ContextualMode mode, Strength strength)
|
| + : state_(ContextualModeBits::encode(mode) |
|
| + StrengthBits::encode(is_strong(strength))) {}
|
|
|
| ExtraICState GetExtraICState() const { return state_; }
|
|
|
| @@ -213,15 +222,17 @@ class LoadICState final BASE_EMBEDDED {
|
| return ContextualModeBits::decode(state_);
|
| }
|
|
|
| + Strength strength() const {
|
| + return StrengthBits::decode(state_) ? Strength::STRONG : Strength::WEAK;
|
| + }
|
| +
|
| 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 Strength GetStrength(ExtraICState state) {
|
| + return LoadICState(state).strength();
|
| + }
|
| };
|
|
|
|
|
|
|