Revision: 21943
Author:   [email protected]
Date:     Mon Jun 23 14:28:38 2014 UTC
Log: Revert "Create a RegisterSpec class inside of the IC that provides:"

This reverts commit r21939 due to a static initializer issue.

[email protected]

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

Modified:
 /branches/bleeding_edge/src/arm/code-stubs-arm.cc
 /branches/bleeding_edge/src/arm/ic-arm.cc
 /branches/bleeding_edge/src/arm/stub-cache-arm.cc
 /branches/bleeding_edge/src/arm64/code-stubs-arm64.cc
 /branches/bleeding_edge/src/arm64/ic-arm64.cc
 /branches/bleeding_edge/src/arm64/stub-cache-arm64.cc
 /branches/bleeding_edge/src/code-stubs-hydrogen.cc
 /branches/bleeding_edge/src/code-stubs.cc
 /branches/bleeding_edge/src/code-stubs.h
 /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc
 /branches/bleeding_edge/src/ia32/ic-ia32.cc
 /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc
 /branches/bleeding_edge/src/ic.h
 /branches/bleeding_edge/src/mips/code-stubs-mips.cc
 /branches/bleeding_edge/src/mips/ic-mips.cc
 /branches/bleeding_edge/src/mips/stub-cache-mips.cc
 /branches/bleeding_edge/src/x64/code-stubs-x64.cc
 /branches/bleeding_edge/src/x64/ic-x64.cc
 /branches/bleeding_edge/src/x64/stub-cache-x64.cc
 /branches/bleeding_edge/src/x87/code-stubs-x87.cc
 /branches/bleeding_edge/src/x87/ic-x87.cc
 /branches/bleeding_edge/src/x87/stub-cache-x87.cc

=======================================
--- /branches/bleeding_edge/src/arm/code-stubs-arm.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/arm/code-stubs-arm.cc Mon Jun 23 14:28:38 2014 UTC
@@ -86,6 +86,26 @@
   descriptor->register_params_ = registers;
   descriptor->deoptimization_handler_ = NULL;
 }
+
+
+void KeyedLoadFastElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { r1, r0 };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
+}
+
+
+void KeyedLoadDictionaryElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { r1, r0 };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
+}


 void RegExpConstructResultStub::InitializeInterfaceDescriptor(
@@ -96,6 +116,16 @@
   descriptor->deoptimization_handler_ =
       Runtime::FunctionForId(Runtime::kHiddenRegExpConstructResult)->entry;
 }
+
+
+void KeyedLoadGenericElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { r1, r0 };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      Runtime::FunctionForId(Runtime::kKeyedGetProperty)->entry;
+}


 void LoadFieldStub::InitializeInterfaceDescriptor(
=======================================
--- /branches/bleeding_edge/src/arm/ic-arm.cc   Mon Jun 23 13:42:12 2014 UTC
+++ /branches/bleeding_edge/src/arm/ic-arm.cc   Mon Jun 23 14:28:38 2014 UTC
@@ -543,17 +543,6 @@

   __ TailCallExternalReference(ref, 2, 1);
 }
-
-
-// IC register specifications
-Register LoadIC::kReceiverRegister = r0;
-Register LoadIC::kNameRegister = r2;
-const Register LoadIC::registers[] = { kReceiverRegister, kNameRegister };
-
-
-Register KeyedLoadIC::kReceiverRegister = r1;
-Register KeyedLoadIC::kNameRegister = r0;
-const Register KeyedLoadIC::registers[] = { kReceiverRegister, kNameRegister };


 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
=======================================
--- /branches/bleeding_edge/src/arm/stub-cache-arm.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/arm/stub-cache-arm.cc Mon Jun 23 14:28:38 2014 UTC
@@ -1263,18 +1263,14 @@

 Register* LoadStubCompiler::registers() {
   // receiver, name, scratch1, scratch2, scratch3, scratch4.
-  Register receiver = LoadIC::kReceiverRegister;
-  Register name = LoadIC::kNameRegister;
-  static Register registers[] = { receiver, name, r3, r1, r4, r5 };
+  static Register registers[] = { r0, r2, r3, r1, r4, r5 };
   return registers;
 }


 Register* KeyedLoadStubCompiler::registers() {
   // receiver, name, scratch1, scratch2, scratch3, scratch4.
-  Register receiver = KeyedLoadIC::kReceiverRegister;
-  Register name = KeyedLoadIC::kNameRegister;
-  static Register registers[] = { receiver, name, r2, r3, r4, r5 };
+  static Register registers[] = { r1, r0, r2, r3, r4, r5 };
   return registers;
 }

=======================================
--- /branches/bleeding_edge/src/arm64/code-stubs-arm64.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/arm64/code-stubs-arm64.cc Mon Jun 23 14:28:38 2014 UTC
@@ -99,6 +99,40 @@
   descriptor->register_params_ = registers;
   descriptor->deoptimization_handler_ = NULL;
 }
+
+
+void KeyedLoadGenericElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { x1, x0 };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      Runtime::FunctionForId(Runtime::kKeyedGetProperty)->entry;
+}
+
+
+void KeyedLoadFastElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  // x1: receiver
+  // x0: key
+  static Register registers[] = { x1, x0 };
+ descriptor->register_param_count_ = sizeof(registers) / sizeof(registers[0]);
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
+}
+
+
+void KeyedLoadDictionaryElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  // x1: receiver
+  // x0: key
+  static Register registers[] = { x1, x0 };
+ descriptor->register_param_count_ = sizeof(registers) / sizeof(registers[0]);
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
+}


 void RegExpConstructResultStub::InitializeInterfaceDescriptor(
=======================================
--- /branches/bleeding_edge/src/arm64/ic-arm64.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/arm64/ic-arm64.cc Mon Jun 23 14:28:38 2014 UTC
@@ -580,17 +580,6 @@

   __ TailCallExternalReference(ref, 2, 1);
 }
-
-
-// IC register specifications
-Register LoadIC::kReceiverRegister = x0;
-Register LoadIC::kNameRegister = x2;
-const Register LoadIC::registers[] = { kReceiverRegister, kNameRegister };
-
-
-Register KeyedLoadIC::kReceiverRegister = x1;
-Register KeyedLoadIC::kNameRegister = x0;
-const Register KeyedLoadIC::registers[] = { kReceiverRegister, kNameRegister };


 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
=======================================
--- /branches/bleeding_edge/src/arm64/stub-cache-arm64.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/arm64/stub-cache-arm64.cc Mon Jun 23 14:28:38 2014 UTC
@@ -1245,18 +1245,14 @@

 Register* LoadStubCompiler::registers() {
   // receiver, name, scratch1, scratch2, scratch3, scratch4.
-  Register receiver = LoadIC::kReceiverRegister;
-  Register name = LoadIC::kNameRegister;
-  static Register registers[] = { receiver, name, x3, x1, x4, x5 };
+  static Register registers[] = { x0, x2, x3, x1, x4, x5 };
   return registers;
 }


 Register* KeyedLoadStubCompiler::registers() {
-  // receiver, name, scratch1, scratch2, scratch3, scratch4.
-  Register receiver = KeyedLoadIC::kReceiverRegister;
-  Register name = KeyedLoadIC::kNameRegister;
-  static Register registers[] = { receiver, name, x2, x3, x4, x5 };
+  // receiver, name/key, scratch1, scratch2, scratch3, scratch4.
+  static Register registers[] = { x1, x0, x2, x3, x4, x5 };
   return registers;
 }

=======================================
--- /branches/bleeding_edge/src/code-stubs-hydrogen.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/code-stubs-hydrogen.cc Mon Jun 23 14:28:38 2014 UTC
@@ -539,14 +539,9 @@
 template <>
 HValue* CodeStubGraphBuilder<KeyedLoadFastElementStub>::BuildCodeStub() {
   HInstruction* load = BuildUncheckedMonomorphicElementAccess(
-      GetParameter(KeyedLoadIC::kReceiverIndex),
-      GetParameter(KeyedLoadIC::kNameIndex),
-      NULL,
-      casted_stub()->is_js_array(),
-      casted_stub()->elements_kind(),
-      LOAD,
-      NEVER_RETURN_HOLE,
-      STANDARD_STORE);
+      GetParameter(0), GetParameter(1), NULL,
+      casted_stub()->is_js_array(), casted_stub()->elements_kind(),
+      LOAD, NEVER_RETURN_HOLE, STANDARD_STORE);
   return load;
 }

@@ -1376,8 +1371,8 @@

 template<>
HValue* CodeStubGraphBuilder<KeyedLoadDictionaryElementStub>::BuildCodeStub() {
-  HValue* receiver = GetParameter(KeyedLoadIC::kReceiverIndex);
-  HValue* key = GetParameter(KeyedLoadIC::kNameIndex);
+  HValue* receiver = GetParameter(0);
+  HValue* key = GetParameter(1);

   Add<HCheckSmi>(key);

@@ -1509,8 +1504,8 @@


HValue* CodeStubGraphBuilder<KeyedLoadGenericElementStub>::BuildCodeStub() {
-  HValue* receiver = GetParameter(KeyedLoadIC::kReceiverIndex);
-  HValue* key = GetParameter(KeyedLoadIC::kNameIndex);
+  HValue* receiver = GetParameter(0);
+  HValue* key = GetParameter(1);

   // Split into a smi/integer case and unique string case.
HIfContinuation index_name_split_continuation(graph()->CreateBasicBlock(),
=======================================
--- /branches/bleeding_edge/src/code-stubs.cc   Mon Jun 23 13:42:12 2014 UTC
+++ /branches/bleeding_edge/src/code-stubs.cc   Mon Jun 23 14:28:38 2014 UTC
@@ -510,33 +510,6 @@
   handler_table->set(0, Smi::FromInt(handler_offset_));
   code->set_handler_table(*handler_table);
 }
-
-
-void KeyedLoadFastElementStub::InitializeInterfaceDescriptor(
-    CodeStubInterfaceDescriptor* descriptor) {
-  descriptor->register_param_count_ = KeyedLoadIC::kRegisterArgumentCount;
-  descriptor->register_params_ = KeyedLoadIC::registers;
-  descriptor->deoptimization_handler_ =
-      FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
-}
-
-
-void KeyedLoadDictionaryElementStub::InitializeInterfaceDescriptor(
-    CodeStubInterfaceDescriptor* descriptor) {
-  descriptor->register_param_count_ = KeyedLoadIC::kRegisterArgumentCount;
-  descriptor->register_params_ = KeyedLoadIC::registers;
-  descriptor->deoptimization_handler_ =
-      FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
-}
-
-
-void KeyedLoadGenericElementStub::InitializeInterfaceDescriptor(
-    CodeStubInterfaceDescriptor* descriptor) {
-  descriptor->register_param_count_ = KeyedLoadIC::kRegisterArgumentCount;
-  descriptor->register_params_ = KeyedLoadIC::registers;
-  descriptor->deoptimization_handler_ =
-      Runtime::FunctionForId(Runtime::kKeyedGetProperty)->entry;
-}


 void KeyedLoadDictionaryElementPlatformStub::Generate(
=======================================
--- /branches/bleeding_edge/src/code-stubs.h    Mon Jun 23 13:42:12 2014 UTC
+++ /branches/bleeding_edge/src/code-stubs.h    Mon Jun 23 14:28:38 2014 UTC
@@ -275,7 +275,7 @@
   // return sequence. Default value is -1, which means it is ignored.
   int hint_stack_parameter_count_;
   StubFunctionMode function_mode_;
-  const Register* register_params_;
+  Register* register_params_;
// Specifies Representations for the stub's parameter. Points to an array of
   // Representations of the same length of the numbers of parameters to the
   // stub, or if NULL (the default value), Representation of each parameter
=======================================
--- /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Mon Jun 23 14:28:38 2014 UTC
@@ -91,6 +91,26 @@
   descriptor->register_params_ = registers;
   descriptor->deoptimization_handler_ = NULL;
 }
+
+
+void KeyedLoadFastElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { edx, ecx };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
+}
+
+
+void KeyedLoadDictionaryElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { edx, ecx };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
+}


 void RegExpConstructResultStub::InitializeInterfaceDescriptor(
@@ -101,6 +121,16 @@
   descriptor->deoptimization_handler_ =
       Runtime::FunctionForId(Runtime::kHiddenRegExpConstructResult)->entry;
 }
+
+
+void KeyedLoadGenericElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { edx, ecx };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      Runtime::FunctionForId(Runtime::kKeyedGetProperty)->entry;
+}


 void LoadFieldStub::InitializeInterfaceDescriptor(
=======================================
--- /branches/bleeding_edge/src/ia32/ic-ia32.cc Mon Jun 23 13:42:12 2014 UTC
+++ /branches/bleeding_edge/src/ia32/ic-ia32.cc Mon Jun 23 14:28:38 2014 UTC
@@ -1023,17 +1023,6 @@
       ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate());
   __ TailCallExternalReference(ref, 2, 1);
 }
-
-
-// IC register specifications
-Register LoadIC::kReceiverRegister = edx;
-Register LoadIC::kNameRegister = ecx;
-const Register LoadIC::registers[] = { kReceiverRegister, kNameRegister };
-
-
-Register KeyedLoadIC::kReceiverRegister = LoadIC::kReceiverRegister;
-Register KeyedLoadIC::kNameRegister = LoadIC::kNameRegister;
-const Register KeyedLoadIC::registers[] = { kReceiverRegister, kNameRegister };


 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
=======================================
--- /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc Mon Jun 23 14:28:38 2014 UTC
@@ -1283,18 +1283,14 @@

 Register* LoadStubCompiler::registers() {
   // receiver, name, scratch1, scratch2, scratch3, scratch4.
-  Register receiver = LoadIC::kReceiverRegister;
-  Register name = LoadIC::kNameRegister;
-  static Register registers[] = { receiver, name, ebx, eax, edi, no_reg };
+  static Register registers[] = { edx, ecx, ebx, eax, edi, no_reg };
   return registers;
 }


 Register* KeyedLoadStubCompiler::registers() {
   // receiver, name, scratch1, scratch2, scratch3, scratch4.
-  Register receiver = KeyedLoadIC::kReceiverRegister;
-  Register name = KeyedLoadIC::kNameRegister;
-  static Register registers[] = { receiver, name, ebx, eax, edi, no_reg };
+  static Register registers[] = { edx, ecx, ebx, eax, edi, no_reg };
   return registers;
 }

=======================================
--- /branches/bleeding_edge/src/ic.h    Mon Jun 23 13:42:12 2014 UTC
+++ /branches/bleeding_edge/src/ic.h    Mon Jun 23 14:28:38 2014 UTC
@@ -398,15 +398,6 @@
   class ContextualModeBits: public BitField<ContextualMode, 0, 1> {};
   STATIC_ASSERT(static_cast<int>(NOT_CONTEXTUAL) == 0);

-  enum RegisterInfo {
-    kReceiverIndex,
-    kNameIndex,
-    kRegisterArgumentCount
-  };
-  static Register kReceiverRegister;
-  static Register kNameRegister;
-  static const Register registers[kRegisterArgumentCount];
-
   static ExtraICState ComputeExtraICState(ContextualMode contextual_mode) {
     return ContextualModeBits::encode(contextual_mode);
   }
@@ -506,10 +497,6 @@
       : LoadIC(depth, isolate) {
     ASSERT(target()->is_keyed_load_stub());
   }
-
-  static const Register registers[kRegisterArgumentCount];
-  static Register kReceiverRegister;
-  static Register kNameRegister;

   MUST_USE_RESULT MaybeHandle<Object> Load(Handle<Object> object,
                                            Handle<Object> key);
=======================================
--- /branches/bleeding_edge/src/mips/code-stubs-mips.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/mips/code-stubs-mips.cc Mon Jun 23 14:28:38 2014 UTC
@@ -87,6 +87,26 @@
   descriptor->register_params_ = registers;
   descriptor->deoptimization_handler_ = NULL;
 }
+
+
+void KeyedLoadFastElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { a1, a0 };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
+}
+
+
+void KeyedLoadDictionaryElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = {a1, a0 };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
+}


 void RegExpConstructResultStub::InitializeInterfaceDescriptor(
@@ -97,6 +117,16 @@
   descriptor->deoptimization_handler_ =
       Runtime::FunctionForId(Runtime::kHiddenRegExpConstructResult)->entry;
 }
+
+
+void KeyedLoadGenericElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { a1, a0 };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      Runtime::FunctionForId(Runtime::kKeyedGetProperty)->entry;
+}


 void LoadFieldStub::InitializeInterfaceDescriptor(
=======================================
--- /branches/bleeding_edge/src/mips/ic-mips.cc Mon Jun 23 13:42:12 2014 UTC
+++ /branches/bleeding_edge/src/mips/ic-mips.cc Mon Jun 23 14:28:38 2014 UTC
@@ -558,17 +558,6 @@

   __ TailCallExternalReference(ref, 2, 1);
 }
-
-
-// IC register specifications
-Register LoadIC::kReceiverRegister = a0;
-Register LoadIC::kNameRegister = a2;
-const Register LoadIC::registers[] = { kReceiverRegister, kNameRegister };
-
-
-Register KeyedLoadIC::kReceiverRegister = a1;
-Register KeyedLoadIC::kNameRegister = a0;
-const Register KeyedLoadIC::registers[] = { kReceiverRegister, kNameRegister };


 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
=======================================
--- /branches/bleeding_edge/src/mips/stub-cache-mips.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/mips/stub-cache-mips.cc Mon Jun 23 14:28:38 2014 UTC
@@ -1253,18 +1253,14 @@

 Register* LoadStubCompiler::registers() {
   // receiver, name, scratch1, scratch2, scratch3, scratch4.
-  Register receiver = LoadIC::kReceiverRegister;
-  Register name = LoadIC::kNameRegister;
-  static Register registers[] = { receiver, name, a3, a1, t0, t1 };
+  static Register registers[] = { a0, a2, a3, a1, t0, t1 };
   return registers;
 }


 Register* KeyedLoadStubCompiler::registers() {
   // receiver, name, scratch1, scratch2, scratch3, scratch4.
-  Register receiver = KeyedLoadIC::kReceiverRegister;
-  Register name = KeyedLoadIC::kNameRegister;
-  static Register registers[] = { receiver, name, a2, a3, t0, t1 };
+  static Register registers[] = { a1, a0, a2, a3, t0, t1 };
   return registers;
 }

=======================================
--- /branches/bleeding_edge/src/x64/code-stubs-x64.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/x64/code-stubs-x64.cc Mon Jun 23 14:28:38 2014 UTC
@@ -87,6 +87,26 @@
   descriptor->register_params_ = registers;
   descriptor->deoptimization_handler_ = NULL;
 }
+
+
+void KeyedLoadFastElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { rdx, rax };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
+}
+
+
+void KeyedLoadDictionaryElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { rdx, rax };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+    FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
+}


 void RegExpConstructResultStub::InitializeInterfaceDescriptor(
@@ -97,6 +117,16 @@
   descriptor->deoptimization_handler_ =
       Runtime::FunctionForId(Runtime::kHiddenRegExpConstructResult)->entry;
 }
+
+
+void KeyedLoadGenericElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { rdx, rax };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      Runtime::FunctionForId(Runtime::kKeyedGetProperty)->entry;
+}


 void LoadFieldStub::InitializeInterfaceDescriptor(
=======================================
--- /branches/bleeding_edge/src/x64/ic-x64.cc   Mon Jun 23 13:42:12 2014 UTC
+++ /branches/bleeding_edge/src/x64/ic-x64.cc   Mon Jun 23 14:28:38 2014 UTC
@@ -1050,17 +1050,6 @@
       ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate());
   __ TailCallExternalReference(ref, 2, 1);
 }
-
-
-// IC register specifications
-Register LoadIC::kReceiverRegister = rax;
-Register LoadIC::kNameRegister = rcx;
-const Register LoadIC::registers[] = { kReceiverRegister, kNameRegister };
-
-
-Register KeyedLoadIC::kReceiverRegister = rdx;
-Register KeyedLoadIC::kNameRegister = rax;
-const Register KeyedLoadIC::registers[] = { kReceiverRegister, kNameRegister };


 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
=======================================
--- /branches/bleeding_edge/src/x64/stub-cache-x64.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/x64/stub-cache-x64.cc Mon Jun 23 14:28:38 2014 UTC
@@ -1222,18 +1222,14 @@

 Register* LoadStubCompiler::registers() {
   // receiver, name, scratch1, scratch2, scratch3, scratch4.
-  Register receiver = LoadIC::kReceiverRegister;
-  Register name = LoadIC::kNameRegister;
-  static Register registers[] = { receiver, name, rdx, rbx, rdi, r8 };
+  static Register registers[] = { rax, rcx, rdx, rbx, rdi, r8 };
   return registers;
 }


 Register* KeyedLoadStubCompiler::registers() {
   // receiver, name, scratch1, scratch2, scratch3, scratch4.
-  Register receiver = KeyedLoadIC::kReceiverRegister;
-  Register name = KeyedLoadIC::kNameRegister;
-  static Register registers[] = { receiver, name, rbx, rcx, rdi, r8 };
+  static Register registers[] = { rdx, rax, rbx, rcx, rdi, r8 };
   return registers;
 }

=======================================
--- /branches/bleeding_edge/src/x87/code-stubs-x87.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/x87/code-stubs-x87.cc Mon Jun 23 14:28:38 2014 UTC
@@ -90,6 +90,26 @@
   descriptor->register_params_ = registers;
   descriptor->deoptimization_handler_ = NULL;
 }
+
+
+void KeyedLoadFastElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { edx, ecx };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
+}
+
+
+void KeyedLoadDictionaryElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { edx, ecx };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
+}


 void RegExpConstructResultStub::InitializeInterfaceDescriptor(
@@ -100,6 +120,16 @@
   descriptor->deoptimization_handler_ =
       Runtime::FunctionForId(Runtime::kHiddenRegExpConstructResult)->entry;
 }
+
+
+void KeyedLoadGenericElementStub::InitializeInterfaceDescriptor(
+    CodeStubInterfaceDescriptor* descriptor) {
+  static Register registers[] = { edx, ecx };
+  descriptor->register_param_count_ = 2;
+  descriptor->register_params_ = registers;
+  descriptor->deoptimization_handler_ =
+      Runtime::FunctionForId(Runtime::kKeyedGetProperty)->entry;
+}


 void LoadFieldStub::InitializeInterfaceDescriptor(
=======================================
--- /branches/bleeding_edge/src/x87/ic-x87.cc   Mon Jun 23 13:42:12 2014 UTC
+++ /branches/bleeding_edge/src/x87/ic-x87.cc   Mon Jun 23 14:28:38 2014 UTC
@@ -1023,17 +1023,6 @@
       ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate());
   __ TailCallExternalReference(ref, 2, 1);
 }
-
-
-// IC register specifications
-Register LoadIC::kReceiverRegister = edx;
-Register LoadIC::kNameRegister = ecx;
-const Register LoadIC::registers[] = { kReceiverRegister, kNameRegister };
-
-
-Register KeyedLoadIC::kReceiverRegister = LoadIC::kReceiverRegister;
-Register KeyedLoadIC::kNameRegister = LoadIC::kNameRegister;
-const Register KeyedLoadIC::registers[] = { kReceiverRegister, kNameRegister };


 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
=======================================
--- /branches/bleeding_edge/src/x87/stub-cache-x87.cc Mon Jun 23 13:42:12 2014 UTC +++ /branches/bleeding_edge/src/x87/stub-cache-x87.cc Mon Jun 23 14:28:38 2014 UTC
@@ -1282,18 +1282,14 @@

 Register* LoadStubCompiler::registers() {
   // receiver, name, scratch1, scratch2, scratch3, scratch4.
-  Register receiver = LoadIC::kReceiverRegister;
-  Register name = LoadIC::kNameRegister;
-  static Register registers[] = { receiver, name, ebx, eax, edi, no_reg };
+  static Register registers[] = { edx, ecx, ebx, eax, edi, no_reg };
   return registers;
 }


 Register* KeyedLoadStubCompiler::registers() {
   // receiver, name, scratch1, scratch2, scratch3, scratch4.
-  Register receiver = KeyedLoadIC::kReceiverRegister;
-  Register name = KeyedLoadIC::kNameRegister;
-  static Register registers[] = { receiver, name, ebx, eax, edi, no_reg };
+  static Register registers[] = { edx, ecx, ebx, eax, edi, no_reg };
   return registers;
 }

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