Index: src/interpreter/interpreter.cc |
diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc |
index 3099fdfc76630ac37b5fc6c56b3f51483cb05773..19151963540096f17b4fcddd5d727599b15a85df 100644 |
--- a/src/interpreter/interpreter.cc |
+++ b/src/interpreter/interpreter.cc |
@@ -1369,15 +1369,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); |
@@ -1386,6 +1387,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. |