| 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.
|
|
|