Index: src/interpreter/interpreter.cc |
diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc |
index 12b7d3da0fc4f22867bde0e833d0a910b644055b..a17555f317d0b778d6c110bb19ab521ba4a5fecb 100644 |
--- a/src/interpreter/interpreter.cc |
+++ b/src/interpreter/interpreter.cc |
@@ -1367,15 +1367,16 @@ void Interpreter::DoCreateObjectLiteral( |
} |
-// CreateClosure <tenured> |
+// CreateClosure <index> <tenured> |
// |
-// Creates a new closure for SharedFunctionInfo in the accumulator with the |
-// PretenureFlag <tenured>. |
+// Creates a new closure for SharedFunctionInfo at position |index| in the |
+// constant pool and with the PretenureFlag <tenured>. |
void Interpreter::DoCreateClosure(compiler::InterpreterAssembler* assembler) { |
// TODO(rmcilroy): Possibly call FastNewClosureStub when possible instead of |
// calling into the runtime. |
- Node* shared = __ GetAccumulator(); |
- Node* tenured_raw = __ BytecodeOperandImm(0); |
+ Node* index = __ BytecodeOperandIdx(0); |
+ Node* shared = __ LoadConstantPoolEntry(index); |
+ Node* tenured_raw = __ BytecodeOperandImm(1); |
Node* tenured = __ SmiTag(tenured_raw); |
Node* result = |
__ CallRuntime(Runtime::kInterpreterNewClosure, shared, tenured); |
@@ -1384,6 +1385,16 @@ void Interpreter::DoCreateClosure(compiler::InterpreterAssembler* assembler) { |
} |
+// CreateClosureWide <index> <tenured> |
+// |
+// Creates a new closure for SharedFunctionInfo at position |index| in the |
+// constant pool and with the PretenureFlag <tenured>. |
+void Interpreter::DoCreateClosureWide( |
+ compiler::InterpreterAssembler* assembler) { |
+ return DoCreateClosure(assembler); |
+} |
+ |
+ |
// CreateMappedArguments |
// |
// Creates a new mapped arguments object. |