| Index: src/ic/ic-state.cc
|
| diff --git a/src/ic/ic-state.cc b/src/ic/ic-state.cc
|
| index 13c8e64216277e3d67925fde08954bcf8cc3daca..0c71949d8acdc5fc608e21e3000e3ca2aff7ebd3 100644
|
| --- a/src/ic/ic-state.cc
|
| +++ b/src/ic/ic-state.cc
|
| @@ -52,6 +52,7 @@ BinaryOpICState::BinaryOpICState(Isolate* isolate, ExtraICState extra_ic_state)
|
| isolate_(isolate) {
|
| op_ =
|
| static_cast<Token::Value>(FIRST_TOKEN + OpField::decode(extra_ic_state));
|
| + strong_ = StrongField::decode(extra_ic_state);
|
| left_kind_ = LeftKindField::decode(extra_ic_state);
|
| right_kind_ = fixed_right_arg_.IsJust()
|
| ? (Smi::IsValid(fixed_right_arg_.FromJust()) ? SMI : INT32)
|
| @@ -66,6 +67,7 @@ ExtraICState BinaryOpICState::GetExtraICState() const {
|
| ExtraICState extra_ic_state =
|
| OpField::encode(op_ - FIRST_TOKEN) | LeftKindField::encode(left_kind_) |
|
| ResultKindField::encode(result_kind_) |
|
| + StrongField::encode(strong_) |
|
| HasFixedRightArgField::encode(fixed_right_arg_.IsJust());
|
| if (fixed_right_arg_.IsJust()) {
|
| extra_ic_state = FixedRightArgValueField::update(
|
| @@ -84,14 +86,14 @@ void BinaryOpICState::GenerateAheadOfTime(
|
| // expensive at runtime. When solved we should be able to add most binops to
|
| // the snapshot instead of hand-picking them.
|
| // Generated list of commonly used stubs
|
| -#define GENERATE(op, left_kind, right_kind, result_kind) \
|
| - do { \
|
| - BinaryOpICState state(isolate, op); \
|
| - state.left_kind_ = left_kind; \
|
| - state.fixed_right_arg_ = Nothing<int>(); \
|
| - state.right_kind_ = right_kind; \
|
| - state.result_kind_ = result_kind; \
|
| - Generate(isolate, state); \
|
| +#define GENERATE(op, left_kind, right_kind, result_kind) \
|
| + do { \
|
| + BinaryOpICState state(isolate, op, LanguageMode::SLOPPY); \
|
| + state.left_kind_ = left_kind; \
|
| + state.fixed_right_arg_ = Nothing<int>(); \
|
| + state.right_kind_ = right_kind; \
|
| + state.result_kind_ = result_kind; \
|
| + Generate(isolate, state); \
|
| } while (false)
|
| GENERATE(Token::ADD, INT32, INT32, INT32);
|
| GENERATE(Token::ADD, INT32, INT32, NUMBER);
|
| @@ -188,7 +190,7 @@ void BinaryOpICState::GenerateAheadOfTime(
|
| #undef GENERATE
|
| #define GENERATE(op, left_kind, fixed_right_arg_value, result_kind) \
|
| do { \
|
| - BinaryOpICState state(isolate, op); \
|
| + BinaryOpICState state(isolate, op, LanguageMode::SLOPPY); \
|
| state.left_kind_ = left_kind; \
|
| state.fixed_right_arg_ = Just(fixed_right_arg_value); \
|
| state.right_kind_ = SMI; \
|
|
|