| Index: src/interpreter/interpreter.cc
|
| diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc
|
| index f04145eaca4e5ff2bd34bbb34a090e043c657493..6da7e5f066f9477b6da1abc146c50e6e32f74a8a 100644
|
| --- a/src/interpreter/interpreter.cc
|
| +++ b/src/interpreter/interpreter.cc
|
| @@ -1226,7 +1226,8 @@ void Interpreter::DoAddSmi(InterpreterAssembler* assembler) {
|
| __ Bind(&fastpath);
|
| {
|
| // Try fast Smi addition first.
|
| - Node* pair = __ SmiAddWithOverflow(left, right);
|
| + Node* pair = __ IntPtrAddWithOverflow(__ BitcastTaggedToWord(left),
|
| + __ BitcastTaggedToWord(right));
|
| Node* overflow = __ Projection(1, pair);
|
|
|
| // Check if the Smi additon overflowed.
|
| @@ -1236,7 +1237,7 @@ void Interpreter::DoAddSmi(InterpreterAssembler* assembler) {
|
| {
|
| __ UpdateFeedback(__ Int32Constant(BinaryOperationFeedback::kSignedSmall),
|
| type_feedback_vector, slot_index);
|
| - var_result.Bind(__ Projection(0, pair));
|
| + var_result.Bind(__ BitcastWordToTaggedSigned(__ Projection(0, pair)));
|
| __ Goto(&end);
|
| }
|
| }
|
| @@ -1279,7 +1280,8 @@ void Interpreter::DoSubSmi(InterpreterAssembler* assembler) {
|
| __ Bind(&fastpath);
|
| {
|
| // Try fast Smi subtraction first.
|
| - Node* pair = __ SmiSubWithOverflow(left, right);
|
| + Node* pair = __ IntPtrSubWithOverflow(__ BitcastTaggedToWord(left),
|
| + __ BitcastTaggedToWord(right));
|
| Node* overflow = __ Projection(1, pair);
|
|
|
| // Check if the Smi subtraction overflowed.
|
| @@ -1289,7 +1291,7 @@ void Interpreter::DoSubSmi(InterpreterAssembler* assembler) {
|
| {
|
| __ UpdateFeedback(__ Int32Constant(BinaryOperationFeedback::kSignedSmall),
|
| type_feedback_vector, slot_index);
|
| - var_result.Bind(__ Projection(0, pair));
|
| + var_result.Bind(__ BitcastWordToTaggedSigned(__ Projection(0, pair)));
|
| __ Goto(&end);
|
| }
|
| }
|
|
|