| Index: src/ia32/lithium-codegen-ia32.cc
|
| diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc
|
| index 00860115ba82a0ad386df7ba9fb86c866ec2c462..fb3c05ebab4f956655196bc728be25ef3d9038ea 100644
|
| --- a/src/ia32/lithium-codegen-ia32.cc
|
| +++ b/src/ia32/lithium-codegen-ia32.cc
|
| @@ -2862,6 +2862,22 @@ void LCodeGen::DoLoadGlobalGeneric(LLoadGlobalGeneric* instr) {
|
| }
|
|
|
|
|
| +void LCodeGen::DoLoadGlobalViaContext(LLoadGlobalViaContext* instr) {
|
| + DCHECK(ToRegister(instr->context()).is(esi));
|
| + DCHECK(ToRegister(instr->result()).is(eax));
|
| +
|
| + __ mov(LoadGlobalViaContextDescriptor::DepthRegister(),
|
| + Immediate(Smi::FromInt(instr->depth())));
|
| + __ mov(LoadGlobalViaContextDescriptor::SlotRegister(),
|
| + Immediate(Smi::FromInt(instr->slot_index())));
|
| + __ mov(LoadGlobalViaContextDescriptor::NameRegister(), instr->name());
|
| +
|
| + Handle<Code> stub =
|
| + CodeFactory::LoadGlobalViaContext(isolate(), instr->depth()).code();
|
| + CallCode(stub, RelocInfo::CODE_TARGET, instr);
|
| +}
|
| +
|
| +
|
| void LCodeGen::DoLoadContextSlot(LLoadContextSlot* instr) {
|
| Register context = ToRegister(instr->context());
|
| Register result = ToRegister(instr->result());
|
| @@ -4118,6 +4134,24 @@ void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) {
|
| }
|
|
|
|
|
| +void LCodeGen::DoStoreGlobalViaContext(LStoreGlobalViaContext* instr) {
|
| + DCHECK(ToRegister(instr->context()).is(esi));
|
| + DCHECK(ToRegister(instr->value())
|
| + .is(StoreGlobalViaContextDescriptor::ValueRegister()));
|
| +
|
| + __ mov(StoreGlobalViaContextDescriptor::DepthRegister(),
|
| + Immediate(Smi::FromInt(instr->depth())));
|
| + __ mov(StoreGlobalViaContextDescriptor::SlotRegister(),
|
| + Immediate(Smi::FromInt(instr->slot_index())));
|
| + __ mov(StoreGlobalViaContextDescriptor::NameRegister(), instr->name());
|
| +
|
| + Handle<Code> stub =
|
| + CodeFactory::StoreGlobalViaContext(isolate(), instr->depth(),
|
| + instr->language_mode()).code();
|
| + CallCode(stub, RelocInfo::CODE_TARGET, instr);
|
| +}
|
| +
|
| +
|
| void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) {
|
| Condition cc = instr->hydrogen()->allow_equality() ? above : above_equal;
|
| if (instr->index()->IsConstantOperand()) {
|
|
|