Index: src/interpreter/interpreter.cc |
diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc |
index 98d9b33fb864a5a0019ec380db936aa80c34204f..b687f1430f30f6ff10052f8679239e0ad926ae45 100644 |
--- a/src/interpreter/interpreter.cc |
+++ b/src/interpreter/interpreter.cc |
@@ -349,8 +349,8 @@ void Interpreter::DoKeyedStoreICStrict( |
// KeyedStoreICGeneric <object> <key> |
// |
-// Calls the generic KeyStoreIC for <object> and the key <key> with the value in |
-// the accumulator. |
+// Calls the generic KeyedStoreIC for <object> and the key <key> with the value |
+// in the accumulator. |
void Interpreter::DoKeyedStoreICGeneric( |
compiler::InterpreterAssembler* assembler) { |
Callable ic = |
@@ -656,6 +656,17 @@ void Interpreter::DoToBoolean(compiler::InterpreterAssembler* assembler) { |
} |
+// ToName |
+// |
+// Cast the object referenced by the accumulator to a name. |
+void Interpreter::DoToName(compiler::InterpreterAssembler* assembler) { |
+ Node* accumulator = __ GetAccumulator(); |
+ Node* result = __ CallRuntime(Runtime::kToName, accumulator); |
+ __ SetAccumulator(result); |
+ __ Dispatch(); |
+} |
+ |
+ |
// Jump <imm8> |
// |
// Jump by number of bytes represented by the immediate operand |imm8|. |
@@ -730,12 +741,8 @@ void Interpreter::DoJumpIfFalseConstant( |
} |
-// CreateArrayLiteral <idx> <flags> |
-// |
-// Creates an array literal for literal index <idx> with flags <flags> and |
-// constant elements in the accumulator. |
-void Interpreter::DoCreateArrayLiteral( |
- compiler::InterpreterAssembler* assembler) { |
+void Interpreter::DoCreateLiteral(Runtime::FunctionId function_id, |
+ compiler::InterpreterAssembler* assembler) { |
Node* constant_elements = __ GetAccumulator(); |
Node* literal_index_raw = __ BytecodeOperandIdx8(0); |
Node* literal_index = __ SmiTag(literal_index_raw); |
@@ -744,13 +751,33 @@ void Interpreter::DoCreateArrayLiteral( |
Node* closure = __ LoadRegister(Register::function_closure()); |
Node* literals_array = |
__ LoadObjectField(closure, JSFunction::kLiteralsOffset); |
- Node* result = __ CallRuntime(Runtime::kCreateArrayLiteral, literals_array, |
- literal_index, constant_elements, flags); |
+ Node* result = __ CallRuntime(function_id, literals_array, literal_index, |
+ constant_elements, flags); |
__ SetAccumulator(result); |
__ Dispatch(); |
} |
+// CreateArrayLiteral <idx> <flags> |
+// |
+// Creates an array literal for literal index <idx> with flags <flags> and |
+// constant elements in the accumulator. |
+void Interpreter::DoCreateArrayLiteral( |
+ compiler::InterpreterAssembler* assembler) { |
+ DoCreateLiteral(Runtime::kCreateArrayLiteral, assembler); |
+} |
+ |
+ |
+// CreateObjectLiteral <idx> <flags> |
+// |
+// Creates an object literal for literal index <idx> with flags <flags> and |
+// constant elements in the accumulator. |
+void Interpreter::DoCreateObjectLiteral( |
+ compiler::InterpreterAssembler* assembler) { |
+ DoCreateLiteral(Runtime::kCreateObjectLiteral, assembler); |
+} |
+ |
+ |
// CreateClosure <tenured> |
// |
// Creates a new closure for SharedFunctionInfo in the accumulator with the |