Index: src/ppc/lithium-ppc.cc |
diff --git a/src/ppc/lithium-ppc.cc b/src/ppc/lithium-ppc.cc |
index 4f15a60d5de9a45ca51a664b05782aa09ec95b04..296f0ac364fce880be25ff33c5e25647eab2b13f 100644 |
--- a/src/ppc/lithium-ppc.cc |
+++ b/src/ppc/lithium-ppc.cc |
@@ -343,6 +343,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; |
@@ -361,6 +367,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("["); |
@@ -2108,6 +2122,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, r3), instr); |
+} |
+ |
+ |
LInstruction* LChunkBuilder::DoLoadContextSlot(HLoadContextSlot* instr) { |
LOperand* context = UseRegisterAtStart(instr->value()); |
LInstruction* result = |
@@ -2388,6 +2411,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(), r4); |