Revision: 18676
Author:   [email protected]
Date:     Mon Jan 20 07:05:23 2014 UTC
Log:      De-virtualize GenerateNameCheck.

Currently there are two kinds of "vtables" used in the load/store stub
compilers: kind() and C++'s own vtables. This is a bit confusing, and
this is a step towards simplifying things.

[email protected]

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

Modified:
 /branches/bleeding_edge/src/arm/stub-cache-arm.cc
 /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc
 /branches/bleeding_edge/src/mips/stub-cache-mips.cc
 /branches/bleeding_edge/src/stub-cache.h
 /branches/bleeding_edge/src/x64/stub-cache-x64.cc

=======================================
--- /branches/bleeding_edge/src/arm/stub-cache-arm.cc Fri Jan 17 16:08:54 2014 UTC +++ /branches/bleeding_edge/src/arm/stub-cache-arm.cc Mon Jan 20 07:05:23 2014 UTC
@@ -2291,22 +2291,6 @@
   static Register registers[] = { r2, r1, r0, r3, r4, r5 };
   return registers;
 }
-
-
-void KeyedLoadStubCompiler::GenerateNameCheck(Handle<Name> name,
-                                              Register name_reg,
-                                              Label* miss) {
-  __ cmp(name_reg, Operand(name));
-  __ b(ne, miss);
-}
-
-
-void KeyedStoreStubCompiler::GenerateNameCheck(Handle<Name> name,
-                                               Register name_reg,
-                                               Label* miss) {
-  __ cmp(name_reg, Operand(name));
-  __ b(ne, miss);
-}


 #undef __
@@ -2389,8 +2373,10 @@
     IcCheckType check) {
   Label miss;

-  if (check == PROPERTY) {
-    GenerateNameCheck(name, this->name(), &miss);
+  if (check == PROPERTY &&
+      (kind() == Code::KEYED_LOAD_IC || kind() == Code::KEYED_STORE_IC)) {
+    __ cmp(this->name(), Operand(name));
+    __ b(ne, &miss);
   }

   Label number_case;
=======================================
--- /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc Fri Jan 17 16:08:54 2014 UTC +++ /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc Mon Jan 20 07:05:23 2014 UTC
@@ -2394,22 +2394,6 @@
   static Register registers[] = { edx, ecx, eax, ebx, edi, no_reg };
   return registers;
 }
-
-
-void KeyedLoadStubCompiler::GenerateNameCheck(Handle<Name> name,
-                                              Register name_reg,
-                                              Label* miss) {
-  __ cmp(name_reg, Immediate(name));
-  __ j(not_equal, miss);
-}
-
-
-void KeyedStoreStubCompiler::GenerateNameCheck(Handle<Name> name,
-                                               Register name_reg,
-                                               Label* miss) {
-  __ cmp(name_reg, Immediate(name));
-  __ j(not_equal, miss);
-}


 #undef __
@@ -2492,8 +2476,10 @@
     IcCheckType check) {
   Label miss;

-  if (check == PROPERTY) {
-    GenerateNameCheck(name, this->name(), &miss);
+  if (check == PROPERTY &&
+      (kind() == Code::KEYED_LOAD_IC || kind() == Code::KEYED_STORE_IC)) {
+    __ cmp(this->name(), Immediate(name));
+    __ j(not_equal, &miss);
   }

   Label number_case;
=======================================
--- /branches/bleeding_edge/src/mips/stub-cache-mips.cc Fri Jan 17 16:08:54 2014 UTC +++ /branches/bleeding_edge/src/mips/stub-cache-mips.cc Mon Jan 20 07:05:23 2014 UTC
@@ -2275,20 +2275,6 @@
   static Register registers[] = { a2, a1, a0, a3, t0, t1 };
   return registers;
 }
-
-
-void KeyedLoadStubCompiler::GenerateNameCheck(Handle<Name> name,
-                                              Register name_reg,
-                                              Label* miss) {
-  __ Branch(miss, ne, name_reg, Operand(name));
-}
-
-
-void KeyedStoreStubCompiler::GenerateNameCheck(Handle<Name> name,
-                                               Register name_reg,
-                                               Label* miss) {
-  __ Branch(miss, ne, name_reg, Operand(name));
-}


 #undef __
@@ -2370,8 +2356,9 @@
     IcCheckType check) {
   Label miss;

-  if (check == PROPERTY) {
-    GenerateNameCheck(name, this->name(), &miss);
+  if (check == PROPERTY &&
+      (kind() == Code::KEYED_LOAD_IC || kind() == Code::KEYED_STORE_IC)) {
+    __ Branch(&miss, ne, this->name(), Operand(name));
   }

   Label number_case;
=======================================
--- /branches/bleeding_edge/src/stub-cache.h    Fri Jan 17 16:08:54 2014 UTC
+++ /branches/bleeding_edge/src/stub-cache.h    Mon Jan 20 07:05:23 2014 UTC
@@ -553,10 +553,6 @@
                                     Handle<Name> name,
                                     Code::StubType type,
                                     IcCheckType check);
-
-  virtual void GenerateNameCheck(Handle<Name> name,
-                                 Register name_reg,
-                                 Label* miss) { }

   static Builtins::Name MissBuiltin(Code::Kind kind) {
     switch (kind) {
@@ -747,13 +743,8 @@

   static void GenerateLoadDictionaryElement(MacroAssembler* masm);

- protected:
+ private:
   static Register* registers();
-
- private:
-  virtual void GenerateNameCheck(Handle<Name> name,
-                                 Register name_reg,
-                                 Label* miss);
   friend class BaseLoadStoreStubCompiler;
 };

@@ -879,21 +870,17 @@

   static void GenerateStoreDictionaryElement(MacroAssembler* masm);

- protected:
+ private:
   static Register* registers();

   KeyedAccessStoreMode store_mode() {
     return KeyedStoreIC::GetKeyedAccessStoreMode(extra_state());
   }

- private:
   Register transition_map() {
     return registers()[3];
   }

-  virtual void GenerateNameCheck(Handle<Name> name,
-                                 Register name_reg,
-                                 Label* miss);
   friend class BaseLoadStoreStubCompiler;
 };

=======================================
--- /branches/bleeding_edge/src/x64/stub-cache-x64.cc Mon Jan 20 04:59:40 2014 UTC +++ /branches/bleeding_edge/src/x64/stub-cache-x64.cc Mon Jan 20 07:05:23 2014 UTC
@@ -2320,22 +2320,6 @@
   static Register registers[] = { rdx, rcx, rax, rbx, rdi, r8 };
   return registers;
 }
-
-
-void KeyedLoadStubCompiler::GenerateNameCheck(Handle<Name> name,
-                                              Register name_reg,
-                                              Label* miss) {
-  __ Cmp(name_reg, name);
-  __ j(not_equal, miss);
-}
-
-
-void KeyedStoreStubCompiler::GenerateNameCheck(Handle<Name> name,
-                                               Register name_reg,
-                                               Label* miss) {
-  __ Cmp(name_reg, name);
-  __ j(not_equal, miss);
-}


 #undef __
@@ -2422,8 +2406,10 @@
     IcCheckType check) {
   Label miss;

-  if (check == PROPERTY) {
-    GenerateNameCheck(name, this->name(), &miss);
+  if (check == PROPERTY &&
+      (kind() == Code::KEYED_LOAD_IC || kind() == Code::KEYED_STORE_IC)) {
+    __ Cmp(this->name(), name);
+    __ j(not_equal, &miss);
   }

   Label number_case;

--
--
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/groups/opt_out.

Reply via email to