Index: src/interpreter/interpreter.cc |
diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc |
index 09209ff5dda4cc18ed8c16f8286423a25b0d389d..38a0727b7811f752fc7d1cc7741f8d41c7267119 100644 |
--- a/src/interpreter/interpreter.cc |
+++ b/src/interpreter/interpreter.cc |
@@ -744,6 +744,20 @@ void Interpreter::DoPopContext(InterpreterAssembler* assembler) { |
__ Dispatch(); |
} |
+void Interpreter::DoBinaryOp(Callable callable, |
+ InterpreterAssembler* assembler) { |
+ // TODO(bmeurer): Collect definition side type feedback for various |
+ // binary operations. |
+ Node* target = __ HeapConstant(callable.code()); |
+ Node* reg_index = __ BytecodeOperandReg(0); |
+ Node* lhs = __ LoadRegister(reg_index); |
+ Node* rhs = __ GetAccumulator(); |
+ Node* context = __ GetContext(); |
+ Node* result = __ CallStub(callable.descriptor(), target, context, lhs, rhs); |
+ __ SetAccumulator(result); |
+ __ Dispatch(); |
+} |
+ |
void Interpreter::DoBinaryOp(Runtime::FunctionId function_id, |
InterpreterAssembler* assembler) { |
// TODO(rmcilroy): Call ICs which back-patch bytecode with type specialized |
@@ -1174,7 +1188,7 @@ void Interpreter::DoTestNotEqual(InterpreterAssembler* assembler) { |
// |
// Test if the value in the <src> register is strictly equal to the accumulator. |
void Interpreter::DoTestEqualStrict(InterpreterAssembler* assembler) { |
- DoBinaryOp(Runtime::kStrictEqual, assembler); |
+ DoBinaryOp(CodeFactory::StrictEqual(isolate_), assembler); |
} |