| 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);
|
| }
|
|
|
|
|