Revision: 24479
Author: [email protected]
Date: Thu Oct 9 07:05:20 2014 UTC
Log: X87: Updates to maintain flag --vector-ics
port r24548.
original commit message:
Updates to maintain flag --vector-ics
BUG=
[email protected]
Review URL: https://codereview.chromium.org/642603004
Patch from Chunyang Dai <[email protected]>.
https://code.google.com/p/v8/source/detail?r=24479
Modified:
/branches/bleeding_edge/src/x87/builtins-x87.cc
/branches/bleeding_edge/src/x87/debug-x87.cc
/branches/bleeding_edge/src/x87/full-codegen-x87.cc
=======================================
--- /branches/bleeding_edge/src/x87/builtins-x87.cc Sat Sep 20 05:08:58
2014 UTC
+++ /branches/bleeding_edge/src/x87/builtins-x87.cc Thu Oct 9 07:05:20
2014 UTC
@@ -1002,17 +1002,21 @@
__ bind(&loop);
__ mov(receiver, Operand(ebp, kArgumentsOffset)); // load arguments
- // Use inline caching to speed up access to arguments.
if (FLAG_vector_ics) {
- __ mov(VectorLoadICDescriptor::SlotRegister(),
- Immediate(Smi::FromInt(0)));
+ // TODO(mvstanton): Vector-based ics need additional infrastructure
to
+ // be embedded here. For now, just call the runtime.
+ __ push(receiver);
+ __ push(key);
+ __ CallRuntime(Runtime::kGetProperty, 2);
+ } else {
+ // Use inline caching to speed up access to arguments.
+ Handle<Code> ic = CodeFactory::KeyedLoadIC(masm->isolate()).code();
+ __ call(ic, RelocInfo::CODE_TARGET);
+ // It is important that we do not have a test instruction after the
+ // call. A test instruction after the call is used to indicate that
+ // we have generated an inline version of the keyed load. In this
+ // case, we know that we are not generating a test instruction next.
}
- Handle<Code> ic = CodeFactory::KeyedLoadIC(masm->isolate()).code();
- __ call(ic, RelocInfo::CODE_TARGET);
- // It is important that we do not have a test instruction after the
- // call. A test instruction after the call is used to indicate that
- // we have generated an inline version of the keyed load. In this
- // case, we know that we are not generating a test instruction next.
// Push the nth argument.
__ push(eax);
=======================================
--- /branches/bleeding_edge/src/x87/debug-x87.cc Fri Sep 5 02:11:31 2014
UTC
+++ /branches/bleeding_edge/src/x87/debug-x87.cc Thu Oct 9 07:05:20 2014
UTC
@@ -182,7 +182,11 @@
// Register state for IC load call (from ic-x87.cc).
Register receiver = LoadDescriptor::ReceiverRegister();
Register name = LoadDescriptor::NameRegister();
- Generate_DebugBreakCallHelper(masm, receiver.bit() | name.bit(), 0,
false);
+ RegList regs = receiver.bit() | name.bit();
+ if (FLAG_vector_ics) {
+ regs |= VectorLoadICTrampolineDescriptor::SlotRegister().bit();
+ }
+ Generate_DebugBreakCallHelper(masm, regs, 0, false);
}
=======================================
--- /branches/bleeding_edge/src/x87/full-codegen-x87.cc Wed Oct 8 06:21:42
2014 UTC
+++ /branches/bleeding_edge/src/x87/full-codegen-x87.cc Thu Oct 9 07:05:20
2014 UTC
@@ -1276,7 +1276,13 @@
Handle<Symbol>
home_object_symbol(isolate()->heap()->home_object_symbol());
__ mov(LoadDescriptor::NameRegister(), home_object_symbol);
- CallLoadIC(NOT_CONTEXTUAL, expr->HomeObjectFeedbackId());
+ if (FLAG_vector_ics) {
+ __ mov(VectorLoadICDescriptor::SlotRegister(),
+ Immediate(Smi::FromInt(expr->HomeObjectFeedbackSlot())));
+ CallLoadIC(NOT_CONTEXTUAL);
+ } else {
+ CallLoadIC(NOT_CONTEXTUAL, expr->HomeObjectFeedbackId());
+ }
__ cmp(eax, isolate()->factory()->undefined_value());
Label done;
--
--
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.