Revision: 22840
Author:   [email protected]
Date:     Tue Aug  5 03:24:18 2014 UTC
Log: X87: Cleanup in stub-cache.cc; remove unused ArrayLength store ICs.

port r22805

original commit message:

  Cleanup in stub-cache.cc; remove unused ArrayLength store ICs.

BUG=
[email protected]

Review URL: https://codereview.chromium.org/438163003

Patch from Chunyang Dai <[email protected]>.
http://code.google.com/p/v8/source/detail?r=22840

Modified:
 /branches/bleeding_edge/src/x87/stub-cache-x87.cc

=======================================
--- /branches/bleeding_edge/src/x87/stub-cache-x87.cc Tue Aug 5 03:20:18 2014 UTC +++ /branches/bleeding_edge/src/x87/stub-cache-x87.cc Tue Aug 5 03:24:18 2014 UTC
@@ -368,16 +368,6 @@
   CallApiFunctionStub stub(isolate, is_store, call_data_undefined, argc);
   __ TailCallStub(&stub);
 }
-
-
-void NamedStoreHandlerCompiler::GenerateRestoreName(MacroAssembler* masm,
-                                                    Label* label,
-                                                    Handle<Name> name) {
-  if (!label->is_unused()) {
-    __ bind(label);
-    __ mov(this->name(), Immediate(name));
-  }
-}


 // Generate code to check that a global property cell is empty. Create
@@ -399,15 +389,33 @@
   }
   __ j(not_equal, miss);
 }
+
+
+void PropertyAccessCompiler::GenerateTailCall(MacroAssembler* masm,
+                                              Handle<Code> code) {
+  __ jmp(code, RelocInfo::CODE_TARGET);
+}
+
+
+#undef __
+#define __ ACCESS_MASM(masm())
+
+
+void NamedStoreHandlerCompiler::GenerateRestoreName(Label* label,
+                                                    Handle<Name> name) {
+  if (!label->is_unused()) {
+    __ bind(label);
+    __ mov(this->name(), Immediate(name));
+  }
+}


// Receiver_reg is preserved on jumps to miss_label, but may be destroyed if
 // store is successful.
 void NamedStoreHandlerCompiler::GenerateStoreTransition(
-    MacroAssembler* masm, LookupResult* lookup, Handle<Map> transition,
-    Handle<Name> name, Register receiver_reg, Register storage_reg,
- Register value_reg, Register scratch1, Register scratch2, Register unused,
-    Label* miss_label, Label* slow) {
+    Handle<Map> transition, Handle<Name> name, Register receiver_reg,
+    Register storage_reg, Register value_reg, Register scratch1,
+    Register scratch2, Register unused, Label* miss_label, Label* slow) {
   int descriptor = transition->LastAdded();
   DescriptorArray* descriptors = transition->instance_descriptors();
   PropertyDetails details = descriptors->GetDetails(descriptor);
@@ -415,7 +423,7 @@
   DCHECK(!representation.IsNone());

   if (details.type() == CONSTANT) {
- Handle<Object> constant(descriptors->GetValue(descriptor), masm->isolate());
+    Handle<Object> constant(descriptors->GetValue(descriptor), isolate());
     __ CmpObject(value_reg, constant);
     __ j(not_equal, miss_label);
   } else if (representation.IsSmi()) {
@@ -450,8 +458,8 @@
     __ jmp(&do_store);

     __ bind(&heap_number);
-    __ CheckMap(value_reg, masm->isolate()->factory()->heap_number_map(),
-                miss_label, DONT_DO_SMI_CHECK);
+ __ CheckMap(value_reg, isolate()->factory()->heap_number_map(), miss_label,
+                DONT_DO_SMI_CHECK);
     __ fld_d(FieldOperand(value_reg, HeapNumber::kValueOffset));

     __ bind(&do_store);
@@ -473,9 +481,8 @@
     __ push(scratch1);
     __ TailCallExternalReference(
         ExternalReference(IC_Utility(IC::kSharedStoreIC_ExtendStorage),
-                          masm->isolate()),
-        3,
-        1);
+                          isolate()),
+        3, 1);
     return;
   }

@@ -563,12 +570,12 @@
 // Both name_reg and receiver_reg are preserved on jumps to miss_label,
 // but may be destroyed if store is successful.
 void NamedStoreHandlerCompiler::GenerateStoreField(
-    MacroAssembler* masm, Handle<JSObject> object, LookupResult* lookup,
-    Register receiver_reg, Register name_reg, Register value_reg,
-    Register scratch1, Register scratch2, Label* miss_label) {
-  // Stub never generated for non-global objects that require access
-  // checks.
-  DCHECK(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
+    Handle<JSObject> object, LookupResult* lookup, Register receiver_reg,
+ Register name_reg, Register value_reg, Register scratch1, Register scratch2,
+    Label* miss_label) {
+  // Stub never generated for objects that require access checks.
+  DCHECK(!object->IsAccessCheckNeeded());
+  DCHECK(!object->IsJSGlobalProxy());

   FieldIndex index = lookup->GetFieldIndex();

@@ -612,8 +619,8 @@
     __ SmiTag(value_reg);
     __ jmp(&do_store);
     __ bind(&heap_number);
-    __ CheckMap(value_reg, masm->isolate()->factory()->heap_number_map(),
-                miss_label, DONT_DO_SMI_CHECK);
+ __ CheckMap(value_reg, isolate()->factory()->heap_number_map(), miss_label,
+                DONT_DO_SMI_CHECK);
     __ fld_d(FieldOperand(value_reg, HeapNumber::kValueOffset));
     __ bind(&do_store);
     __ fstp_d(FieldOperand(scratch1, HeapNumber::kValueOffset));
@@ -665,16 +672,6 @@
   DCHECK(value_reg.is(eax));
   __ ret(0);
 }
-
-
-void PropertyAccessCompiler::GenerateTailCall(MacroAssembler* masm,
-                                              Handle<Code> code) {
-  __ jmp(code, RelocInfo::CODE_TARGET);
-}
-
-
-#undef __
-#define __ ACCESS_MASM(masm())


 Register PropertyHandlerCompiler::CheckPrototypes(
@@ -802,7 +799,7 @@
   if (!miss->is_unused()) {
     Label success;
     __ jmp(&success);
-    GenerateRestoreName(masm(), miss, name);
+    GenerateRestoreName(miss, name);
     TailCallBuiltin(masm(), MissBuiltin(kind()));
     __ bind(&success);
   }
@@ -1113,20 +1110,6 @@
   // Return the generated code.
   return GetCode(kind(), Code::FAST, name);
 }
-
-
-void NamedStoreHandlerCompiler::GenerateStoreArrayLength() {
-  // Prepare tail call to StoreIC_ArrayLength.
-  __ pop(scratch1());  // remove the return address
-  __ push(receiver());
-  __ push(value());
-  __ push(scratch1());  // restore return address
-
-  ExternalReference ref =
-      ExternalReference(IC_Utility(IC::kStoreIC_ArrayLength),
-                        masm()->isolate());
-  __ TailCallExternalReference(ref, 2, 1);
-}


 Handle<Code> PropertyICCompiler::CompileKeyedStorePolymorphic(

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