PPC: VectorICs: vector [keyed]store ic MISS handling infrastructure.
Port a913f4bf5c
R=mvstanton@chromium.org, dstence@us.ibm.com, michael_dawson@ca.ibm.com
BUG=
Review URL: https://codereview.chromium.org/1261663002
Cr-Commit-Position: refs/heads/master@{#29878}
This commit is contained in:
parent
6f4c0614d5
commit
12f433e274
@ -474,12 +474,24 @@ void KeyedLoadIC::GenerateMegamorphic(MacroAssembler* masm,
|
||||
}
|
||||
|
||||
|
||||
void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) {
|
||||
// Push receiver, key and value for runtime call.
|
||||
__ Push(StoreDescriptor::ReceiverRegister(), StoreDescriptor::NameRegister(),
|
||||
StoreDescriptor::ValueRegister());
|
||||
static void StoreIC_PushArgs(MacroAssembler* masm) {
|
||||
if (FLAG_vector_stores) {
|
||||
__ Push(StoreDescriptor::ReceiverRegister(),
|
||||
StoreDescriptor::NameRegister(), StoreDescriptor::ValueRegister(),
|
||||
VectorStoreICDescriptor::SlotRegister(),
|
||||
VectorStoreICDescriptor::VectorRegister());
|
||||
} else {
|
||||
__ Push(StoreDescriptor::ReceiverRegister(),
|
||||
StoreDescriptor::NameRegister(), StoreDescriptor::ValueRegister());
|
||||
}
|
||||
}
|
||||
|
||||
__ TailCallRuntime(Runtime::kKeyedStoreIC_Miss, 3, 1);
|
||||
|
||||
void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) {
|
||||
StoreIC_PushArgs(masm);
|
||||
|
||||
int args = FLAG_vector_stores ? 5 : 3;
|
||||
__ TailCallRuntime(Runtime::kKeyedStoreIC_Miss, args, 1);
|
||||
}
|
||||
|
||||
|
||||
@ -781,11 +793,11 @@ void StoreIC::GenerateMegamorphic(MacroAssembler* masm) {
|
||||
|
||||
|
||||
void StoreIC::GenerateMiss(MacroAssembler* masm) {
|
||||
__ Push(StoreDescriptor::ReceiverRegister(), StoreDescriptor::NameRegister(),
|
||||
StoreDescriptor::ValueRegister());
|
||||
StoreIC_PushArgs(masm);
|
||||
|
||||
// Perform tail call to the entry.
|
||||
__ TailCallRuntime(Runtime::kStoreIC_Miss, 3, 1);
|
||||
int args = FLAG_vector_stores ? 5 : 3;
|
||||
__ TailCallRuntime(Runtime::kStoreIC_Miss, args, 1);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user