| Index: src/interpreter/interpreter.cc
|
| diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc
|
| index c196118adea782bece9116607b9f5cdee8269a29..0c3b1e31a9520afd180af43d52c9bf71990a4c5f 100644
|
| --- a/src/interpreter/interpreter.cc
|
| +++ b/src/interpreter/interpreter.cc
|
| @@ -26,6 +26,7 @@ namespace interpreter {
|
| using compiler::Node;
|
| typedef CodeStubAssembler::Label Label;
|
| typedef CodeStubAssembler::Variable Variable;
|
| +typedef InterpreterAssembler::Arg Arg;
|
|
|
| #define __ assembler->
|
|
|
| @@ -383,6 +384,7 @@ void Interpreter::DoMov(InterpreterAssembler* assembler) {
|
|
|
| Node* Interpreter::BuildLoadGlobal(Callable ic,
|
| InterpreterAssembler* assembler) {
|
| + typedef LoadGlobalWithVectorDescriptor Descriptor;
|
| // Get the global object.
|
| Node* context = __ GetContext();
|
|
|
| @@ -391,8 +393,9 @@ Node* Interpreter::BuildLoadGlobal(Callable ic,
|
| Node* raw_slot = __ BytecodeOperandIdx(0);
|
| Node* smi_slot = __ SmiTag(raw_slot);
|
| Node* type_feedback_vector = __ LoadTypeFeedbackVector();
|
| - return __ CallStub(ic.descriptor(), code_target, context, smi_slot,
|
| - type_feedback_vector);
|
| + return __ CallStub(ic.descriptor(), code_target, context,
|
| + Arg(Descriptor::kSlot, smi_slot),
|
| + Arg(Descriptor::kVector, type_feedback_vector));
|
| }
|
|
|
| // LdaGlobal <slot>
|
| @@ -433,6 +436,7 @@ void Interpreter::DoLdaGlobalInsideTypeof(InterpreterAssembler* assembler) {
|
| }
|
|
|
| void Interpreter::DoStaGlobal(Callable ic, InterpreterAssembler* assembler) {
|
| + typedef StoreWithVectorDescriptor Descriptor;
|
| // Get the global object.
|
| Node* context = __ GetContext();
|
| Node* native_context =
|
| @@ -447,8 +451,10 @@ void Interpreter::DoStaGlobal(Callable ic, InterpreterAssembler* assembler) {
|
| Node* raw_slot = __ BytecodeOperandIdx(1);
|
| Node* smi_slot = __ SmiTag(raw_slot);
|
| Node* type_feedback_vector = __ LoadTypeFeedbackVector();
|
| - __ CallStub(ic.descriptor(), code_target, context, global, name, value,
|
| - smi_slot, type_feedback_vector);
|
| + __ CallStub(ic.descriptor(), code_target, context,
|
| + Arg(Descriptor::kReceiver, global), Arg(Descriptor::kName, name),
|
| + Arg(Descriptor::kValue, value), Arg(Descriptor::kSlot, smi_slot),
|
| + Arg(Descriptor::kVector, type_feedback_vector));
|
| __ Dispatch();
|
| }
|
|
|
| @@ -567,6 +573,7 @@ void Interpreter::DoStaLookupSlotStrict(InterpreterAssembler* assembler) {
|
|
|
| Node* Interpreter::BuildLoadNamedProperty(Callable ic,
|
| InterpreterAssembler* assembler) {
|
| + typedef LoadWithVectorDescriptor Descriptor;
|
| Node* code_target = __ HeapConstant(ic.code());
|
| Node* register_index = __ BytecodeOperandReg(0);
|
| Node* object = __ LoadRegister(register_index);
|
| @@ -576,8 +583,10 @@ Node* Interpreter::BuildLoadNamedProperty(Callable ic,
|
| Node* smi_slot = __ SmiTag(raw_slot);
|
| Node* type_feedback_vector = __ LoadTypeFeedbackVector();
|
| Node* context = __ GetContext();
|
| - return __ CallStub(ic.descriptor(), code_target, context, object, name,
|
| - smi_slot, type_feedback_vector);
|
| + return __ CallStub(
|
| + ic.descriptor(), code_target, context, Arg(Descriptor::kReceiver, object),
|
| + Arg(Descriptor::kName, name), Arg(Descriptor::kSlot, smi_slot),
|
| + Arg(Descriptor::kVector, type_feedback_vector));
|
| }
|
|
|
| // LdaNamedProperty <object> <name_index> <slot>
|
| @@ -605,6 +614,7 @@ void Interpreter::DoLdrNamedProperty(InterpreterAssembler* assembler) {
|
|
|
| Node* Interpreter::BuildLoadKeyedProperty(Callable ic,
|
| InterpreterAssembler* assembler) {
|
| + typedef LoadWithVectorDescriptor Descriptor;
|
| Node* code_target = __ HeapConstant(ic.code());
|
| Node* reg_index = __ BytecodeOperandReg(0);
|
| Node* object = __ LoadRegister(reg_index);
|
| @@ -613,8 +623,10 @@ Node* Interpreter::BuildLoadKeyedProperty(Callable ic,
|
| Node* smi_slot = __ SmiTag(raw_slot);
|
| Node* type_feedback_vector = __ LoadTypeFeedbackVector();
|
| Node* context = __ GetContext();
|
| - return __ CallStub(ic.descriptor(), code_target, context, object, name,
|
| - smi_slot, type_feedback_vector);
|
| + return __ CallStub(
|
| + ic.descriptor(), code_target, context, Arg(Descriptor::kReceiver, object),
|
| + Arg(Descriptor::kName, name), Arg(Descriptor::kSlot, smi_slot),
|
| + Arg(Descriptor::kVector, type_feedback_vector));
|
| }
|
|
|
| // KeyedLoadIC <object> <slot>
|
| @@ -641,6 +653,7 @@ void Interpreter::DoLdrKeyedProperty(InterpreterAssembler* assembler) {
|
| }
|
|
|
| void Interpreter::DoStoreIC(Callable ic, InterpreterAssembler* assembler) {
|
| + typedef StoreWithVectorDescriptor Descriptor;
|
| Node* code_target = __ HeapConstant(ic.code());
|
| Node* object_reg_index = __ BytecodeOperandReg(0);
|
| Node* object = __ LoadRegister(object_reg_index);
|
| @@ -651,8 +664,10 @@ void Interpreter::DoStoreIC(Callable ic, InterpreterAssembler* assembler) {
|
| Node* smi_slot = __ SmiTag(raw_slot);
|
| Node* type_feedback_vector = __ LoadTypeFeedbackVector();
|
| Node* context = __ GetContext();
|
| - __ CallStub(ic.descriptor(), code_target, context, object, name, value,
|
| - smi_slot, type_feedback_vector);
|
| + __ CallStub(ic.descriptor(), code_target, context,
|
| + Arg(Descriptor::kReceiver, object), Arg(Descriptor::kName, name),
|
| + Arg(Descriptor::kValue, value), Arg(Descriptor::kSlot, smi_slot),
|
| + Arg(Descriptor::kVector, type_feedback_vector));
|
| __ Dispatch();
|
| }
|
|
|
| @@ -677,6 +692,7 @@ void Interpreter::DoStaNamedPropertyStrict(InterpreterAssembler* assembler) {
|
| }
|
|
|
| void Interpreter::DoKeyedStoreIC(Callable ic, InterpreterAssembler* assembler) {
|
| + typedef StoreWithVectorDescriptor Descriptor;
|
| Node* code_target = __ HeapConstant(ic.code());
|
| Node* object_reg_index = __ BytecodeOperandReg(0);
|
| Node* object = __ LoadRegister(object_reg_index);
|
| @@ -687,8 +703,10 @@ void Interpreter::DoKeyedStoreIC(Callable ic, InterpreterAssembler* assembler) {
|
| Node* smi_slot = __ SmiTag(raw_slot);
|
| Node* type_feedback_vector = __ LoadTypeFeedbackVector();
|
| Node* context = __ GetContext();
|
| - __ CallStub(ic.descriptor(), code_target, context, object, name, value,
|
| - smi_slot, type_feedback_vector);
|
| + __ CallStub(ic.descriptor(), code_target, context,
|
| + Arg(Descriptor::kReceiver, object), Arg(Descriptor::kName, name),
|
| + Arg(Descriptor::kValue, value), Arg(Descriptor::kSlot, smi_slot),
|
| + Arg(Descriptor::kVector, type_feedback_vector));
|
| __ Dispatch();
|
| }
|
|
|
|
|