X87: VectorICs: New interface descriptor for vector transitioning stores.
port cd35155918
(r30284).
original commit message:
BUG=
Review URL: https://codereview.chromium.org/1303223002
Cr-Commit-Position: refs/heads/master@{#30297}
This commit is contained in:
parent
597cfc6ea8
commit
6c40462558
@ -30,11 +30,22 @@ const Register VectorStoreICTrampolineDescriptor::SlotRegister() { return edi; }
|
||||
const Register VectorStoreICDescriptor::VectorRegister() { return ebx; }
|
||||
|
||||
|
||||
const Register StoreTransitionDescriptor::MapRegister() {
|
||||
return FLAG_vector_stores ? no_reg : ebx;
|
||||
const Register VectorStoreTransitionDescriptor::SlotRegister() {
|
||||
return no_reg;
|
||||
}
|
||||
|
||||
|
||||
const Register VectorStoreTransitionDescriptor::VectorRegister() {
|
||||
return no_reg;
|
||||
}
|
||||
|
||||
|
||||
const Register VectorStoreTransitionDescriptor::MapRegister() { return no_reg; }
|
||||
|
||||
|
||||
const Register StoreTransitionDescriptor::MapRegister() { return ebx; }
|
||||
|
||||
|
||||
const Register LoadGlobalViaContextDescriptor::SlotRegister() { return ebx; }
|
||||
|
||||
|
||||
@ -65,17 +76,11 @@ const Register GrowArrayElementsDescriptor::ObjectRegister() { return eax; }
|
||||
const Register GrowArrayElementsDescriptor::KeyRegister() { return ebx; }
|
||||
|
||||
|
||||
void StoreTransitionDescriptor::InitializePlatformSpecific(
|
||||
void VectorStoreTransitionDescriptor::InitializePlatformSpecific(
|
||||
CallInterfaceDescriptorData* data) {
|
||||
Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(),
|
||||
MapRegister()};
|
||||
|
||||
// When FLAG_vector_stores is true, we want to pass the map register on the
|
||||
// stack instead of in a register.
|
||||
DCHECK(FLAG_vector_stores || !MapRegister().is(no_reg));
|
||||
|
||||
int register_count = FLAG_vector_stores ? 3 : 4;
|
||||
data->InitializePlatformSpecific(register_count, registers);
|
||||
Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister()};
|
||||
// The other three parameters are on the stack in ia32.
|
||||
data->InitializePlatformSpecific(arraysize(registers), registers);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user