Revision: 22456
Author:   [email protected]
Date:     Thu Jul 17 18:24:59 2014 UTC
Log: MIPS: StubCallInterfaceDescriptor and CallInterfaceDescriptor are unified under a base class InterfaceDescriptor.

Port r22448 (a9e0b0e)

Original commit message:
Handling of the context register had to be massaged to effect the unification. This will make it easier to call hydrogen code stubs directly from crankshaft.

BUG=
[email protected], [email protected]

Review URL: https://codereview.chromium.org/400743002
http://code.google.com/p/v8/source/detail?r=22456

Modified:
 /branches/bleeding_edge/src/mips/code-stubs-mips.cc
 /branches/bleeding_edge/src/mips/lithium-mips.cc
 /branches/bleeding_edge/src/mips/lithium-mips.h
 /branches/bleeding_edge/src/mips64/code-stubs-mips64.cc
 /branches/bleeding_edge/src/mips64/lithium-mips64.cc
 /branches/bleeding_edge/src/mips64/lithium-mips64.h

=======================================
--- /branches/bleeding_edge/src/mips/code-stubs-mips.cc Tue Jul 15 08:40:26 2014 UTC +++ /branches/bleeding_edge/src/mips/code-stubs-mips.cc Thu Jul 17 18:24:59 2014 UTC
@@ -18,7 +18,7 @@

 void FastNewClosureStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a2 };
+  Register registers[] = { cp, a2 };
   descriptor->Initialize(
       ARRAY_SIZE(registers), registers,
       Runtime::FunctionForId(Runtime::kNewClosureFromStubFailure)->entry);
@@ -27,21 +27,21 @@

 void FastNewContextStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a1 };
+  Register registers[] = { cp, a1 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers);
 }


 void ToNumberStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a0 };
+  Register registers[] = { cp, a0 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers);
 }


 void NumberToStringStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a0 };
+  Register registers[] = { cp, a0 };
   descriptor->Initialize(
       ARRAY_SIZE(registers), registers,
       Runtime::FunctionForId(Runtime::kNumberToStringRT)->entry);
@@ -50,9 +50,10 @@

 void FastCloneShallowArrayStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a3, a2, a1 };
+  Register registers[] = { cp, a3, a2, a1 };
   Representation representations[] = {
     Representation::Tagged(),
+    Representation::Tagged(),
     Representation::Smi(),
     Representation::Tagged() };
   descriptor->Initialize(
@@ -64,7 +65,7 @@

 void FastCloneShallowObjectStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a3, a2, a1, a0 };
+  Register registers[] = { cp, a3, a2, a1, a0 };
   descriptor->Initialize(
       ARRAY_SIZE(registers), registers,
       Runtime::FunctionForId(Runtime::kCreateObjectLiteral)->entry);
@@ -73,14 +74,14 @@

 void CreateAllocationSiteStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a2, a3 };
+  Register registers[] = { cp, a2, a3 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers);
 }


 void RegExpConstructResultStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a2, a1, a0 };
+  Register registers[] = { cp, a2, a1, a0 };
   descriptor->Initialize(
       ARRAY_SIZE(registers), registers,
       Runtime::FunctionForId(Runtime::kRegExpConstructResult)->entry);
@@ -89,7 +90,7 @@

 void TransitionElementsKindStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a0, a1 };
+  Register registers[] = { cp, a0, a1 };
   Address entry =
       Runtime::FunctionForId(Runtime::kTransitionElementsKind)->entry;
   descriptor->Initialize(ARRAY_SIZE(registers), registers,
@@ -99,18 +100,22 @@

 void CompareNilICStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a0 };
+  Register registers[] = { cp, a0 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers,
                          FUNCTION_ADDR(CompareNilIC_Miss));
   descriptor->SetMissHandler(
       ExternalReference(IC_Utility(IC::kCompareNilIC_Miss), isolate()));
 }
+
+
+const Register InterfaceDescriptor::ContextRegister() { return cp; }


 static void InitializeArrayConstructorDescriptor(
     CodeStubInterfaceDescriptor* descriptor,
     int constant_stack_parameter_count) {
   // register state
+  // cp -- context
   // a0 -- number of arguments
   // a1 -- function
   // a2 -- allocation site with elements kind
@@ -118,7 +123,7 @@
       Runtime::kArrayConstructor)->entry;

   if (constant_stack_parameter_count == 0) {
-    Register registers[] = { a1, a2 };
+    Register registers[] = { cp, a1, a2 };
     descriptor->Initialize(ARRAY_SIZE(registers), registers,
                            deopt_handler,
                            NULL,
@@ -126,10 +131,11 @@
                            JS_FUNCTION_STUB_MODE);
   } else {
     // stack param count needs (constructor pointer, and single argument)
-    Register registers[] = { a1, a2, a0 };
+    Register registers[] = { cp, a1, a2, a0 };
     Representation representations[] = {
         Representation::Tagged(),
         Representation::Tagged(),
+        Representation::Tagged(),
         Representation::Integer32() };
     descriptor->Initialize(ARRAY_SIZE(registers), registers,
                            a0,
@@ -146,13 +152,14 @@
     CodeStubInterfaceDescriptor* descriptor,
     int constant_stack_parameter_count) {
   // register state
+  // cp -- context
   // a0 -- number of arguments
   // a1 -- constructor function
   Address deopt_handler = Runtime::FunctionForId(
       Runtime::kInternalArrayConstructor)->entry;

   if (constant_stack_parameter_count == 0) {
-    Register registers[] = { a1 };
+    Register registers[] = { cp, a1 };
     descriptor->Initialize(ARRAY_SIZE(registers), registers,
                            deopt_handler,
                            NULL,
@@ -160,9 +167,10 @@
                            JS_FUNCTION_STUB_MODE);
   } else {
     // stack param count needs (constructor pointer, and single argument)
-    Register registers[] = { a1, a0 };
+    Register registers[] = { cp, a1, a0 };
     Representation representations[] = {
         Representation::Tagged(),
+        Representation::Tagged(),
         Representation::Integer32() };
     descriptor->Initialize(ARRAY_SIZE(registers), registers,
                            a0,
@@ -195,7 +203,7 @@

 void ToBooleanStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a0 };
+  Register registers[] = { cp, a0 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers,
                          FUNCTION_ADDR(ToBooleanIC_Miss));
   descriptor->SetMissHandler(
@@ -223,7 +231,7 @@

 void BinaryOpICStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a1, a0 };
+  Register registers[] = { cp, a1, a0 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers,
                          FUNCTION_ADDR(BinaryOpIC_Miss));
   descriptor->SetMissHandler(
@@ -233,7 +241,7 @@

 void BinaryOpWithAllocationSiteStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a2, a1, a0 };
+  Register registers[] = { cp, a2, a1, a0 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers,
                          FUNCTION_ADDR(BinaryOpIC_MissWithAllocationSite));
 }
@@ -241,7 +249,7 @@

 void StringAddStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a1, a0 };
+  Register registers[] = { cp, a1, a0 };
   descriptor->Initialize(
       ARRAY_SIZE(registers), registers,
       Runtime::FunctionForId(Runtime::kStringAdd)->entry);
@@ -252,14 +260,14 @@
   {
     CallInterfaceDescriptor* descriptor =
         isolate->call_descriptor(Isolate::ArgumentAdaptorCall);
-    Register registers[] = { a1,  // JSFunction
-                             cp,  // context
+    Register registers[] = { cp,  // context,
+                             a1,  // JSFunction
                              a0,  // actual number of arguments
                              a2,  // expected number of arguments
     };
     Representation representations[] = {
+        Representation::Tagged(),     // context
         Representation::Tagged(),     // JSFunction
-        Representation::Tagged(),     // context
         Representation::Integer32(),  // actual number of arguments
         Representation::Integer32(),  // expected number of arguments
     };
@@ -304,18 +312,18 @@
   {
     CallInterfaceDescriptor* descriptor =
         isolate->call_descriptor(Isolate::ApiFunctionCall);
-    Register registers[] = { a0,  // callee
+    Register registers[] = { cp,  // context
+                             a0,  // callee
                              t0,  // call_data
                              a2,  // holder
                              a1,  // api_function_address
-                             cp,  // context
     };
     Representation representations[] = {
+        Representation::Tagged(),    // context
         Representation::Tagged(),    // callee
         Representation::Tagged(),    // call_data
         Representation::Tagged(),    // holder
         Representation::External(),  // api_function_address
-        Representation::Tagged(),    // context
     };
descriptor->Initialize(ARRAY_SIZE(registers), registers, representations);
   }
@@ -344,21 +352,22 @@
   isolate()->counters()->code_stubs()->Increment();

   CodeStubInterfaceDescriptor* descriptor = GetInterfaceDescriptor();
-  int param_count = descriptor->register_param_count();
+  int param_count = descriptor->GetEnvironmentParameterCount();
   {
     // Call the runtime system in a fresh internal frame.
     FrameScope scope(masm, StackFrame::INTERNAL);
-    ASSERT(descriptor->register_param_count() == 0 ||
-           a0.is(descriptor->GetParameterRegister(param_count - 1)));
+    ASSERT(param_count == 0 ||
+           a0.is(descriptor->GetEnvironmentParameterRegister(
+               param_count - 1)));
     // Push arguments, adjust sp.
     __ Subu(sp, sp, Operand(param_count * kPointerSize));
     for (int i = 0; i < param_count; ++i) {
       // Store argument to stack.
-      __ sw(descriptor->GetParameterRegister(i),
+      __ sw(descriptor->GetEnvironmentParameterRegister(i),
             MemOperand(sp, (param_count-1-i) * kPointerSize));
     }
     ExternalReference miss = descriptor->miss_handler();
-    __ CallExternalReference(miss, descriptor->register_param_count());
+    __ CallExternalReference(miss, param_count);
   }

   __ Ret();
=======================================
--- /branches/bleeding_edge/src/mips/lithium-mips.cc Fri Jul 11 01:50:12 2014 UTC +++ /branches/bleeding_edge/src/mips/lithium-mips.cc Thu Jul 17 18:24:59 2014 UTC
@@ -1086,7 +1086,7 @@

 LInstruction* LChunkBuilder::DoCallWithDescriptor(
     HCallWithDescriptor* instr) {
-  const CallInterfaceDescriptor* descriptor = instr->descriptor();
+  const InterfaceDescriptor* descriptor = instr->descriptor();

   LOperand* target = UseRegisterOrConstantAtStart(instr->target());
   ZoneList<LOperand*> ops(instr->OperandCount(), zone());
@@ -2357,7 +2357,7 @@
     CodeStubInterfaceDescriptor* descriptor =
         info()->code_stub()->GetInterfaceDescriptor();
     int index = static_cast<int>(instr->index());
-    Register reg = descriptor->GetParameterRegister(index);
+    Register reg = descriptor->GetEnvironmentParameterRegister(index);
     return DefineFixed(result, reg);
   }
 }
=======================================
--- /branches/bleeding_edge/src/mips/lithium-mips.h Fri Jun 20 08:40:11 2014 UTC +++ /branches/bleeding_edge/src/mips/lithium-mips.h Thu Jul 17 18:24:59 2014 UTC
@@ -1811,18 +1811,18 @@

 class LCallWithDescriptor V8_FINAL : public LTemplateResultInstruction<1> {
  public:
-  LCallWithDescriptor(const CallInterfaceDescriptor* descriptor,
+  LCallWithDescriptor(const InterfaceDescriptor* descriptor,
                       const ZoneList<LOperand*>& operands,
                       Zone* zone)
     : descriptor_(descriptor),
-      inputs_(descriptor->environment_length() + 1, zone) {
-    ASSERT(descriptor->environment_length() + 1 == operands.length());
+      inputs_(descriptor->GetRegisterParameterCount() + 1, zone) {
+ ASSERT(descriptor->GetRegisterParameterCount() + 1 == operands.length());
     inputs_.AddAll(operands, zone);
   }

   LOperand* target() const { return inputs_[0]; }

-  const CallInterfaceDescriptor* descriptor() { return descriptor_; }
+  const InterfaceDescriptor* descriptor() { return descriptor_; }

  private:
   DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor, "call-with-descriptor")
@@ -1832,7 +1832,7 @@

   int arity() const { return hydrogen()->argument_count() - 1; }

-  const CallInterfaceDescriptor* descriptor_;
+  const InterfaceDescriptor* descriptor_;
   ZoneList<LOperand*> inputs_;

   // Iterator support.
=======================================
--- /branches/bleeding_edge/src/mips64/code-stubs-mips64.cc Tue Jul 15 08:40:26 2014 UTC +++ /branches/bleeding_edge/src/mips64/code-stubs-mips64.cc Thu Jul 17 18:24:59 2014 UTC
@@ -18,7 +18,7 @@

 void FastNewClosureStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a2 };
+  Register registers[] = { cp, a2 };
   descriptor->Initialize(
       ARRAY_SIZE(registers), registers,
       Runtime::FunctionForId(Runtime::kNewClosureFromStubFailure)->entry);
@@ -27,21 +27,21 @@

 void FastNewContextStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a1 };
+  Register registers[] = { cp, a1 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers);
 }


 void ToNumberStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a0 };
+  Register registers[] = { cp, a0 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers);
 }


 void NumberToStringStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a0 };
+  Register registers[] = { cp, a0 };
   descriptor->Initialize(
       ARRAY_SIZE(registers), registers,
       Runtime::FunctionForId(Runtime::kNumberToStringRT)->entry);
@@ -50,9 +50,10 @@

 void FastCloneShallowArrayStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a3, a2, a1 };
+  Register registers[] = { cp, a3, a2, a1 };
   Representation representations[] = {
     Representation::Tagged(),
+    Representation::Tagged(),
     Representation::Smi(),
     Representation::Tagged() };
   descriptor->Initialize(
@@ -64,7 +65,7 @@

 void FastCloneShallowObjectStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a3, a2, a1, a0 };
+  Register registers[] = { cp, a3, a2, a1, a0 };
   descriptor->Initialize(
       ARRAY_SIZE(registers), registers,
       Runtime::FunctionForId(Runtime::kCreateObjectLiteral)->entry);
@@ -73,14 +74,14 @@

 void CreateAllocationSiteStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a2, a3 };
+  Register registers[] = { cp, a2, a3 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers);
 }


 void RegExpConstructResultStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a2, a1, a0 };
+  Register registers[] = { cp, a2, a1, a0 };
   descriptor->Initialize(
       ARRAY_SIZE(registers), registers,
       Runtime::FunctionForId(Runtime::kRegExpConstructResult)->entry);
@@ -89,7 +90,7 @@

 void TransitionElementsKindStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a0, a1 };
+  Register registers[] = { cp, a0, a1 };
   Address entry =
       Runtime::FunctionForId(Runtime::kTransitionElementsKind)->entry;
   descriptor->Initialize(ARRAY_SIZE(registers), registers,
@@ -99,18 +100,22 @@

 void CompareNilICStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a0 };
+  Register registers[] = { cp, a0 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers,
                          FUNCTION_ADDR(CompareNilIC_Miss));
   descriptor->SetMissHandler(
       ExternalReference(IC_Utility(IC::kCompareNilIC_Miss), isolate()));
 }
+
+
+const Register InterfaceDescriptor::ContextRegister() { return cp; }


 static void InitializeArrayConstructorDescriptor(
     CodeStubInterfaceDescriptor* descriptor,
     int constant_stack_parameter_count) {
   // register state
+  // cp -- context
   // a0 -- number of arguments
   // a1 -- function
   // a2 -- allocation site with elements kind
@@ -118,7 +123,7 @@
       Runtime::kArrayConstructor)->entry;

   if (constant_stack_parameter_count == 0) {
-    Register registers[] = { a1, a2 };
+    Register registers[] = { cp, a1, a2 };
     descriptor->Initialize(ARRAY_SIZE(registers), registers,
                            deopt_handler,
                            NULL,
@@ -126,10 +131,11 @@
                            JS_FUNCTION_STUB_MODE);
   } else {
     // stack param count needs (constructor pointer, and single argument)
-    Register registers[] = { a1, a2, a0 };
+    Register registers[] = { cp, a1, a2, a0 };
     Representation representations[] = {
         Representation::Tagged(),
         Representation::Tagged(),
+        Representation::Tagged(),
         Representation::Integer32() };
     descriptor->Initialize(ARRAY_SIZE(registers), registers,
                            a0,
@@ -146,13 +152,14 @@
     CodeStubInterfaceDescriptor* descriptor,
     int constant_stack_parameter_count) {
   // register state
+  // cp -- context
   // a0 -- number of arguments
   // a1 -- constructor function
   Address deopt_handler = Runtime::FunctionForId(
       Runtime::kInternalArrayConstructor)->entry;

   if (constant_stack_parameter_count == 0) {
-    Register registers[] = { a1 };
+    Register registers[] = { cp, a1 };
     descriptor->Initialize(ARRAY_SIZE(registers), registers,
                            deopt_handler,
                            NULL,
@@ -160,9 +167,10 @@
                            JS_FUNCTION_STUB_MODE);
   } else {
     // stack param count needs (constructor pointer, and single argument)
-    Register registers[] = { a1, a0 };
+    Register registers[] = { cp, a1, a0 };
     Representation representations[] = {
         Representation::Tagged(),
+        Representation::Tagged(),
         Representation::Integer32() };
     descriptor->Initialize(ARRAY_SIZE(registers), registers,
                            a0,
@@ -195,7 +203,7 @@

 void ToBooleanStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a0 };
+  Register registers[] = { cp, a0 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers,
                          FUNCTION_ADDR(ToBooleanIC_Miss));
   descriptor->SetMissHandler(
@@ -223,7 +231,7 @@

 void BinaryOpICStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a1, a0 };
+  Register registers[] = { cp, a1, a0 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers,
                          FUNCTION_ADDR(BinaryOpIC_Miss));
   descriptor->SetMissHandler(
@@ -233,7 +241,7 @@

 void BinaryOpWithAllocationSiteStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a2, a1, a0 };
+  Register registers[] = { cp, a2, a1, a0 };
   descriptor->Initialize(ARRAY_SIZE(registers), registers,
                          FUNCTION_ADDR(BinaryOpIC_MissWithAllocationSite));
 }
@@ -241,7 +249,7 @@

 void StringAddStub::InitializeInterfaceDescriptor(
     CodeStubInterfaceDescriptor* descriptor) {
-  Register registers[] = { a1, a0 };
+  Register registers[] = { cp, a1, a0 };
   descriptor->Initialize(
       ARRAY_SIZE(registers), registers,
       Runtime::FunctionForId(Runtime::kStringAdd)->entry);
@@ -252,14 +260,14 @@
   {
     CallInterfaceDescriptor* descriptor =
         isolate->call_descriptor(Isolate::ArgumentAdaptorCall);
-    Register registers[] = { a1,  // JSFunction
-                             cp,  // context
+    Register registers[] = { cp,  // context
+                             a1,  // JSFunction
                              a0,  // actual number of arguments
                              a2,  // expected number of arguments
     };
     Representation representations[] = {
+        Representation::Tagged(),     // context
         Representation::Tagged(),     // JSFunction
-        Representation::Tagged(),     // context
         Representation::Integer32(),  // actual number of arguments
         Representation::Integer32(),  // expected number of arguments
     };
@@ -304,18 +312,18 @@
   {
     CallInterfaceDescriptor* descriptor =
         isolate->call_descriptor(Isolate::ApiFunctionCall);
-    Register registers[] = { a0,  // callee
+    Register registers[] = { cp,  // context
+                             a0,  // callee
                              a4,  // call_data
                              a2,  // holder
                              a1,  // api_function_address
-                             cp,  // context
     };
     Representation representations[] = {
+        Representation::Tagged(),    // context
         Representation::Tagged(),    // callee
         Representation::Tagged(),    // call_data
         Representation::Tagged(),    // holder
         Representation::External(),  // api_function_address
-        Representation::Tagged(),    // context
     };
descriptor->Initialize(ARRAY_SIZE(registers), registers, representations);
   }
@@ -344,21 +352,21 @@
   isolate()->counters()->code_stubs()->Increment();

   CodeStubInterfaceDescriptor* descriptor = GetInterfaceDescriptor();
-  int param_count = descriptor->register_param_count();
+  int param_count = descriptor->GetEnvironmentParameterCount();
   {
     // Call the runtime system in a fresh internal frame.
     FrameScope scope(masm, StackFrame::INTERNAL);
-    ASSERT(descriptor->register_param_count() == 0 ||
-           a0.is(descriptor->GetParameterRegister(param_count - 1)));
+    ASSERT((param_count == 0) ||
+ a0.is(descriptor->GetEnvironmentParameterRegister(param_count - 1)));
     // Push arguments, adjust sp.
     __ Dsubu(sp, sp, Operand(param_count * kPointerSize));
     for (int i = 0; i < param_count; ++i) {
       // Store argument to stack.
-      __ sd(descriptor->GetParameterRegister(i),
+      __ sd(descriptor->GetEnvironmentParameterRegister(i),
             MemOperand(sp, (param_count-1-i) * kPointerSize));
     }
     ExternalReference miss = descriptor->miss_handler();
-    __ CallExternalReference(miss, descriptor->register_param_count());
+    __ CallExternalReference(miss, param_count);
   }

   __ Ret();
=======================================
--- /branches/bleeding_edge/src/mips64/lithium-mips64.cc Fri Jul 11 01:50:12 2014 UTC +++ /branches/bleeding_edge/src/mips64/lithium-mips64.cc Thu Jul 17 18:24:59 2014 UTC
@@ -1086,7 +1086,7 @@

 LInstruction* LChunkBuilder::DoCallWithDescriptor(
     HCallWithDescriptor* instr) {
-  const CallInterfaceDescriptor* descriptor = instr->descriptor();
+  const InterfaceDescriptor* descriptor = instr->descriptor();

   LOperand* target = UseRegisterOrConstantAtStart(instr->target());
   ZoneList<LOperand*> ops(instr->OperandCount(), zone());
@@ -2356,7 +2356,7 @@
     CodeStubInterfaceDescriptor* descriptor =
         info()->code_stub()->GetInterfaceDescriptor();
     int index = static_cast<int>(instr->index());
-    Register reg = descriptor->GetParameterRegister(index);
+    Register reg = descriptor->GetEnvironmentParameterRegister(index);
     return DefineFixed(result, reg);
   }
 }
=======================================
--- /branches/bleeding_edge/src/mips64/lithium-mips64.h Wed Jul 9 11:08:26 2014 UTC +++ /branches/bleeding_edge/src/mips64/lithium-mips64.h Thu Jul 17 18:24:59 2014 UTC
@@ -1810,18 +1810,18 @@

 class LCallWithDescriptor V8_FINAL : public LTemplateResultInstruction<1> {
  public:
-  LCallWithDescriptor(const CallInterfaceDescriptor* descriptor,
+  LCallWithDescriptor(const InterfaceDescriptor* descriptor,
                       const ZoneList<LOperand*>& operands,
                       Zone* zone)
     : descriptor_(descriptor),
-      inputs_(descriptor->environment_length() + 1, zone) {
-    ASSERT(descriptor->environment_length() + 1 == operands.length());
+      inputs_(descriptor->GetRegisterParameterCount() + 1, zone) {
+ ASSERT(descriptor->GetRegisterParameterCount() + 1 == operands.length());
     inputs_.AddAll(operands, zone);
   }

   LOperand* target() const { return inputs_[0]; }

-  const CallInterfaceDescriptor* descriptor() { return descriptor_; }
+  const InterfaceDescriptor* descriptor() { return descriptor_; }

  private:
   DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor, "call-with-descriptor")
@@ -1831,7 +1831,7 @@

   int arity() const { return hydrogen()->argument_count() - 1; }

-  const CallInterfaceDescriptor* descriptor_;
+  const InterfaceDescriptor* descriptor_;
   ZoneList<LOperand*> inputs_;

   // Iterator support.

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to