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/ic/arm/handler-compiler-arm.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/ia32/interface-descriptors-ia32.cc ('k') | src/ic/arm64/handler-compiler-arm64.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 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_ARM 5 #if V8_TARGET_ARCH_ARM
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"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 // Restore context register. 104 // Restore context register.
105 __ pop(cp); 105 __ pop(cp);
106 } 106 }
107 __ Ret(); 107 __ Ret();
108 } 108 }
109 109
110 110
111 void PropertyHandlerCompiler::PushVectorAndSlot(Register vector, 111 void PropertyHandlerCompiler::PushVectorAndSlot(Register vector,
112 Register slot) { 112 Register slot) {
113 MacroAssembler* masm = this->masm(); 113 MacroAssembler* masm = this->masm();
114 STATIC_ASSERT(LoadWithVectorDescriptor::kSlot <
115 LoadWithVectorDescriptor::kVector);
116 STATIC_ASSERT(StoreWithVectorDescriptor::kSlot <
117 StoreWithVectorDescriptor::kVector);
118 STATIC_ASSERT(StoreTransitionDescriptor::kSlot <
119 StoreTransitionDescriptor::kVector);
120 __ push(slot);
114 __ push(vector); 121 __ push(vector);
115 __ push(slot);
116 } 122 }
117 123
118 124
119 void PropertyHandlerCompiler::PopVectorAndSlot(Register vector, Register slot) { 125 void PropertyHandlerCompiler::PopVectorAndSlot(Register vector, Register slot) {
120 MacroAssembler* masm = this->masm(); 126 MacroAssembler* masm = this->masm();
127 __ pop(vector);
121 __ pop(slot); 128 __ pop(slot);
122 __ pop(vector);
123 } 129 }
124 130
125 131
126 void PropertyHandlerCompiler::DiscardVectorAndSlot() { 132 void PropertyHandlerCompiler::DiscardVectorAndSlot() {
127 MacroAssembler* masm = this->masm(); 133 MacroAssembler* masm = this->masm();
128 // Remove vector and slot. 134 // Remove vector and slot.
129 __ add(sp, sp, Operand(2 * kPointerSize)); 135 __ add(sp, sp, Operand(2 * kPointerSize));
130 } 136 }
131 137
138 void PropertyHandlerCompiler::PushReturnAddress(Register tmp) { UNREACHABLE(); }
139
140 void PropertyHandlerCompiler::PopReturnAddress(Register tmp) { UNREACHABLE(); }
132 141
133 void PropertyHandlerCompiler::GenerateDictionaryNegativeLookup( 142 void PropertyHandlerCompiler::GenerateDictionaryNegativeLookup(
134 MacroAssembler* masm, Label* miss_label, Register receiver, 143 MacroAssembler* masm, Label* miss_label, Register receiver,
135 Handle<Name> name, Register scratch0, Register scratch1) { 144 Handle<Name> name, Register scratch0, Register scratch1) {
136 DCHECK(name->IsUniqueName()); 145 DCHECK(name->IsUniqueName());
137 DCHECK(!receiver.is(scratch0)); 146 DCHECK(!receiver.is(scratch0));
138 Counters* counters = masm->isolate()->counters(); 147 Counters* counters = masm->isolate()->counters();
139 __ IncrementCounter(counters->negative_lookups(), 1, scratch0, scratch1); 148 __ IncrementCounter(counters->negative_lookups(), 1, scratch0, scratch1);
140 __ IncrementCounter(counters->negative_lookups_miss(), 1, scratch0, scratch1); 149 __ IncrementCounter(counters->negative_lookups_miss(), 1, scratch0, scratch1);
141 150
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 __ mov(this->name(), Operand(name)); 368 __ mov(this->name(), Operand(name));
360 } 369 }
361 } 370 }
362 371
363 372
364 void NamedStoreHandlerCompiler::GenerateRestoreName(Handle<Name> name) { 373 void NamedStoreHandlerCompiler::GenerateRestoreName(Handle<Name> name) {
365 __ mov(this->name(), Operand(name)); 374 __ mov(this->name(), Operand(name));
366 } 375 }
367 376
368 377
369 void NamedStoreHandlerCompiler::RearrangeVectorAndSlot(
370 Register current_map, Register destination_map) {
371 DCHECK(false); // Not implemented.
372 }
373
374
375 void NamedStoreHandlerCompiler::GenerateRestoreMap(Handle<Map> transition, 378 void NamedStoreHandlerCompiler::GenerateRestoreMap(Handle<Map> transition,
376 Register map_reg, 379 Register map_reg,
377 Register scratch, 380 Register scratch,
378 Label* miss) { 381 Label* miss) {
379 Handle<WeakCell> cell = Map::WeakCellForMap(transition); 382 Handle<WeakCell> cell = Map::WeakCellForMap(transition);
380 DCHECK(!map_reg.is(scratch)); 383 DCHECK(!map_reg.is(scratch));
381 __ LoadWeakValue(map_reg, cell, miss); 384 __ LoadWeakValue(map_reg, cell, miss);
382 if (transition->CanBeDeprecated()) { 385 if (transition->CanBeDeprecated()) {
383 __ ldr(scratch, FieldMemOperand(map_reg, Map::kBitField3Offset)); 386 __ ldr(scratch, FieldMemOperand(map_reg, Map::kBitField3Offset));
384 __ tst(scratch, Operand(Map::Deprecated::kMask)); 387 __ tst(scratch, Operand(Map::Deprecated::kMask));
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 // Return the generated code. 700 // Return the generated code.
698 return GetCode(kind(), name); 701 return GetCode(kind(), name);
699 } 702 }
700 703
701 704
702 #undef __ 705 #undef __
703 } // namespace internal 706 } // namespace internal
704 } // namespace v8 707 } // namespace v8
705 708
706 #endif // V8_TARGET_ARCH_ARM 709 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « src/ia32/interface-descriptors-ia32.cc ('k') | src/ic/arm64/handler-compiler-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698