Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/arm64/lithium-codegen-arm64.cc

Issue 1228113008: Crankshaft part of the 'loads and stores to global vars through property cell shortcuts' feature. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comments + regression test Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/arm64/lithium-arm64.cc ('k') | src/hydrogen.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/arm64/lithium-codegen-arm64.h" 7 #include "src/arm64/lithium-codegen-arm64.h"
8 #include "src/arm64/lithium-gap-resolver-arm64.h" 8 #include "src/arm64/lithium-gap-resolver-arm64.h"
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/code-factory.h" 10 #include "src/code-factory.h"
(...skipping 3357 matching lines...) Expand 10 before | Expand all | Expand 10 after
3368 DCHECK(ToRegister(instr->result()).Is(x0)); 3368 DCHECK(ToRegister(instr->result()).Is(x0));
3369 __ Mov(LoadDescriptor::NameRegister(), Operand(instr->name())); 3369 __ Mov(LoadDescriptor::NameRegister(), Operand(instr->name()));
3370 EmitVectorLoadICRegisters<LLoadGlobalGeneric>(instr); 3370 EmitVectorLoadICRegisters<LLoadGlobalGeneric>(instr);
3371 Handle<Code> ic = 3371 Handle<Code> ic =
3372 CodeFactory::LoadICInOptimizedCode(isolate(), instr->typeof_mode(), 3372 CodeFactory::LoadICInOptimizedCode(isolate(), instr->typeof_mode(),
3373 SLOPPY, PREMONOMORPHIC).code(); 3373 SLOPPY, PREMONOMORPHIC).code();
3374 CallCode(ic, RelocInfo::CODE_TARGET, instr); 3374 CallCode(ic, RelocInfo::CODE_TARGET, instr);
3375 } 3375 }
3376 3376
3377 3377
3378 void LCodeGen::DoLoadGlobalViaContext(LLoadGlobalViaContext* instr) {
3379 DCHECK(ToRegister(instr->context()).is(cp));
3380 DCHECK(ToRegister(instr->result()).is(x0));
3381
3382 __ Mov(LoadGlobalViaContextDescriptor::DepthRegister(),
3383 Operand(Smi::FromInt(instr->depth())));
3384 __ Mov(LoadGlobalViaContextDescriptor::SlotRegister(),
3385 Operand(Smi::FromInt(instr->slot_index())));
3386 __ Mov(LoadGlobalViaContextDescriptor::NameRegister(),
3387 Operand(instr->name()));
3388
3389 Handle<Code> stub =
3390 CodeFactory::LoadGlobalViaContext(isolate(), instr->depth()).code();
3391 CallCode(stub, RelocInfo::CODE_TARGET, instr);
3392 }
3393
3394
3378 MemOperand LCodeGen::PrepareKeyedExternalArrayOperand( 3395 MemOperand LCodeGen::PrepareKeyedExternalArrayOperand(
3379 Register key, 3396 Register key,
3380 Register base, 3397 Register base,
3381 Register scratch, 3398 Register scratch,
3382 bool key_is_smi, 3399 bool key_is_smi,
3383 bool key_is_constant, 3400 bool key_is_constant,
3384 int constant_key, 3401 int constant_key,
3385 ElementsKind elements_kind, 3402 ElementsKind elements_kind,
3386 int base_offset) { 3403 int base_offset) {
3387 int element_size_shift = ElementsKindToShiftSize(elements_kind); 3404 int element_size_shift = ElementsKindToShiftSize(elements_kind);
(...skipping 2118 matching lines...) Expand 10 before | Expand all | Expand 10 after
5506 } 5523 }
5507 5524
5508 __ Mov(StoreDescriptor::NameRegister(), Operand(instr->name())); 5525 __ Mov(StoreDescriptor::NameRegister(), Operand(instr->name()));
5509 Handle<Code> ic = CodeFactory::StoreICInOptimizedCode( 5526 Handle<Code> ic = CodeFactory::StoreICInOptimizedCode(
5510 isolate(), instr->language_mode(), 5527 isolate(), instr->language_mode(),
5511 instr->hydrogen()->initialization_state()).code(); 5528 instr->hydrogen()->initialization_state()).code();
5512 CallCode(ic, RelocInfo::CODE_TARGET, instr); 5529 CallCode(ic, RelocInfo::CODE_TARGET, instr);
5513 } 5530 }
5514 5531
5515 5532
5533 void LCodeGen::DoStoreGlobalViaContext(LStoreGlobalViaContext* instr) {
5534 DCHECK(ToRegister(instr->context()).is(cp));
5535 DCHECK(ToRegister(instr->value())
5536 .is(StoreGlobalViaContextDescriptor::ValueRegister()));
5537
5538 __ Mov(StoreGlobalViaContextDescriptor::DepthRegister(),
5539 Operand(Smi::FromInt(instr->depth())));
5540 __ Mov(StoreGlobalViaContextDescriptor::SlotRegister(),
5541 Operand(Smi::FromInt(instr->slot_index())));
5542 __ Mov(StoreGlobalViaContextDescriptor::NameRegister(),
5543 Operand(instr->name()));
5544
5545 Handle<Code> stub =
5546 CodeFactory::StoreGlobalViaContext(isolate(), instr->depth(),
5547 instr->language_mode()).code();
5548 CallCode(stub, RelocInfo::CODE_TARGET, instr);
5549 }
5550
5551
5516 void LCodeGen::DoStringAdd(LStringAdd* instr) { 5552 void LCodeGen::DoStringAdd(LStringAdd* instr) {
5517 DCHECK(ToRegister(instr->context()).is(cp)); 5553 DCHECK(ToRegister(instr->context()).is(cp));
5518 DCHECK(ToRegister(instr->left()).Is(x1)); 5554 DCHECK(ToRegister(instr->left()).Is(x1));
5519 DCHECK(ToRegister(instr->right()).Is(x0)); 5555 DCHECK(ToRegister(instr->right()).Is(x0));
5520 StringAddStub stub(isolate(), 5556 StringAddStub stub(isolate(),
5521 instr->hydrogen()->flags(), 5557 instr->hydrogen()->flags(),
5522 instr->hydrogen()->pretenure_flag()); 5558 instr->hydrogen()->pretenure_flag());
5523 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); 5559 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
5524 } 5560 }
5525 5561
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after
6131 Handle<ScopeInfo> scope_info = instr->scope_info(); 6167 Handle<ScopeInfo> scope_info = instr->scope_info();
6132 __ Push(scope_info); 6168 __ Push(scope_info);
6133 __ Push(ToRegister(instr->function())); 6169 __ Push(ToRegister(instr->function()));
6134 CallRuntime(Runtime::kPushBlockContext, 2, instr); 6170 CallRuntime(Runtime::kPushBlockContext, 2, instr);
6135 RecordSafepoint(Safepoint::kNoLazyDeopt); 6171 RecordSafepoint(Safepoint::kNoLazyDeopt);
6136 } 6172 }
6137 6173
6138 6174
6139 } // namespace internal 6175 } // namespace internal
6140 } // namespace v8 6176 } // namespace v8
OLDNEW
« no previous file with comments | « src/arm64/lithium-arm64.cc ('k') | src/hydrogen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698