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.