Index: src/arm64/lithium-codegen-arm64.cc |
diff --git a/src/arm64/lithium-codegen-arm64.cc b/src/arm64/lithium-codegen-arm64.cc |
index a9edbb9ba338445e9c4a7e2c13d3f3ef0ff5395d..66420f8d9d20e2664da39dd1f41ad5c483fad89f 100644 |
--- a/src/arm64/lithium-codegen-arm64.cc |
+++ b/src/arm64/lithium-codegen-arm64.cc |
@@ -3375,6 +3375,23 @@ void LCodeGen::DoLoadGlobalGeneric(LLoadGlobalGeneric* instr) { |
} |
+void LCodeGen::DoLoadGlobalViaContext(LLoadGlobalViaContext* instr) { |
+ DCHECK(ToRegister(instr->context()).is(cp)); |
+ DCHECK(ToRegister(instr->result()).is(x0)); |
+ |
+ __ Mov(LoadGlobalViaContextDescriptor::DepthRegister(), |
+ Operand(Smi::FromInt(instr->depth()))); |
+ __ Mov(LoadGlobalViaContextDescriptor::SlotRegister(), |
+ Operand(Smi::FromInt(instr->slot_index()))); |
+ __ Mov(LoadGlobalViaContextDescriptor::NameRegister(), |
+ Operand(instr->name())); |
+ |
+ Handle<Code> stub = |
+ CodeFactory::LoadGlobalViaContext(isolate(), instr->depth()).code(); |
+ CallCode(stub, RelocInfo::CODE_TARGET, instr); |
+} |
+ |
+ |
MemOperand LCodeGen::PrepareKeyedExternalArrayOperand( |
Register key, |
Register base, |
@@ -5513,6 +5530,25 @@ void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { |
} |
+void LCodeGen::DoStoreGlobalViaContext(LStoreGlobalViaContext* instr) { |
+ DCHECK(ToRegister(instr->context()).is(cp)); |
+ DCHECK(ToRegister(instr->value()) |
+ .is(StoreGlobalViaContextDescriptor::ValueRegister())); |
+ |
+ __ Mov(StoreGlobalViaContextDescriptor::DepthRegister(), |
+ Operand(Smi::FromInt(instr->depth()))); |
+ __ Mov(StoreGlobalViaContextDescriptor::SlotRegister(), |
+ Operand(Smi::FromInt(instr->slot_index()))); |
+ __ Mov(StoreGlobalViaContextDescriptor::NameRegister(), |
+ Operand(instr->name())); |
+ |
+ Handle<Code> stub = |
+ CodeFactory::StoreGlobalViaContext(isolate(), instr->depth(), |
+ instr->language_mode()).code(); |
+ CallCode(stub, RelocInfo::CODE_TARGET, instr); |
+} |
+ |
+ |
void LCodeGen::DoStringAdd(LStringAdd* instr) { |
DCHECK(ToRegister(instr->context()).is(cp)); |
DCHECK(ToRegister(instr->left()).Is(x1)); |