Index: src/x87/lithium-x87.cc |
diff --git a/src/x87/lithium-x87.cc b/src/x87/lithium-x87.cc |
index a57aa915767b132ff53121b0309190a0423055f8..301f128e11afec06245c512b7456e20297856af7 100644 |
--- a/src/x87/lithium-x87.cc |
+++ b/src/x87/lithium-x87.cc |
@@ -390,6 +390,12 @@ LOperand* LPlatformChunk::GetNextSpillSlot(RegisterKind kind) { |
} |
+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; |
@@ -408,6 +414,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("["); |
@@ -2142,6 +2156,15 @@ LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) { |
} |
+LInstruction* LChunkBuilder::DoLoadGlobalViaContext( |
+ HLoadGlobalViaContext* instr) { |
+ LOperand* context = UseFixed(instr->context(), esi); |
+ DCHECK(instr->slot_index() > 0); |
+ LLoadGlobalViaContext* result = new (zone()) LLoadGlobalViaContext(context); |
+ return MarkAsCall(DefineFixed(result, eax), instr); |
+} |
+ |
+ |
LInstruction* LChunkBuilder::DoLoadContextSlot(HLoadContextSlot* instr) { |
LOperand* context = UseRegisterAtStart(instr->value()); |
LInstruction* result = |
@@ -2487,6 +2510,19 @@ LInstruction* LChunkBuilder::DoStoreNamedGeneric(HStoreNamedGeneric* instr) { |
} |
+LInstruction* LChunkBuilder::DoStoreGlobalViaContext( |
+ HStoreGlobalViaContext* instr) { |
+ LOperand* context = UseFixed(instr->context(), esi); |
+ 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(), esi); |
LOperand* left = UseFixed(instr->left(), edx); |