Index: src/arm64/lithium-arm64.cc |
diff --git a/src/arm64/lithium-arm64.cc b/src/arm64/lithium-arm64.cc |
index dc28f8d9a284d1f5ab3bd36c8f6fe93b1b1a465d..920ea3e6c5d14b158f38f3cebc4bee44d9527782 100644 |
--- a/src/arm64/lithium-arm64.cc |
+++ b/src/arm64/lithium-arm64.cc |
@@ -296,6 +296,12 @@ void LStoreKeyedGeneric::PrintDataTo(StringStream* stream) { |
} |
+void LLoadGlobalViaContext::PrintDataTo(StringStream* stream) { |
+ stream->Add(String::cast(*name())->ToCString().get()); |
+ stream->Add(" depth:%d slot:%d", depth(), slot_index()); |
+} |
+ |
+ |
void LStoreNamedField::PrintDataTo(StringStream* stream) { |
object()->PrintTo(stream); |
std::ostringstream os; |
@@ -315,6 +321,14 @@ void LStoreNamedGeneric::PrintDataTo(StringStream* stream) { |
} |
+void LStoreGlobalViaContext::PrintDataTo(StringStream* stream) { |
+ stream->Add(String::cast(*name())->ToCString().get()); |
+ stream->Add(" <- "); |
+ value()->PrintTo(stream); |
+ stream->Add(" depth:%d slot:%d", depth(), slot_index()); |
+} |
+ |
+ |
void LStringCompareAndBranch::PrintDataTo(StringStream* stream) { |
stream->Add("if string_compare("); |
left()->PrintTo(stream); |
@@ -1703,6 +1717,15 @@ LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) { |
} |
+LInstruction* LChunkBuilder::DoLoadGlobalViaContext( |
+ HLoadGlobalViaContext* instr) { |
+ LOperand* context = UseFixed(instr->context(), cp); |
+ DCHECK(instr->slot_index() > 0); |
+ LLoadGlobalViaContext* result = new (zone()) LLoadGlobalViaContext(context); |
+ return MarkAsCall(DefineFixed(result, x0), instr); |
+} |
+ |
+ |
LInstruction* LChunkBuilder::DoLoadKeyed(HLoadKeyed* instr) { |
DCHECK(instr->key()->representation().IsSmiOrInteger32()); |
ElementsKind elements_kind = instr->elements_kind(); |
@@ -2457,6 +2480,19 @@ LInstruction* LChunkBuilder::DoStoreNamedGeneric(HStoreNamedGeneric* instr) { |
} |
+LInstruction* LChunkBuilder::DoStoreGlobalViaContext( |
+ HStoreGlobalViaContext* instr) { |
+ LOperand* context = UseFixed(instr->context(), cp); |
+ LOperand* value = UseFixed(instr->value(), |
+ StoreGlobalViaContextDescriptor::ValueRegister()); |
+ DCHECK(instr->slot_index() > 0); |
+ |
+ LStoreGlobalViaContext* result = |
+ new (zone()) LStoreGlobalViaContext(context, value); |
+ return MarkAsCall(result, instr); |
+} |
+ |
+ |
LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) { |
LOperand* context = UseFixed(instr->context(), cp); |
LOperand* left = UseFixed(instr->left(), x1); |