| Index: src/arm/lithium-arm.cc
|
| diff --git a/src/arm/lithium-arm.cc b/src/arm/lithium-arm.cc
|
| index acb64f7c338dc536a0eddca0cccccf016f35fd4f..e5de950334af86261b392603aeb058298224d60b 100644
|
| --- a/src/arm/lithium-arm.cc
|
| +++ b/src/arm/lithium-arm.cc
|
| @@ -1098,9 +1098,17 @@ LInstruction* LChunkBuilder::DoTailCallThroughMegamorphicCache(
|
| UseFixed(instr->receiver(), LoadDescriptor::ReceiverRegister());
|
| LOperand* name_register =
|
| UseFixed(instr->name(), LoadDescriptor::NameRegister());
|
| + LOperand* slot = NULL;
|
| + LOperand* vector = NULL;
|
| + if (FLAG_vector_ics) {
|
| + slot = UseFixed(instr->slot(), VectorLoadICDescriptor::SlotRegister());
|
| + vector =
|
| + UseFixed(instr->vector(), VectorLoadICDescriptor::VectorRegister());
|
| + }
|
| +
|
| // Not marked as call. It can't deoptimize, and it never returns.
|
| return new (zone()) LTailCallThroughMegamorphicCache(
|
| - context, receiver_register, name_register);
|
| + context, receiver_register, name_register, slot, vector);
|
| }
|
|
|
|
|
| @@ -2119,7 +2127,7 @@ LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) {
|
| LOperand* global_object =
|
| UseFixed(instr->global_object(), LoadDescriptor::ReceiverRegister());
|
| LOperand* vector = NULL;
|
| - if (FLAG_vector_ics) {
|
| + if (instr->HasVectorAndSlot()) {
|
| vector = FixedTemp(VectorLoadICDescriptor::VectorRegister());
|
| }
|
| LLoadGlobalGeneric* result =
|
| @@ -2178,7 +2186,7 @@ LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) {
|
| LOperand* object =
|
| UseFixed(instr->object(), LoadDescriptor::ReceiverRegister());
|
| LOperand* vector = NULL;
|
| - if (FLAG_vector_ics) {
|
| + if (instr->HasVectorAndSlot()) {
|
| vector = FixedTemp(VectorLoadICDescriptor::VectorRegister());
|
| }
|
|
|
| @@ -2245,7 +2253,7 @@ LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) {
|
| UseFixed(instr->object(), LoadDescriptor::ReceiverRegister());
|
| LOperand* key = UseFixed(instr->key(), LoadDescriptor::NameRegister());
|
| LOperand* vector = NULL;
|
| - if (FLAG_vector_ics) {
|
| + if (instr->HasVectorAndSlot()) {
|
| vector = FixedTemp(VectorLoadICDescriptor::VectorRegister());
|
| }
|
|
|
|
|