Revision: 24139
Author:   [email protected]
Date:     Tue Sep 23 09:20:36 2014 UTC
Log: Fix method dispatch in Keyed/StoreIC, and JumpIfNotUniqueName usage

[email protected]

Review URL: https://codereview.chromium.org/592113002
https://code.google.com/p/v8/source/detail?r=24139

Modified:
 /branches/bleeding_edge/src/arm/code-stubs-arm.cc
 /branches/bleeding_edge/src/arm/macro-assembler-arm.cc
 /branches/bleeding_edge/src/arm/macro-assembler-arm.h
 /branches/bleeding_edge/src/arm64/code-stubs-arm64.cc
 /branches/bleeding_edge/src/arm64/macro-assembler-arm64.cc
 /branches/bleeding_edge/src/arm64/macro-assembler-arm64.h
 /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc
 /branches/bleeding_edge/src/ia32/macro-assembler-ia32.cc
 /branches/bleeding_edge/src/ia32/macro-assembler-ia32.h
 /branches/bleeding_edge/src/ic/arm/ic-compiler-arm.cc
 /branches/bleeding_edge/src/ic/arm64/ic-compiler-arm64.cc
 /branches/bleeding_edge/src/ic/ia32/ic-compiler-ia32.cc
 /branches/bleeding_edge/src/ic/ic.cc
 /branches/bleeding_edge/src/ic/ic.h
 /branches/bleeding_edge/src/ic/mips/ic-compiler-mips.cc
 /branches/bleeding_edge/src/ic/mips64/ic-compiler-mips64.cc
 /branches/bleeding_edge/src/ic/x64/ic-compiler-x64.cc
 /branches/bleeding_edge/src/ic/x87/ic-compiler-x87.cc
 /branches/bleeding_edge/src/mips/code-stubs-mips.cc
 /branches/bleeding_edge/src/mips/macro-assembler-mips.cc
 /branches/bleeding_edge/src/mips/macro-assembler-mips.h
 /branches/bleeding_edge/src/mips64/code-stubs-mips64.cc
 /branches/bleeding_edge/src/mips64/macro-assembler-mips64.cc
 /branches/bleeding_edge/src/mips64/macro-assembler-mips64.h
 /branches/bleeding_edge/src/x64/code-stubs-x64.cc
 /branches/bleeding_edge/src/x64/macro-assembler-x64.cc
 /branches/bleeding_edge/src/x64/macro-assembler-x64.h
 /branches/bleeding_edge/src/x87/code-stubs-x87.cc
 /branches/bleeding_edge/src/x87/macro-assembler-x87.cc
 /branches/bleeding_edge/src/x87/macro-assembler-x87.h

=======================================
--- /branches/bleeding_edge/src/arm/code-stubs-arm.cc Thu Sep 18 13:28:32 2014 UTC +++ /branches/bleeding_edge/src/arm/code-stubs-arm.cc Tue Sep 23 09:20:36 2014 UTC
@@ -3465,8 +3465,8 @@
   __ ldrb(tmp1, FieldMemOperand(tmp1, Map::kInstanceTypeOffset));
   __ ldrb(tmp2, FieldMemOperand(tmp2, Map::kInstanceTypeOffset));

-  __ JumpIfNotUniqueName(tmp1, &miss);
-  __ JumpIfNotUniqueName(tmp2, &miss);
+  __ JumpIfNotUniqueNameInstanceType(tmp1, &miss);
+  __ JumpIfNotUniqueNameInstanceType(tmp2, &miss);

   // Unique names are compared by identity.
   __ cmp(left, right);
@@ -3698,7 +3698,7 @@
__ ldr(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset));
     __ ldrb(entity_name,
             FieldMemOperand(entity_name, Map::kInstanceTypeOffset));
-    __ JumpIfNotUniqueName(entity_name, miss);
+    __ JumpIfNotUniqueNameInstanceType(entity_name, miss);
     __ bind(&good);

     // Restore the properties.
@@ -3868,7 +3868,7 @@
__ ldr(entry_key, FieldMemOperand(entry_key, HeapObject::kMapOffset));
       __ ldrb(entry_key,
               FieldMemOperand(entry_key, Map::kInstanceTypeOffset));
-      __ JumpIfNotUniqueName(entry_key, &maybe_in_dictionary);
+      __ JumpIfNotUniqueNameInstanceType(entry_key, &maybe_in_dictionary);
     }
   }

=======================================
--- /branches/bleeding_edge/src/arm/macro-assembler-arm.cc Wed Sep 10 12:38:12 2014 UTC +++ /branches/bleeding_edge/src/arm/macro-assembler-arm.cc Tue Sep 23 09:20:36 2014 UTC
@@ -3199,8 +3199,8 @@
 }


-void MacroAssembler::JumpIfNotUniqueName(Register reg,
-                                         Label* not_unique_name) {
+void MacroAssembler::JumpIfNotUniqueNameInstanceType(Register reg,
+ Label* not_unique_name) {
   STATIC_ASSERT(kInternalizedTag == 0 && kStringTag == 0);
   Label succeed;
   tst(reg, Operand(kIsNotStringMask | kIsNotInternalizedMask));
=======================================
--- /branches/bleeding_edge/src/arm/macro-assembler-arm.h Wed Sep 10 12:38:12 2014 UTC +++ /branches/bleeding_edge/src/arm/macro-assembler-arm.h Tue Sep 23 09:20:36 2014 UTC
@@ -1340,7 +1340,7 @@
void JumpIfInstanceTypeIsNotSequentialOneByte(Register type, Register scratch,
                                                 Label* failure);

-  void JumpIfNotUniqueName(Register reg, Label* not_unique_name);
+ void JumpIfNotUniqueNameInstanceType(Register reg, Label* not_unique_name);

   void EmitSeqStringSetCharCheck(Register string,
                                  Register index,
=======================================
--- /branches/bleeding_edge/src/arm64/code-stubs-arm64.cc Thu Sep 18 13:28:32 2014 UTC +++ /branches/bleeding_edge/src/arm64/code-stubs-arm64.cc Tue Sep 23 09:20:36 2014 UTC
@@ -3370,8 +3370,8 @@

   // To avoid a miss, each instance type should be either SYMBOL_TYPE or it
   // should have kInternalizedTag set.
-  __ JumpIfNotUniqueName(lhs_instance_type, &miss);
-  __ JumpIfNotUniqueName(rhs_instance_type, &miss);
+  __ JumpIfNotUniqueNameInstanceType(lhs_instance_type, &miss);
+  __ JumpIfNotUniqueNameInstanceType(rhs_instance_type, &miss);

   // Unique names are compared by identity.
   STATIC_ASSERT(EQUAL == 0);
@@ -4488,7 +4488,7 @@
__ Ldr(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset));
     __ Ldrb(entity_name,
             FieldMemOperand(entity_name, Map::kInstanceTypeOffset));
-    __ JumpIfNotUniqueName(entity_name, miss);
+    __ JumpIfNotUniqueNameInstanceType(entity_name, miss);
     __ Bind(&good);
   }

@@ -4575,7 +4575,7 @@
       // Check if the entry name is not a unique name.
__ Ldr(entry_key, FieldMemOperand(entry_key, HeapObject::kMapOffset)); __ Ldrb(entry_key, FieldMemOperand(entry_key, Map::kInstanceTypeOffset));
-      __ JumpIfNotUniqueName(entry_key, &maybe_in_dictionary);
+      __ JumpIfNotUniqueNameInstanceType(entry_key, &maybe_in_dictionary);
     }
   }

=======================================
--- /branches/bleeding_edge/src/arm64/macro-assembler-arm64.cc Tue Sep 16 10:42:09 2014 UTC +++ /branches/bleeding_edge/src/arm64/macro-assembler-arm64.cc Tue Sep 23 09:20:36 2014 UTC
@@ -2768,8 +2768,8 @@
 }


-void MacroAssembler::JumpIfNotUniqueName(Register type,
-                                         Label* not_unique_name) {
+void MacroAssembler::JumpIfNotUniqueNameInstanceType(Register type,
+ Label* not_unique_name) {
   STATIC_ASSERT((kInternalizedTag == 0) && (kStringTag == 0));
   // if ((type is string && type is internalized) || type == SYMBOL_TYPE) {
   //   continue
=======================================
--- /branches/bleeding_edge/src/arm64/macro-assembler-arm64.h Tue Sep 16 10:42:09 2014 UTC +++ /branches/bleeding_edge/src/arm64/macro-assembler-arm64.h Tue Sep 23 09:20:36 2014 UTC
@@ -1074,7 +1074,7 @@
Register first_object_instance_type, Register second_object_instance_type,
       Register scratch1, Register scratch2, Label* failure);

-  void JumpIfNotUniqueName(Register type, Label* not_unique_name);
+ void JumpIfNotUniqueNameInstanceType(Register type, Label* not_unique_name);

   // ---- Calling / Jumping helpers ----

=======================================
--- /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Thu Sep 18 13:28:32 2014 UTC +++ /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Tue Sep 23 09:20:36 2014 UTC
@@ -3502,8 +3502,8 @@
   __ movzx_b(tmp1, FieldOperand(tmp1, Map::kInstanceTypeOffset));
   __ movzx_b(tmp2, FieldOperand(tmp2, Map::kInstanceTypeOffset));

-  __ JumpIfNotUniqueName(tmp1, &miss, Label::kNear);
-  __ JumpIfNotUniqueName(tmp2, &miss, Label::kNear);
+  __ JumpIfNotUniqueNameInstanceType(tmp1, &miss, Label::kNear);
+  __ JumpIfNotUniqueNameInstanceType(tmp2, &miss, Label::kNear);

   // Unique names are compared by identity.
   Label done;
@@ -3728,8 +3728,8 @@

     // Check if the entry name is not a unique name.
     __ mov(entity_name, FieldOperand(entity_name, HeapObject::kMapOffset));
- __ JumpIfNotUniqueName(FieldOperand(entity_name, Map::kInstanceTypeOffset),
-                           miss);
+    __ JumpIfNotUniqueNameInstanceType(
+        FieldOperand(entity_name, Map::kInstanceTypeOffset), miss);
     __ bind(&good);
   }

@@ -3863,8 +3863,9 @@

       // Check if the entry name is not a unique name.
       __ mov(scratch, FieldOperand(scratch, HeapObject::kMapOffset));
- __ JumpIfNotUniqueName(FieldOperand(scratch, Map::kInstanceTypeOffset),
-                             &maybe_in_dictionary);
+      __ JumpIfNotUniqueNameInstanceType(
+          FieldOperand(scratch, Map::kInstanceTypeOffset),
+          &maybe_in_dictionary);
     }
   }

=======================================
--- /branches/bleeding_edge/src/ia32/macro-assembler-ia32.cc Wed Sep 17 09:51:17 2014 UTC +++ /branches/bleeding_edge/src/ia32/macro-assembler-ia32.cc Tue Sep 23 09:20:36 2014 UTC
@@ -2917,9 +2917,9 @@
 }


-void MacroAssembler::JumpIfNotUniqueName(Operand operand,
-                                         Label* not_unique_name,
-                                         Label::Distance distance) {
+void MacroAssembler::JumpIfNotUniqueNameInstanceType(Operand operand,
+ Label* not_unique_name, + Label::Distance distance) {
   STATIC_ASSERT(kInternalizedTag == 0 && kStringTag == 0);
   Label succeed;
   test(operand, Immediate(kIsNotStringMask | kIsNotInternalizedMask));
=======================================
--- /branches/bleeding_edge/src/ia32/macro-assembler-ia32.h Wed Sep 17 09:51:17 2014 UTC +++ /branches/bleeding_edge/src/ia32/macro-assembler-ia32.h Tue Sep 23 09:20:36 2014 UTC
@@ -915,13 +915,13 @@
       Label* on_not_flat_one_byte_strings);

   // Checks if the given register or operand is a unique name
-  void JumpIfNotUniqueName(Register reg, Label* not_unique_name,
-                           Label::Distance distance = Label::kFar) {
-    JumpIfNotUniqueName(Operand(reg), not_unique_name, distance);
+ void JumpIfNotUniqueNameInstanceType(Register reg, Label* not_unique_name, + Label::Distance distance = Label::kFar) { + JumpIfNotUniqueNameInstanceType(Operand(reg), not_unique_name, distance);
   }

-  void JumpIfNotUniqueName(Operand operand, Label* not_unique_name,
-                           Label::Distance distance = Label::kFar);
+ void JumpIfNotUniqueNameInstanceType(Operand operand, Label* not_unique_name, + Label::Distance distance = Label::kFar);

   void EmitSeqStringSetCharCheck(Register string,
                                  Register index,
=======================================
--- /branches/bleeding_edge/src/ic/arm/ic-compiler-arm.cc Tue Sep 16 12:51:33 2014 UTC +++ /branches/bleeding_edge/src/ic/arm/ic-compiler-arm.cc Tue Sep 23 09:20:36 2014 UTC
@@ -44,7 +44,11 @@
     // In case we are compiling an IC for dictionary loads and stores, just
     // check whether the name is unique.
     if (name.is_identical_to(isolate()->factory()->normal_ic_symbol())) {
-      __ JumpIfNotUniqueName(this->name(), &miss);
+      Register tmp = scratch1();
+      __ JumpIfSmi(this->name(), &miss);
+      __ ldr(tmp, FieldMemOperand(this->name(), HeapObject::kMapOffset));
+      __ ldrb(tmp, FieldMemOperand(tmp, Map::kInstanceTypeOffset));
+      __ JumpIfNotUniqueNameInstanceType(tmp, &miss);
     } else {
       __ cmp(this->name(), Operand(name));
       __ b(ne, &miss);
=======================================
--- /branches/bleeding_edge/src/ic/arm64/ic-compiler-arm64.cc Tue Sep 16 12:51:33 2014 UTC +++ /branches/bleeding_edge/src/ic/arm64/ic-compiler-arm64.cc Tue Sep 23 09:20:36 2014 UTC
@@ -45,7 +45,11 @@
     // In case we are compiling an IC for dictionary loads and stores, just
     // check whether the name is unique.
     if (name.is_identical_to(isolate()->factory()->normal_ic_symbol())) {
-      __ JumpIfNotUniqueName(this->name(), &miss);
+      Register tmp = scratch1();
+      __ JumpIfSmi(this->name(), &miss);
+      __ Ldr(tmp, FieldMemOperand(this->name(), HeapObject::kMapOffset));
+      __ Ldrb(tmp, FieldMemOperand(tmp, Map::kInstanceTypeOffset));
+      __ JumpIfNotUniqueNameInstanceType(tmp, &miss);
     } else {
       __ CompareAndBranch(this->name(), Operand(name), ne, &miss);
     }
=======================================
--- /branches/bleeding_edge/src/ic/ia32/ic-compiler-ia32.cc Tue Sep 16 12:51:33 2014 UTC +++ /branches/bleeding_edge/src/ic/ia32/ic-compiler-ia32.cc Tue Sep 23 09:20:36 2014 UTC
@@ -48,7 +48,11 @@
     // In case we are compiling an IC for dictionary loads and stores, just
     // check whether the name is unique.
     if (name.is_identical_to(isolate()->factory()->normal_ic_symbol())) {
-      __ JumpIfNotUniqueName(this->name(), &miss);
+      Register tmp = scratch1();
+      __ JumpIfSmi(this->name(), &miss);
+      __ mov(tmp, FieldOperand(this->name(), HeapObject::kMapOffset));
+      __ movzx_b(tmp, FieldOperand(tmp, Map::kInstanceTypeOffset));
+      __ JumpIfNotUniqueNameInstanceType(tmp, &miss);
     } else {
       __ cmp(this->name(), Immediate(name));
       __ j(not_equal, &miss);
=======================================
--- /branches/bleeding_edge/src/ic/ic.cc        Mon Sep 22 13:23:27 2014 UTC
+++ /branches/bleeding_edge/src/ic/ic.cc        Tue Sep 23 09:20:36 2014 UTC
@@ -1346,13 +1346,42 @@


 Handle<Code> StoreIC::megamorphic_stub() {
-  return PropertyICCompiler::ComputeStore(isolate(), MEGAMORPHIC,
-                                          extra_ic_state());
+  if (kind() == Code::STORE_IC) {
+    return PropertyICCompiler::ComputeStore(isolate(), MEGAMORPHIC,
+                                            extra_ic_state());
+  } else {
+    DCHECK(kind() == Code::KEYED_STORE_IC);
+    if (strict_mode() == STRICT) {
+      return isolate()->builtins()->KeyedStoreIC_Generic_Strict();
+    } else {
+      return isolate()->builtins()->KeyedStoreIC_Generic();
+    }
+  }
 }


 Handle<Code> StoreIC::generic_stub() const {
- return PropertyICCompiler::ComputeStore(isolate(), GENERIC, extra_ic_state());
+  if (kind() == Code::STORE_IC) {
+    return PropertyICCompiler::ComputeStore(isolate(), GENERIC,
+                                            extra_ic_state());
+  } else {
+    DCHECK(kind() == Code::KEYED_STORE_IC);
+    if (strict_mode() == STRICT) {
+      return isolate()->builtins()->KeyedStoreIC_Generic_Strict();
+    } else {
+      return isolate()->builtins()->KeyedStoreIC_Generic();
+    }
+  }
+}
+
+
+Handle<Code> StoreIC::slow_stub() const {
+  if (kind() == Code::STORE_IC) {
+    return isolate()->builtins()->StoreIC_Slow();
+  } else {
+    DCHECK(kind() == Code::KEYED_STORE_IC);
+    return isolate()->builtins()->KeyedStoreIC_Slow();
+  }
 }


=======================================
--- /branches/bleeding_edge/src/ic/ic.h Mon Sep 22 13:23:27 2014 UTC
+++ /branches/bleeding_edge/src/ic/ic.h Tue Sep 23 09:20:36 2014 UTC
@@ -371,7 +371,7 @@
     }
   }

-  virtual Handle<Code> megamorphic_stub();
+  virtual Handle<Code> megamorphic_stub() OVERRIDE;

   // Update the inline cache and the global stub cache based on the
   // lookup result.
@@ -489,14 +489,12 @@
                       JSReceiver::StoreFromKeyed store_mode);

  protected:
-  virtual Handle<Code> megamorphic_stub();
+  virtual Handle<Code> megamorphic_stub() OVERRIDE;

   // Stub accessors.
-  virtual Handle<Code> generic_stub() const;
+  Handle<Code> generic_stub() const;

-  virtual Handle<Code> slow_stub() const {
-    return isolate()->builtins()->StoreIC_Slow();
-  }
+  Handle<Code> slow_stub() const;

   virtual Handle<Code> pre_monomorphic_stub() const {
     return pre_monomorphic_stub(isolate(), strict_mode());
@@ -577,16 +575,6 @@
       return isolate->builtins()->KeyedStoreIC_PreMonomorphic();
     }
   }
-  virtual Handle<Code> slow_stub() const {
-    return isolate()->builtins()->KeyedStoreIC_Slow();
-  }
-  virtual Handle<Code> megamorphic_stub() {
-    if (strict_mode() == STRICT) {
-      return isolate()->builtins()->KeyedStoreIC_Generic_Strict();
-    } else {
-      return isolate()->builtins()->KeyedStoreIC_Generic();
-    }
-  }

   Handle<Code> StoreElementStub(Handle<JSObject> receiver,
                                 KeyedAccessStoreMode store_mode);
@@ -595,14 +583,6 @@
   inline void set_target(Code* code);

   // Stub accessors.
-  virtual Handle<Code> generic_stub() const {
-    if (strict_mode() == STRICT) {
-      return isolate()->builtins()->KeyedStoreIC_Generic_Strict();
-    } else {
-      return isolate()->builtins()->KeyedStoreIC_Generic();
-    }
-  }
-
   Handle<Code> sloppy_arguments_stub() {
     return isolate()->builtins()->KeyedStoreIC_SloppyArguments();
   }
=======================================
--- /branches/bleeding_edge/src/ic/mips/ic-compiler-mips.cc Tue Sep 16 12:51:33 2014 UTC +++ /branches/bleeding_edge/src/ic/mips/ic-compiler-mips.cc Tue Sep 23 09:20:36 2014 UTC
@@ -27,7 +27,11 @@
     // In case we are compiling an IC for dictionary loads and stores, just
     // check whether the name is unique.
     if (name.is_identical_to(isolate()->factory()->normal_ic_symbol())) {
-      __ JumpIfNotUniqueName(this->name(), &miss);
+      Register tmp = scratch1();
+      __ JumpIfSmi(this->name(), &miss);
+      __ lw(tmp, FieldMemOperand(this->name(), HeapObject::kMapOffset));
+      __ lbu(tmp, FieldMemOperand(tmp, Map::kInstanceTypeOffset));
+      __ JumpIfNotUniqueNameInstanceType(tmp, &miss);
     } else {
       __ Branch(&miss, ne, this->name(), Operand(name));
     }
=======================================
--- /branches/bleeding_edge/src/ic/mips64/ic-compiler-mips64.cc Tue Sep 16 17:59:41 2014 UTC +++ /branches/bleeding_edge/src/ic/mips64/ic-compiler-mips64.cc Tue Sep 23 09:20:36 2014 UTC
@@ -27,7 +27,11 @@
     // In case we are compiling an IC for dictionary loads and stores, just
     // check whether the name is unique.
     if (name.is_identical_to(isolate()->factory()->normal_ic_symbol())) {
-      __ JumpIfNotUniqueName(this->name(), &miss);
+      Register tmp = scratch1();
+      __ JumpIfSmi(this->name(), &miss);
+      __ ld(tmp, FieldMemOperand(this->name(), HeapObject::kMapOffset));
+      __ lbu(tmp, FieldMemOperand(tmp, Map::kInstanceTypeOffset));
+      __ JumpIfNotUniqueNameInstanceType(tmp, &miss);
     } else {
       __ Branch(&miss, ne, this->name(), Operand(name));
     }
=======================================
--- /branches/bleeding_edge/src/ic/x64/ic-compiler-x64.cc Tue Sep 16 12:51:33 2014 UTC +++ /branches/bleeding_edge/src/ic/x64/ic-compiler-x64.cc Tue Sep 23 09:20:36 2014 UTC
@@ -82,7 +82,11 @@
     // In case we are compiling an IC for dictionary loads and stores, just
     // check whether the name is unique.
     if (name.is_identical_to(isolate()->factory()->normal_ic_symbol())) {
-      __ JumpIfNotUniqueName(this->name(), &miss);
+      Register tmp = scratch1();
+      __ JumpIfSmi(this->name(), &miss);
+      __ movp(tmp, FieldOperand(this->name(), HeapObject::kMapOffset));
+      __ movzxbp(tmp, FieldOperand(tmp, Map::kInstanceTypeOffset));
+      __ JumpIfNotUniqueNameInstanceType(tmp, &miss);
     } else {
       __ Cmp(this->name(), name);
       __ j(not_equal, &miss);
=======================================
--- /branches/bleeding_edge/src/ic/x87/ic-compiler-x87.cc Wed Sep 17 05:21:36 2014 UTC +++ /branches/bleeding_edge/src/ic/x87/ic-compiler-x87.cc Tue Sep 23 09:20:36 2014 UTC
@@ -48,7 +48,11 @@
     // In case we are compiling an IC for dictionary loads and stores, just
     // check whether the name is unique.
     if (name.is_identical_to(isolate()->factory()->normal_ic_symbol())) {
-      __ JumpIfNotUniqueName(this->name(), &miss);
+      Register tmp = scratch1();
+      __ JumpIfSmi(this->name(), &miss);
+      __ mov(tmp, FieldOperand(this->name(), HeapObject::kMapOffset));
+      __ movzx_b(tmp, FieldOperand(tmp, Map::kInstanceTypeOffset));
+      __ JumpIfNotUniqueNameInstanceType(tmp, &miss);
     } else {
       __ cmp(this->name(), Immediate(name));
       __ j(not_equal, &miss);
=======================================
--- /branches/bleeding_edge/src/mips/code-stubs-mips.cc Thu Sep 18 13:28:32 2014 UTC +++ /branches/bleeding_edge/src/mips/code-stubs-mips.cc Tue Sep 23 09:20:36 2014 UTC
@@ -3644,8 +3644,8 @@
   __ lbu(tmp1, FieldMemOperand(tmp1, Map::kInstanceTypeOffset));
   __ lbu(tmp2, FieldMemOperand(tmp2, Map::kInstanceTypeOffset));

-  __ JumpIfNotUniqueName(tmp1, &miss);
-  __ JumpIfNotUniqueName(tmp2, &miss);
+  __ JumpIfNotUniqueNameInstanceType(tmp1, &miss);
+  __ JumpIfNotUniqueNameInstanceType(tmp2, &miss);

   // Use a0 as result
   __ mov(v0, a0);
@@ -3899,7 +3899,7 @@
__ lw(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset));
     __ lbu(entity_name,
            FieldMemOperand(entity_name, Map::kInstanceTypeOffset));
-    __ JumpIfNotUniqueName(entity_name, miss);
+    __ JumpIfNotUniqueNameInstanceType(entity_name, miss);
     __ bind(&good);

     // Restore the properties.
@@ -4076,7 +4076,7 @@
       __ lw(entry_key, FieldMemOperand(entry_key, HeapObject::kMapOffset));
       __ lbu(entry_key,
              FieldMemOperand(entry_key, Map::kInstanceTypeOffset));
-      __ JumpIfNotUniqueName(entry_key, &maybe_in_dictionary);
+      __ JumpIfNotUniqueNameInstanceType(entry_key, &maybe_in_dictionary);
     }
   }

=======================================
--- /branches/bleeding_edge/src/mips/macro-assembler-mips.cc Wed Sep 10 19:18:28 2014 UTC +++ /branches/bleeding_edge/src/mips/macro-assembler-mips.cc Tue Sep 23 09:20:36 2014 UTC
@@ -3582,8 +3582,8 @@
 }


-void MacroAssembler::JumpIfNotUniqueName(Register reg,
-                                         Label* not_unique_name) {
+void MacroAssembler::JumpIfNotUniqueNameInstanceType(Register reg,
+ Label* not_unique_name) {
   STATIC_ASSERT(kInternalizedTag == 0 && kStringTag == 0);
   Label succeed;
   And(at, reg, Operand(kIsNotStringMask | kIsNotInternalizedMask));
=======================================
--- /branches/bleeding_edge/src/mips/macro-assembler-mips.h Wed Sep 10 19:18:28 2014 UTC +++ /branches/bleeding_edge/src/mips/macro-assembler-mips.h Tue Sep 23 09:20:36 2014 UTC
@@ -1483,7 +1483,7 @@
void JumpIfInstanceTypeIsNotSequentialOneByte(Register type, Register scratch,
                                                 Label* failure);

-  void JumpIfNotUniqueName(Register reg, Label* not_unique_name);
+ void JumpIfNotUniqueNameInstanceType(Register reg, Label* not_unique_name);

   void EmitSeqStringSetCharCheck(Register string,
                                  Register index,
=======================================
--- /branches/bleeding_edge/src/mips64/code-stubs-mips64.cc Thu Sep 18 15:38:52 2014 UTC +++ /branches/bleeding_edge/src/mips64/code-stubs-mips64.cc Tue Sep 23 09:20:36 2014 UTC
@@ -3681,8 +3681,8 @@
   __ lbu(tmp1, FieldMemOperand(tmp1, Map::kInstanceTypeOffset));
   __ lbu(tmp2, FieldMemOperand(tmp2, Map::kInstanceTypeOffset));

-  __ JumpIfNotUniqueName(tmp1, &miss);
-  __ JumpIfNotUniqueName(tmp2, &miss);
+  __ JumpIfNotUniqueNameInstanceType(tmp1, &miss);
+  __ JumpIfNotUniqueNameInstanceType(tmp2, &miss);

   // Use a0 as result
   __ mov(v0, a0);
@@ -3937,7 +3937,7 @@
__ ld(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset));
     __ lbu(entity_name,
            FieldMemOperand(entity_name, Map::kInstanceTypeOffset));
-    __ JumpIfNotUniqueName(entity_name, miss);
+    __ JumpIfNotUniqueNameInstanceType(entity_name, miss);
     __ bind(&good);

     // Restore the properties.
@@ -4114,7 +4114,7 @@
       __ ld(entry_key, FieldMemOperand(entry_key, HeapObject::kMapOffset));
       __ lbu(entry_key,
              FieldMemOperand(entry_key, Map::kInstanceTypeOffset));
-      __ JumpIfNotUniqueName(entry_key, &maybe_in_dictionary);
+      __ JumpIfNotUniqueNameInstanceType(entry_key, &maybe_in_dictionary);
     }
   }

=======================================
--- /branches/bleeding_edge/src/mips64/macro-assembler-mips64.cc Wed Sep 10 19:18:28 2014 UTC +++ /branches/bleeding_edge/src/mips64/macro-assembler-mips64.cc Tue Sep 23 09:20:36 2014 UTC
@@ -3492,8 +3492,8 @@
 }


-void MacroAssembler::JumpIfNotUniqueName(Register reg,
-                                         Label* not_unique_name) {
+void MacroAssembler::JumpIfNotUniqueNameInstanceType(Register reg,
+ Label* not_unique_name) {
   STATIC_ASSERT(kInternalizedTag == 0 && kStringTag == 0);
   Label succeed;
   And(at, reg, Operand(kIsNotStringMask | kIsNotInternalizedMask));
=======================================
--- /branches/bleeding_edge/src/mips64/macro-assembler-mips64.h Wed Sep 10 19:18:28 2014 UTC +++ /branches/bleeding_edge/src/mips64/macro-assembler-mips64.h Tue Sep 23 09:20:36 2014 UTC
@@ -1554,7 +1554,7 @@
void JumpIfInstanceTypeIsNotSequentialOneByte(Register type, Register scratch,
                                                 Label* failure);

-  void JumpIfNotUniqueName(Register reg, Label* not_unique_name);
+ void JumpIfNotUniqueNameInstanceType(Register reg, Label* not_unique_name);

   void EmitSeqStringSetCharCheck(Register string,
                                  Register index,
=======================================
--- /branches/bleeding_edge/src/x64/code-stubs-x64.cc Thu Sep 18 13:28:32 2014 UTC +++ /branches/bleeding_edge/src/x64/code-stubs-x64.cc Tue Sep 23 09:20:36 2014 UTC
@@ -3454,8 +3454,8 @@
   __ movzxbp(tmp1, FieldOperand(tmp1, Map::kInstanceTypeOffset));
   __ movzxbp(tmp2, FieldOperand(tmp2, Map::kInstanceTypeOffset));

-  __ JumpIfNotUniqueName(tmp1, &miss, Label::kNear);
-  __ JumpIfNotUniqueName(tmp2, &miss, Label::kNear);
+  __ JumpIfNotUniqueNameInstanceType(tmp1, &miss, Label::kNear);
+  __ JumpIfNotUniqueNameInstanceType(tmp2, &miss, Label::kNear);

   // Unique names are compared by identity.
   Label done;
@@ -3674,8 +3674,8 @@

     // Check if the entry name is not a unique name.
__ movp(entity_name, FieldOperand(entity_name, HeapObject::kMapOffset)); - __ JumpIfNotUniqueName(FieldOperand(entity_name, Map::kInstanceTypeOffset),
-                           miss);
+    __ JumpIfNotUniqueNameInstanceType(
+        FieldOperand(entity_name, Map::kInstanceTypeOffset), miss);
     __ bind(&good);
   }

@@ -3804,8 +3804,9 @@

       // Check if the entry name is not a unique name.
       __ movp(scratch, FieldOperand(scratch, HeapObject::kMapOffset));
- __ JumpIfNotUniqueName(FieldOperand(scratch, Map::kInstanceTypeOffset),
-                             &maybe_in_dictionary);
+      __ JumpIfNotUniqueNameInstanceType(
+          FieldOperand(scratch, Map::kInstanceTypeOffset),
+          &maybe_in_dictionary);
     }
   }

=======================================
--- /branches/bleeding_edge/src/x64/macro-assembler-x64.cc Wed Sep 17 09:51:17 2014 UTC +++ /branches/bleeding_edge/src/x64/macro-assembler-x64.cc Tue Sep 23 09:20:36 2014 UTC
@@ -2701,16 +2701,16 @@
 }


-void MacroAssembler::JumpIfNotUniqueName(Operand operand,
-                                         Label* not_unique_name,
-                                         Label::Distance distance) {
+void MacroAssembler::JumpIfNotUniqueNameInstanceType(Operand operand,
+ Label* not_unique_name, + Label::Distance distance) { JumpIfNotUniqueNameHelper<Operand>(this, operand, not_unique_name, distance);
 }


-void MacroAssembler::JumpIfNotUniqueName(Register reg,
-                                         Label* not_unique_name,
-                                         Label::Distance distance) {
+void MacroAssembler::JumpIfNotUniqueNameInstanceType(Register reg,
+ Label* not_unique_name, + Label::Distance distance) { JumpIfNotUniqueNameHelper<Register>(this, reg, not_unique_name, distance);
 }

=======================================
--- /branches/bleeding_edge/src/x64/macro-assembler-x64.h Wed Sep 17 09:51:17 2014 UTC +++ /branches/bleeding_edge/src/x64/macro-assembler-x64.h Tue Sep 23 09:20:36 2014 UTC
@@ -797,10 +797,10 @@
                                  uint32_t encoding_mask);

   // Checks if the given register or operand is a unique name
-  void JumpIfNotUniqueName(Register reg, Label* not_unique_name,
-                           Label::Distance distance = Label::kFar);
-  void JumpIfNotUniqueName(Operand operand, Label* not_unique_name,
-                           Label::Distance distance = Label::kFar);
+ void JumpIfNotUniqueNameInstanceType(Register reg, Label* not_unique_name, + Label::Distance distance = Label::kFar); + void JumpIfNotUniqueNameInstanceType(Operand operand, Label* not_unique_name, + Label::Distance distance = Label::kFar);

// ---------------------------------------------------------------------------
   // Macro instructions.
=======================================
--- /branches/bleeding_edge/src/x87/code-stubs-x87.cc Sat Sep 20 05:08:58 2014 UTC +++ /branches/bleeding_edge/src/x87/code-stubs-x87.cc Tue Sep 23 09:20:36 2014 UTC
@@ -3167,8 +3167,8 @@
   __ movzx_b(tmp1, FieldOperand(tmp1, Map::kInstanceTypeOffset));
   __ movzx_b(tmp2, FieldOperand(tmp2, Map::kInstanceTypeOffset));

-  __ JumpIfNotUniqueName(tmp1, &miss, Label::kNear);
-  __ JumpIfNotUniqueName(tmp2, &miss, Label::kNear);
+  __ JumpIfNotUniqueNameInstanceType(tmp1, &miss, Label::kNear);
+  __ JumpIfNotUniqueNameInstanceType(tmp2, &miss, Label::kNear);

   // Unique names are compared by identity.
   Label done;
@@ -3393,8 +3393,8 @@

     // Check if the entry name is not a unique name.
     __ mov(entity_name, FieldOperand(entity_name, HeapObject::kMapOffset));
- __ JumpIfNotUniqueName(FieldOperand(entity_name, Map::kInstanceTypeOffset),
-                           miss);
+    __ JumpIfNotUniqueNameInstanceType(
+        FieldOperand(entity_name, Map::kInstanceTypeOffset), miss);
     __ bind(&good);
   }

@@ -3528,8 +3528,9 @@

       // Check if the entry name is not a unique name.
       __ mov(scratch, FieldOperand(scratch, HeapObject::kMapOffset));
- __ JumpIfNotUniqueName(FieldOperand(scratch, Map::kInstanceTypeOffset),
-                             &maybe_in_dictionary);
+      __ JumpIfNotUniqueNameInstanceType(
+          FieldOperand(scratch, Map::kInstanceTypeOffset),
+          &maybe_in_dictionary);
     }
   }

=======================================
--- /branches/bleeding_edge/src/x87/macro-assembler-x87.cc Sat Sep 20 05:08:58 2014 UTC +++ /branches/bleeding_edge/src/x87/macro-assembler-x87.cc Tue Sep 23 09:20:36 2014 UTC
@@ -2869,9 +2869,9 @@
 }


-void MacroAssembler::JumpIfNotUniqueName(Operand operand,
-                                         Label* not_unique_name,
-                                         Label::Distance distance) {
+void MacroAssembler::JumpIfNotUniqueNameInstanceType(Operand operand,
+ Label* not_unique_name, + Label::Distance distance) {
   STATIC_ASSERT(kInternalizedTag == 0 && kStringTag == 0);
   Label succeed;
   test(operand, Immediate(kIsNotStringMask | kIsNotInternalizedMask));
=======================================
--- /branches/bleeding_edge/src/x87/macro-assembler-x87.h Sat Sep 20 05:08:58 2014 UTC +++ /branches/bleeding_edge/src/x87/macro-assembler-x87.h Tue Sep 23 09:20:36 2014 UTC
@@ -882,13 +882,13 @@
       Label* on_not_flat_one_byte_strings);

   // Checks if the given register or operand is a unique name
-  void JumpIfNotUniqueName(Register reg, Label* not_unique_name,
-                           Label::Distance distance = Label::kFar) {
-    JumpIfNotUniqueName(Operand(reg), not_unique_name, distance);
+ void JumpIfNotUniqueNameInstanceType(Register reg, Label* not_unique_name, + Label::Distance distance = Label::kFar) { + JumpIfNotUniqueNameInstanceType(Operand(reg), not_unique_name, distance);
   }

-  void JumpIfNotUniqueName(Operand operand, Label* not_unique_name,
-                           Label::Distance distance = Label::kFar);
+ void JumpIfNotUniqueNameInstanceType(Operand operand, Label* not_unique_name, + Label::Distance distance = Label::kFar);

   void EmitSeqStringSetCharCheck(Register string,
                                  Register index,

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