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

Side by Side Diff: src/ic/arm64/handler-compiler-arm64.cc

Issue 2313093002: [stubs] Port StoreTransitionStub and ElementsTransitionAndStoreStub to TurboFan. (Closed)
Patch Set: Addressing comments Created 4 years, 3 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/ic/arm/handler-compiler-arm.cc ('k') | src/ic/handler-compiler.h » ('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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 #if V8_TARGET_ARCH_ARM64 5 #if V8_TARGET_ARCH_ARM64
6 6
7 #include "src/ic/handler-compiler.h" 7 #include "src/ic/handler-compiler.h"
8 8
9 #include "src/api-arguments.h" 9 #include "src/api-arguments.h"
10 #include "src/field-type.h" 10 #include "src/field-type.h"
11 #include "src/ic/call-optimization.h" 11 #include "src/ic/call-optimization.h"
12 #include "src/ic/ic.h" 12 #include "src/ic/ic.h"
13 #include "src/isolate-inl.h" 13 #include "src/isolate-inl.h"
14 14
15 namespace v8 { 15 namespace v8 {
16 namespace internal { 16 namespace internal {
17 17
18 #define __ ACCESS_MASM(masm) 18 #define __ ACCESS_MASM(masm)
19 19
20 void PropertyHandlerCompiler::PushVectorAndSlot(Register vector, 20 void PropertyHandlerCompiler::PushVectorAndSlot(Register vector,
21 Register slot) { 21 Register slot) {
22 MacroAssembler* masm = this->masm(); 22 MacroAssembler* masm = this->masm();
23 STATIC_ASSERT(LoadWithVectorDescriptor::kSlot <
24 LoadWithVectorDescriptor::kVector);
25 STATIC_ASSERT(StoreWithVectorDescriptor::kSlot <
26 StoreWithVectorDescriptor::kVector);
27 STATIC_ASSERT(StoreTransitionDescriptor::kSlot <
28 StoreTransitionDescriptor::kVector);
29 __ Push(slot);
23 __ Push(vector); 30 __ Push(vector);
24 __ Push(slot);
25 } 31 }
26 32
27 33
28 void PropertyHandlerCompiler::PopVectorAndSlot(Register vector, Register slot) { 34 void PropertyHandlerCompiler::PopVectorAndSlot(Register vector, Register slot) {
29 MacroAssembler* masm = this->masm(); 35 MacroAssembler* masm = this->masm();
36 __ Pop(vector);
30 __ Pop(slot); 37 __ Pop(slot);
31 __ Pop(vector);
32 } 38 }
33 39
34 40
35 void PropertyHandlerCompiler::DiscardVectorAndSlot() { 41 void PropertyHandlerCompiler::DiscardVectorAndSlot() {
36 MacroAssembler* masm = this->masm(); 42 MacroAssembler* masm = this->masm();
37 // Remove vector and slot. 43 // Remove vector and slot.
38 __ Drop(2); 44 __ Drop(2);
39 } 45 }
40 46
47 void PropertyHandlerCompiler::PushReturnAddress(Register tmp) { UNREACHABLE(); }
48
49 void PropertyHandlerCompiler::PopReturnAddress(Register tmp) { UNREACHABLE(); }
41 50
42 void PropertyHandlerCompiler::GenerateDictionaryNegativeLookup( 51 void PropertyHandlerCompiler::GenerateDictionaryNegativeLookup(
43 MacroAssembler* masm, Label* miss_label, Register receiver, 52 MacroAssembler* masm, Label* miss_label, Register receiver,
44 Handle<Name> name, Register scratch0, Register scratch1) { 53 Handle<Name> name, Register scratch0, Register scratch1) {
45 DCHECK(!AreAliased(receiver, scratch0, scratch1)); 54 DCHECK(!AreAliased(receiver, scratch0, scratch1));
46 DCHECK(name->IsUniqueName()); 55 DCHECK(name->IsUniqueName());
47 Counters* counters = masm->isolate()->counters(); 56 Counters* counters = masm->isolate()->counters();
48 __ IncrementCounter(counters->negative_lookups(), 1, scratch0, scratch1); 57 __ IncrementCounter(counters->negative_lookups(), 1, scratch0, scratch1);
49 __ IncrementCounter(counters->negative_lookups_miss(), 1, scratch0, scratch1); 58 __ IncrementCounter(counters->negative_lookups_miss(), 1, scratch0, scratch1);
50 59
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 __ Mov(this->name(), Operand(name)); 400 __ Mov(this->name(), Operand(name));
392 } 401 }
393 } 402 }
394 403
395 404
396 void NamedStoreHandlerCompiler::GenerateRestoreName(Handle<Name> name) { 405 void NamedStoreHandlerCompiler::GenerateRestoreName(Handle<Name> name) {
397 __ Mov(this->name(), Operand(name)); 406 __ Mov(this->name(), Operand(name));
398 } 407 }
399 408
400 409
401 void NamedStoreHandlerCompiler::RearrangeVectorAndSlot(
402 Register current_map, Register destination_map) {
403 DCHECK(false); // Not implemented.
404 }
405
406
407 void NamedStoreHandlerCompiler::GenerateRestoreMap(Handle<Map> transition, 410 void NamedStoreHandlerCompiler::GenerateRestoreMap(Handle<Map> transition,
408 Register map_reg, 411 Register map_reg,
409 Register scratch, 412 Register scratch,
410 Label* miss) { 413 Label* miss) {
411 Handle<WeakCell> cell = Map::WeakCellForMap(transition); 414 Handle<WeakCell> cell = Map::WeakCellForMap(transition);
412 DCHECK(!map_reg.is(scratch)); 415 DCHECK(!map_reg.is(scratch));
413 __ LoadWeakValue(map_reg, cell, miss); 416 __ LoadWeakValue(map_reg, cell, miss);
414 if (transition->CanBeDeprecated()) { 417 if (transition->CanBeDeprecated()) {
415 __ Ldrsw(scratch, FieldMemOperand(map_reg, Map::kBitField3Offset)); 418 __ Ldrsw(scratch, FieldMemOperand(map_reg, Map::kBitField3Offset));
416 __ TestAndBranchIfAnySet(scratch, Map::Deprecated::kMask, miss); 419 __ TestAndBranchIfAnySet(scratch, Map::Deprecated::kMask, miss);
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 // Return the generated code. 698 // Return the generated code.
696 return GetCode(kind(), name); 699 return GetCode(kind(), name);
697 } 700 }
698 701
699 702
700 #undef __ 703 #undef __
701 } // namespace internal 704 } // namespace internal
702 } // namespace v8 705 } // namespace v8
703 706
704 #endif // V8_TARGET_ARCH_IA32 707 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « src/ic/arm/handler-compiler-arm.cc ('k') | src/ic/handler-compiler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698