Revision: 14943
Author: [email protected]
Date: Tue Jun 4 13:17:22 2013
Log: MIPS: Turn off allocation site info for crankshafted array
constructor calls.
Port r14934 (dbddd7e)
Original commit message:
Once we crankshaft a method, we should turn off allocation site info for
constructed arrays. Additionally, the semantics for doing this were
awkward because the constructed array code stubs get an
AllocationSiteMode as a minor key, but it's used as a permission to
determine the final mode locally based on ElementsKind. I refactored
this to a simpler boolean for override or local control.
BUG=
Review URL: https://codereview.chromium.org/16226020
Patch from Balazs Kilvady <[email protected]>.
http://code.google.com/p/v8/source/detail?r=14943
Modified:
/branches/bleeding_edge/src/mips/code-stubs-mips.cc
/branches/bleeding_edge/src/mips/lithium-codegen-mips.cc
=======================================
--- /branches/bleeding_edge/src/mips/code-stubs-mips.cc Tue Jun 4 13:14:37
2013
+++ /branches/bleeding_edge/src/mips/code-stubs-mips.cc Tue Jun 4 13:17:22
2013
@@ -7659,6 +7659,10 @@
ElementsKind kind = GetFastElementsKindFromSequenceIndex(i);
T stub(kind);
stub.GetCode(isolate)->set_is_pregenerated(true);
+ if (AllocationSiteInfo::GetMode(kind) != DONT_TRACK_ALLOCATION_SITE) {
+ T stub1(kind, true);
+ stub1.GetCode(isolate)->set_is_pregenerated(true);
+ }
}
}
=======================================
--- /branches/bleeding_edge/src/mips/lithium-codegen-mips.cc Tue Jun 4
01:28:33 2013
+++ /branches/bleeding_edge/src/mips/lithium-codegen-mips.cc Tue Jun 4
13:17:22 2013
@@ -3920,14 +3920,17 @@
__ li(a0, Operand(instr->arity()));
__ li(a2, Operand(instr->hydrogen()->property_cell()));
ElementsKind kind = instr->hydrogen()->elements_kind();
+ bool disable_allocation_sites =
+ (AllocationSiteInfo::GetMode(kind) == TRACK_ALLOCATION_SITE);
+
if (instr->arity() == 0) {
- ArrayNoArgumentConstructorStub stub(kind);
+ ArrayNoArgumentConstructorStub stub(kind, disable_allocation_sites);
CallCode(stub.GetCode(isolate()), RelocInfo::CONSTRUCT_CALL, instr);
} else if (instr->arity() == 1) {
- ArraySingleArgumentConstructorStub stub(kind);
+ ArraySingleArgumentConstructorStub stub(kind,
disable_allocation_sites);
CallCode(stub.GetCode(isolate()), RelocInfo::CONSTRUCT_CALL, instr);
} else {
- ArrayNArgumentsConstructorStub stub(kind);
+ ArrayNArgumentsConstructorStub stub(kind, disable_allocation_sites);
CallCode(stub.GetCode(isolate()), RelocInfo::CONSTRUCT_CALL, instr);
}
}
--
--
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.