Index: src/arm64/lithium-arm64.cc |
diff --git a/src/arm64/lithium-arm64.cc b/src/arm64/lithium-arm64.cc |
index 9ac108c32671620506f9be60cf155a94736dbbf3..f7ac46faaf6f6e988fb22bb446e174806a775a17 100644 |
--- a/src/arm64/lithium-arm64.cc |
+++ b/src/arm64/lithium-arm64.cc |
@@ -551,6 +551,13 @@ LOperand* LPlatformChunk::GetNextSpillSlot(RegisterKind kind) { |
} |
+LOperand* LChunkBuilder::FixedTemp(Register reg) { |
+ LUnallocated* operand = ToUnallocated(reg); |
+ ASSERT(operand->HasFixedPolicy()); |
+ return operand; |
+} |
+ |
+ |
LOperand* LChunkBuilder::FixedTemp(DoubleRegister reg) { |
LUnallocated* operand = ToUnallocated(reg); |
ASSERT(operand->HasFixedPolicy()); |
@@ -1660,8 +1667,13 @@ LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) { |
LOperand* context = UseFixed(instr->context(), cp); |
LOperand* global_object = UseFixed(instr->global_object(), |
LoadIC::ReceiverRegister()); |
+ LOperand* vector = NULL; |
+ if (FLAG_vector_ics) { |
+ vector = FixedTemp(LoadIC::VectorRegister()); |
+ } |
+ |
LLoadGlobalGeneric* result = |
- new(zone()) LLoadGlobalGeneric(context, global_object); |
+ new(zone()) LLoadGlobalGeneric(context, global_object, vector); |
return MarkAsCall(DefineFixed(result, x0), instr); |
} |
@@ -1717,9 +1729,14 @@ LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) { |
LOperand* context = UseFixed(instr->context(), cp); |
LOperand* object = UseFixed(instr->object(), LoadIC::ReceiverRegister()); |
LOperand* key = UseFixed(instr->key(), LoadIC::NameRegister()); |
+ LOperand* vector = NULL; |
+ if (FLAG_vector_ics) { |
+ vector = FixedTemp(LoadIC::VectorRegister()); |
+ } |
LInstruction* result = |
- DefineFixed(new(zone()) LLoadKeyedGeneric(context, object, key), x0); |
+ DefineFixed(new(zone()) LLoadKeyedGeneric(context, object, key, vector), |
+ x0); |
return MarkAsCall(result, instr); |
} |
@@ -1733,8 +1750,13 @@ LInstruction* LChunkBuilder::DoLoadNamedField(HLoadNamedField* instr) { |
LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) { |
LOperand* context = UseFixed(instr->context(), cp); |
LOperand* object = UseFixed(instr->object(), LoadIC::ReceiverRegister()); |
+ LOperand* vector = NULL; |
+ if (FLAG_vector_ics) { |
+ vector = FixedTemp(LoadIC::VectorRegister()); |
+ } |
+ |
LInstruction* result = |
- DefineFixed(new(zone()) LLoadNamedGeneric(context, object), x0); |
+ DefineFixed(new(zone()) LLoadNamedGeneric(context, object, vector), x0); |
return MarkAsCall(result, instr); |
} |