| Index: src/x64/lithium-codegen-x64.cc
|
| diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc
|
| index 86a7e833835b56747f4c8765e893b8873465031a..7ceff76e148f70efd55d40c898b00e50a628ced0 100644
|
| --- a/src/x64/lithium-codegen-x64.cc
|
| +++ b/src/x64/lithium-codegen-x64.cc
|
| @@ -2019,7 +2019,7 @@ void LCodeGen::DoReturn(LReturn* instr) {
|
| }
|
|
|
|
|
| -void LCodeGen::DoLoadGlobal(LLoadGlobal* instr) {
|
| +void LCodeGen::DoLoadGlobalCell(LLoadGlobalCell* instr) {
|
| Register result = ToRegister(instr->result());
|
| if (result.is(rax)) {
|
| __ load_rax(instr->hydrogen()->cell().location(),
|
| @@ -2035,7 +2035,19 @@ void LCodeGen::DoLoadGlobal(LLoadGlobal* instr) {
|
| }
|
|
|
|
|
| -void LCodeGen::DoStoreGlobal(LStoreGlobal* instr) {
|
| +void LCodeGen::DoLoadGlobalGeneric(LLoadGlobalGeneric* instr) {
|
| + ASSERT(ToRegister(instr->global_object()).is(rax));
|
| + ASSERT(ToRegister(instr->result()).is(rax));
|
| +
|
| + __ Move(rcx, instr->name());
|
| + RelocInfo::Mode mode = instr->for_typeof() ? RelocInfo::CODE_TARGET :
|
| + RelocInfo::CODE_TARGET_CONTEXT;
|
| + Handle<Code> ic = isolate()->builtins()->LoadIC_Initialize();
|
| + CallCode(ic, mode, instr);
|
| +}
|
| +
|
| +
|
| +void LCodeGen::DoStoreGlobalCell(LStoreGlobalCell* instr) {
|
| Register value = ToRegister(instr->InputAt(0));
|
| Register temp = ToRegister(instr->TempAt(0));
|
| ASSERT(!value.is(temp));
|
| @@ -2058,6 +2070,16 @@ void LCodeGen::DoStoreGlobal(LStoreGlobal* instr) {
|
| }
|
|
|
|
|
| +void LCodeGen::DoStoreGlobalGeneric(LStoreGlobalGeneric* instr) {
|
| + ASSERT(ToRegister(instr->global_object()).is(rdx));
|
| + ASSERT(ToRegister(instr->value()).is(rax));
|
| +
|
| + __ Move(rcx, instr->name());
|
| + Handle<Code> ic = isolate()->builtins()->StoreIC_Initialize();
|
| + CallCode(ic, RelocInfo::CODE_TARGET_CONTEXT, instr);
|
| +}
|
| +
|
| +
|
| void LCodeGen::DoLoadContextSlot(LLoadContextSlot* instr) {
|
| Register context = ToRegister(instr->context());
|
| Register result = ToRegister(instr->result());
|
| @@ -2732,7 +2754,6 @@ void LCodeGen::DoPower(LPower* instr) {
|
| ExternalReference::power_double_int_function(isolate()), 2);
|
| } else {
|
| ASSERT(exponent_type.IsTagged());
|
| - CpuFeatures::Scope scope(SSE2);
|
| Register right_reg = ToRegister(right);
|
|
|
| Label non_smi, call;
|
|
|