Index: src/interpreter/interpreter.cc |
diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc |
index b1bd1976339f2c37e451cde252565d75c289d5d3..4861237ae0ac7510a245abfd51d56e73faab217d 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; |
Michael Starzinger
2015/12/09 18:16:22
nit: Would "using compiler::InterpreterAssembler::
rmcilroy
2015/12/10 14:17:12
No, that didn't work (can't remember why). Removed
|
+ |
#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(); |
} |
@@ -1188,9 +1190,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, |
Michael Starzinger
2015/12/09 18:16:22
We assume that this bytecode is safe with the deop
rmcilroy
2015/12/10 14:17:12
Removed accumulator spilling (note the accumulator
|
+ SaveAccumulatorMode::kSaveAccumulator); |
+ Node* relative_jump = __ BytecodeOperandImm(0); |
Node* true_value = __ BooleanConstant(true); |
__ JumpIfWordEqual(to_boolean_value, true_value, relative_jump); |
} |
@@ -1205,7 +1208,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); |
@@ -1221,9 +1225,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); |
} |
@@ -1238,7 +1243,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); |