Commit de7e8a8c authored by mbrandy's avatar mbrandy Committed by Commit bot

PPC: VectorICs: refactoring to eliminate "for queries only" vector ic mode.

Port 1a5751f9

Original commit message:
    Since we need the notion of a dummy vector ic, we can use that to avoid
    a special case of the IC constructor. Also, consolidate the two dummy
    ICs into one.

R=mvstanton@chromium.org, michael_dawson@ca.ibm.com, jyan@ca.ibm.com, joransiu@ca.ibm.com
BUG=

Review URL: https://codereview.chromium.org/1261433007

Cr-Commit-Position: refs/heads/master@{#29959}
parent ffb3a927
...@@ -441,10 +441,11 @@ void KeyedLoadIC::GenerateMegamorphic(MacroAssembler* masm, ...@@ -441,10 +441,11 @@ void KeyedLoadIC::GenerateMegamorphic(MacroAssembler* masm,
Register vector = LoadWithVectorDescriptor::VectorRegister(); Register vector = LoadWithVectorDescriptor::VectorRegister();
Register slot = LoadWithVectorDescriptor::SlotRegister(); Register slot = LoadWithVectorDescriptor::SlotRegister();
DCHECK(!AreAliased(vector, slot, r7, r8, r9, r10)); DCHECK(!AreAliased(vector, slot, r7, r8, r9, r10));
Handle<TypeFeedbackVector> dummy_vector = Handle<TypeFeedbackVector>::cast( Handle<TypeFeedbackVector> dummy_vector =
masm->isolate()->factory()->keyed_load_dummy_vector()); TypeFeedbackVector::DummyVector(masm->isolate());
int slot_index = dummy_vector->GetIndex(FeedbackVectorICSlot(0)); int slot_index = dummy_vector->GetIndex(
__ LoadRoot(vector, Heap::kKeyedLoadDummyVectorRootIndex); FeedbackVectorICSlot(TypeFeedbackVector::kDummyKeyedLoadICSlot));
__ LoadRoot(vector, Heap::kDummyVectorRootIndex);
__ LoadSmiLiteral(slot, Smi::FromInt(slot_index)); __ LoadSmiLiteral(slot, Smi::FromInt(slot_index));
Code::Flags flags = Code::RemoveTypeAndHolderFromFlags( Code::Flags flags = Code::RemoveTypeAndHolderFromFlags(
...@@ -713,10 +714,11 @@ void KeyedStoreIC::GenerateMegamorphic(MacroAssembler* masm, ...@@ -713,10 +714,11 @@ void KeyedStoreIC::GenerateMegamorphic(MacroAssembler* masm,
Register vector = VectorStoreICDescriptor::VectorRegister(); Register vector = VectorStoreICDescriptor::VectorRegister();
Register slot = VectorStoreICDescriptor::SlotRegister(); Register slot = VectorStoreICDescriptor::SlotRegister();
DCHECK(!AreAliased(vector, slot, r6, r7, r8, r9)); DCHECK(!AreAliased(vector, slot, r6, r7, r8, r9));
Handle<TypeFeedbackVector> dummy_vector = Handle<TypeFeedbackVector>::cast( Handle<TypeFeedbackVector> dummy_vector =
masm->isolate()->factory()->keyed_store_dummy_vector()); TypeFeedbackVector::DummyVector(masm->isolate());
int slot_index = dummy_vector->GetIndex(FeedbackVectorICSlot(0)); int slot_index = dummy_vector->GetIndex(
__ LoadRoot(vector, Heap::kKeyedStoreDummyVectorRootIndex); FeedbackVectorICSlot(TypeFeedbackVector::kDummyKeyedStoreICSlot));
__ LoadRoot(vector, Heap::kDummyVectorRootIndex);
__ LoadSmiLiteral(slot, Smi::FromInt(slot_index)); __ LoadSmiLiteral(slot, Smi::FromInt(slot_index));
} }
......
...@@ -1478,7 +1478,8 @@ static void Generate_PushAppliedArguments(MacroAssembler* masm, ...@@ -1478,7 +1478,8 @@ static void Generate_PushAppliedArguments(MacroAssembler* masm,
__ LoadP(receiver, MemOperand(fp, argumentsOffset)); __ LoadP(receiver, MemOperand(fp, argumentsOffset));
// Use inline caching to speed up access to arguments. // Use inline caching to speed up access to arguments.
FeedbackVectorSpec spec(0, Code::KEYED_LOAD_IC); Code::Kind kinds[] = {Code::KEYED_LOAD_IC};
FeedbackVectorSpec spec(0, 1, kinds);
Handle<TypeFeedbackVector> feedback_vector = Handle<TypeFeedbackVector> feedback_vector =
masm->isolate()->factory()->NewTypeFeedbackVector(&spec); masm->isolate()->factory()->NewTypeFeedbackVector(&spec);
int index = feedback_vector->GetIndex(FeedbackVectorICSlot(0)); int index = feedback_vector->GetIndex(FeedbackVectorICSlot(0));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment