| Index: src/ia32/lithium-ia32.cc
|
| diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc
|
| index 64677de83d4fd87939b022449f690173e922eacd..7a3c373a452e48a71237d074a1e9854785cd095c 100644
|
| --- a/src/ia32/lithium-ia32.cc
|
| +++ b/src/ia32/lithium-ia32.cc
|
| @@ -379,6 +379,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;
|
| @@ -397,6 +403,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("[");
|
| @@ -2144,6 +2158,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 =
|
| @@ -2483,6 +2506,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);
|
|
|