Index: src/mips64/lithium-mips64.cc |
diff --git a/src/mips64/lithium-mips64.cc b/src/mips64/lithium-mips64.cc |
index 3df4defc7af739a65a1a08650817fb20a4a6b049..97c2d2ef753a7c5312715a6578cbb1d6d93c6d3c 100644 |
--- a/src/mips64/lithium-mips64.cc |
+++ b/src/mips64/lithium-mips64.cc |
@@ -337,6 +337,12 @@ void LAccessArgumentsAt::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; |
@@ -355,6 +361,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 LLoadKeyed::PrintDataTo(StringStream* stream) { |
elements()->PrintTo(stream); |
stream->Add("["); |
@@ -2100,6 +2114,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, v0), instr); |
+} |
+ |
+ |
LInstruction* LChunkBuilder::DoLoadContextSlot(HLoadContextSlot* instr) { |
LOperand* context = UseRegisterAtStart(instr->value()); |
LInstruction* result = |
@@ -2389,6 +2412,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(), a1); |