Index: src/mips/lithium-mips.cc |
diff --git a/src/mips/lithium-mips.cc b/src/mips/lithium-mips.cc |
index fd90584ea95abc2fc0673218c5554511aed71262..3f0e7bfd27a0cffabfcb8f1564efcf2418f1529f 100644 |
--- a/src/mips/lithium-mips.cc |
+++ b/src/mips/lithium-mips.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("["); |
@@ -2097,6 +2111,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 = |
@@ -2384,6 +2407,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); |