| Index: src/interpreter/interpreter.cc
|
| diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc
|
| index 48b0f3ad12e74b18edb18e48621dce2e9911ad76..2d4b1bd889f51d43c3692df2aa88f1496e7d7fba 100644
|
| --- a/src/interpreter/interpreter.cc
|
| +++ b/src/interpreter/interpreter.cc
|
| @@ -17,6 +17,8 @@ namespace internal {
|
| namespace interpreter {
|
|
|
| using compiler::Node;
|
| +typedef compiler::InterpreterAssembler::SaveAccumulatorMode SaveAccumulatorMode;
|
| +
|
| #define __ assembler->
|
|
|
|
|
| @@ -345,7 +347,7 @@ void Interpreter::DoStoreGlobal(Callable ic,
|
| Node* smi_slot = __ SmiTag(raw_slot);
|
| Node* type_feedback_vector = __ LoadTypeFeedbackVector();
|
| __ CallIC(ic.descriptor(), code_target, global, name, value, smi_slot,
|
| - type_feedback_vector);
|
| + type_feedback_vector, SaveAccumulatorMode::kSaveAccumulator);
|
|
|
| __ Dispatch();
|
| }
|
| @@ -562,7 +564,7 @@ void Interpreter::DoStoreIC(Callable ic,
|
| Node* smi_slot = __ SmiTag(raw_slot);
|
| Node* type_feedback_vector = __ LoadTypeFeedbackVector();
|
| __ CallIC(ic.descriptor(), code_target, object, name, value, smi_slot,
|
| - type_feedback_vector);
|
| + type_feedback_vector, SaveAccumulatorMode::kSaveAccumulator);
|
| __ Dispatch();
|
| }
|
|
|
| @@ -629,7 +631,7 @@ void Interpreter::DoKeyedStoreIC(Callable ic,
|
| Node* smi_slot = __ SmiTag(raw_slot);
|
| Node* type_feedback_vector = __ LoadTypeFeedbackVector();
|
| __ CallIC(ic.descriptor(), code_target, object, name, value, smi_slot,
|
| - type_feedback_vector);
|
| + type_feedback_vector, SaveAccumulatorMode::kSaveAccumulator);
|
| __ Dispatch();
|
| }
|
|
|
| @@ -1199,9 +1201,10 @@ void Interpreter::DoJumpIfFalseConstant(
|
| void Interpreter::DoJumpIfToBooleanTrue(
|
| compiler::InterpreterAssembler* assembler) {
|
| Node* accumulator = __ GetAccumulator();
|
| - Node* relative_jump = __ BytecodeOperandImm(0);
|
| Node* to_boolean_value =
|
| - __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator);
|
| + __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator,
|
| + SaveAccumulatorMode::kSaveAccumulator);
|
| + Node* relative_jump = __ BytecodeOperandImm(0);
|
| Node* true_value = __ BooleanConstant(true);
|
| __ JumpIfWordEqual(to_boolean_value, true_value, relative_jump);
|
| }
|
| @@ -1216,7 +1219,8 @@ void Interpreter::DoJumpIfToBooleanTrueConstant(
|
| compiler::InterpreterAssembler* assembler) {
|
| Node* accumulator = __ GetAccumulator();
|
| Node* to_boolean_value =
|
| - __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator);
|
| + __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator,
|
| + SaveAccumulatorMode::kSaveAccumulator);
|
| Node* index = __ BytecodeOperandIdx(0);
|
| Node* constant = __ LoadConstantPoolEntry(index);
|
| Node* relative_jump = __ SmiUntag(constant);
|
| @@ -1232,9 +1236,10 @@ void Interpreter::DoJumpIfToBooleanTrueConstant(
|
| void Interpreter::DoJumpIfToBooleanFalse(
|
| compiler::InterpreterAssembler* assembler) {
|
| Node* accumulator = __ GetAccumulator();
|
| - Node* relative_jump = __ BytecodeOperandImm(0);
|
| Node* to_boolean_value =
|
| - __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator);
|
| + __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator,
|
| + SaveAccumulatorMode::kSaveAccumulator);
|
| + Node* relative_jump = __ BytecodeOperandImm(0);
|
| Node* false_value = __ BooleanConstant(false);
|
| __ JumpIfWordEqual(to_boolean_value, false_value, relative_jump);
|
| }
|
| @@ -1249,7 +1254,8 @@ void Interpreter::DoJumpIfToBooleanFalseConstant(
|
| compiler::InterpreterAssembler* assembler) {
|
| Node* accumulator = __ GetAccumulator();
|
| Node* to_boolean_value =
|
| - __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator);
|
| + __ CallRuntime(Runtime::kInterpreterToBoolean, accumulator,
|
| + SaveAccumulatorMode::kSaveAccumulator);
|
| Node* index = __ BytecodeOperandIdx(0);
|
| Node* constant = __ LoadConstantPoolEntry(index);
|
| Node* relative_jump = __ SmiUntag(constant);
|
|
|