| Index: src/ic/x64/ic-x64.cc
|
| diff --git a/src/ic/x64/ic-x64.cc b/src/ic/x64/ic-x64.cc
|
| index 3fc8747c66a2404919df8e868221995c00f9d716..931900c8377572adac20c8740d28944e847721f8 100644
|
| --- a/src/ic/x64/ic-x64.cc
|
| +++ b/src/ic/x64/ic-x64.cc
|
| @@ -564,18 +564,16 @@ void KeyedStoreIC::GenerateMegamorphic(MacroAssembler* masm,
|
| __ movzxbp(r9, FieldOperand(r9, Map::kInstanceTypeOffset));
|
| __ JumpIfNotUniqueNameInstanceType(r9, &slow_with_tagged_index);
|
|
|
| - if (FLAG_vector_stores) {
|
| - Register vector = VectorStoreICDescriptor::VectorRegister();
|
| - Register slot = VectorStoreICDescriptor::SlotRegister();
|
| - // The handlers in the stub cache expect a vector and slot. Since we won't
|
| - // change the IC from any downstream misses, a dummy vector can be used.
|
| - Handle<TypeFeedbackVector> dummy_vector =
|
| - TypeFeedbackVector::DummyVector(masm->isolate());
|
| - int slot_index = dummy_vector->GetIndex(
|
| - FeedbackVectorSlot(TypeFeedbackVector::kDummyKeyedStoreICSlot));
|
| - __ Move(vector, dummy_vector);
|
| - __ Move(slot, Smi::FromInt(slot_index));
|
| - }
|
| + Register vector = VectorStoreICDescriptor::VectorRegister();
|
| + Register slot = VectorStoreICDescriptor::SlotRegister();
|
| + // The handlers in the stub cache expect a vector and slot. Since we won't
|
| + // change the IC from any downstream misses, a dummy vector can be used.
|
| + Handle<TypeFeedbackVector> dummy_vector =
|
| + TypeFeedbackVector::DummyVector(masm->isolate());
|
| + int slot_index = dummy_vector->GetIndex(
|
| + FeedbackVectorSlot(TypeFeedbackVector::kDummyKeyedStoreICSlot));
|
| + __ Move(vector, dummy_vector);
|
| + __ Move(slot, Smi::FromInt(slot_index));
|
|
|
| Code::Flags flags = Code::RemoveTypeAndHolderFromFlags(
|
| Code::ComputeHandlerFlags(Code::STORE_IC));
|
| @@ -733,22 +731,8 @@ void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm,
|
|
|
|
|
| void StoreIC::GenerateMegamorphic(MacroAssembler* masm) {
|
| - if (FLAG_vector_stores) {
|
| - // This shouldn't be called.
|
| - __ int3();
|
| - return;
|
| - }
|
| -
|
| - // The return address is on the stack.
|
| - // Get the receiver from the stack and probe the stub cache.
|
| - Code::Flags flags = Code::RemoveTypeAndHolderFromFlags(
|
| - Code::ComputeHandlerFlags(Code::STORE_IC));
|
| - masm->isolate()->stub_cache()->GenerateProbe(
|
| - masm, Code::STORE_IC, flags, StoreDescriptor::ReceiverRegister(),
|
| - StoreDescriptor::NameRegister(), rbx, no_reg);
|
| -
|
| - // Cache miss: Jump to runtime.
|
| - GenerateMiss(masm);
|
| + // This shouldn't be called.
|
| + __ int3();
|
| }
|
|
|
|
|
| @@ -763,13 +747,11 @@ static void StoreIC_PushArgs(MacroAssembler* masm) {
|
| __ Push(receiver);
|
| __ Push(name);
|
| __ Push(value);
|
| - if (FLAG_vector_stores) {
|
| - Register slot = VectorStoreICDescriptor::SlotRegister();
|
| - Register vector = VectorStoreICDescriptor::VectorRegister();
|
| - DCHECK(!temp.is(slot) && !temp.is(vector));
|
| - __ Push(slot);
|
| - __ Push(vector);
|
| - }
|
| + Register slot = VectorStoreICDescriptor::SlotRegister();
|
| + Register vector = VectorStoreICDescriptor::VectorRegister();
|
| + DCHECK(!temp.is(slot) && !temp.is(vector));
|
| + __ Push(slot);
|
| + __ Push(vector);
|
| __ PushReturnAddressFrom(temp);
|
| }
|
|
|
| @@ -779,8 +761,7 @@ void StoreIC::GenerateMiss(MacroAssembler* masm) {
|
| StoreIC_PushArgs(masm);
|
|
|
| // Perform tail call to the entry.
|
| - int args = FLAG_vector_stores ? 5 : 3;
|
| - __ TailCallRuntime(Runtime::kStoreIC_Miss, args, 1);
|
| + __ TailCallRuntime(Runtime::kStoreIC_Miss, 5, 1);
|
| }
|
|
|
|
|
| @@ -789,8 +770,7 @@ void StoreIC::GenerateNormal(MacroAssembler* masm) {
|
| Register name = StoreDescriptor::NameRegister();
|
| Register value = StoreDescriptor::ValueRegister();
|
| Register dictionary = r11;
|
| - DCHECK(!FLAG_vector_stores ||
|
| - !AreAliased(dictionary, VectorStoreICDescriptor::VectorRegister(),
|
| + DCHECK(!AreAliased(dictionary, VectorStoreICDescriptor::VectorRegister(),
|
| VectorStoreICDescriptor::SlotRegister()));
|
|
|
| Label miss;
|
| @@ -812,8 +792,7 @@ void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) {
|
| StoreIC_PushArgs(masm);
|
|
|
| // Do tail-call to runtime routine.
|
| - int args = FLAG_vector_stores ? 5 : 3;
|
| - __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss, args, 1);
|
| + __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss, 5, 1);
|
| }
|
|
|
|
|
|
|