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

Side by Side Diff: src/arm64/stub-cache-arm64.cc

Issue 424743002: Clean up name distinction between Keyed ICs and Element Handlers (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « src/arm64/macro-assembler-arm64.cc ('k') | src/code-stubs.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 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 #if V8_TARGET_ARCH_ARM64 7 #if V8_TARGET_ARCH_ARM64
8 8
9 #include "src/codegen.h" 9 #include "src/codegen.h"
10 #include "src/ic-inl.h" 10 #include "src/ic-inl.h"
(...skipping 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 1099
1100 Handle<Code> NamedStoreHandlerCompiler::CompileStoreInterceptor( 1100 Handle<Code> NamedStoreHandlerCompiler::CompileStoreInterceptor(
1101 Handle<JSObject> object, Handle<Name> name) { 1101 Handle<JSObject> object, Handle<Name> name) {
1102 Label miss; 1102 Label miss;
1103 1103
1104 ASM_LOCATION("NamedStoreHandlerCompiler::CompileStoreInterceptor"); 1104 ASM_LOCATION("NamedStoreHandlerCompiler::CompileStoreInterceptor");
1105 1105
1106 __ Push(receiver(), this->name(), value()); 1106 __ Push(receiver(), this->name(), value());
1107 1107
1108 // Do tail-call to the runtime system. 1108 // Do tail-call to the runtime system.
1109 ExternalReference store_ic_property = 1109 ExternalReference store_ic_property = ExternalReference(
1110 ExternalReference(IC_Utility(IC::kStoreInterceptorProperty), isolate()); 1110 IC_Utility(IC::kStorePropertyWithInterceptor), isolate());
1111 __ TailCallExternalReference(store_ic_property, 3, 1); 1111 __ TailCallExternalReference(store_ic_property, 3, 1);
1112 1112
1113 // Return the generated code. 1113 // Return the generated code.
1114 return GetCode(kind(), Code::FAST, name); 1114 return GetCode(kind(), Code::FAST, name);
1115 } 1115 }
1116 1116
1117 1117
1118 Handle<Code> NamedLoadHandlerCompiler::CompileLoadNonexistent( 1118 Handle<Code> NamedLoadHandlerCompiler::CompileLoadNonexistent(
1119 Handle<HeapType> type, Handle<JSObject> last, Handle<Name> name) { 1119 Handle<HeapType> type, Handle<JSObject> last, Handle<Name> name) {
1120 NonexistentFrontend(type, last, name); 1120 NonexistentFrontend(type, last, name);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
1287 // Prepare tail call to StoreIC_ArrayLength. 1287 // Prepare tail call to StoreIC_ArrayLength.
1288 __ Push(receiver(), value()); 1288 __ Push(receiver(), value());
1289 1289
1290 ExternalReference ref = 1290 ExternalReference ref =
1291 ExternalReference(IC_Utility(IC::kStoreIC_ArrayLength), 1291 ExternalReference(IC_Utility(IC::kStoreIC_ArrayLength),
1292 masm()->isolate()); 1292 masm()->isolate());
1293 __ TailCallExternalReference(ref, 2, 1); 1293 __ TailCallExternalReference(ref, 2, 1);
1294 } 1294 }
1295 1295
1296 1296
1297 Handle<Code> PropertyICCompiler::CompileIndexedStorePolymorphic( 1297 Handle<Code> PropertyICCompiler::CompileKeyedStorePolymorphic(
1298 MapHandleList* receiver_maps, CodeHandleList* handler_stubs, 1298 MapHandleList* receiver_maps, CodeHandleList* handler_stubs,
1299 MapHandleList* transitioned_maps) { 1299 MapHandleList* transitioned_maps) {
1300 Label miss; 1300 Label miss;
1301 1301
1302 ASM_LOCATION("PropertyICCompiler::CompileStorePolymorphic"); 1302 ASM_LOCATION("PropertyICCompiler::CompileStorePolymorphic");
1303 1303
1304 __ JumpIfSmi(receiver(), &miss); 1304 __ JumpIfSmi(receiver(), &miss);
1305 1305
1306 int receiver_count = receiver_maps->length(); 1306 int receiver_count = receiver_maps->length();
1307 __ Ldr(scratch1(), FieldMemOperand(receiver(), HeapObject::kMapOffset)); 1307 __ Ldr(scratch1(), FieldMemOperand(receiver(), HeapObject::kMapOffset));
(...skipping 14 matching lines...) Expand all
1322 __ Bind(&miss); 1322 __ Bind(&miss);
1323 TailCallBuiltin(masm(), MissBuiltin(kind())); 1323 TailCallBuiltin(masm(), MissBuiltin(kind()));
1324 1324
1325 return GetCode(kind(), Code::NORMAL, factory()->empty_string(), POLYMORPHIC); 1325 return GetCode(kind(), Code::NORMAL, factory()->empty_string(), POLYMORPHIC);
1326 } 1326 }
1327 1327
1328 1328
1329 #undef __ 1329 #undef __
1330 #define __ ACCESS_MASM(masm) 1330 #define __ ACCESS_MASM(masm)
1331 1331
1332 void IndexedHandlerCompiler::GenerateLoadDictionaryElement( 1332 void ElementHandlerCompiler::GenerateLoadDictionaryElement(
1333 MacroAssembler* masm) { 1333 MacroAssembler* masm) {
1334 // The return address is in lr. 1334 // The return address is in lr.
1335 Label slow, miss; 1335 Label slow, miss;
1336 1336
1337 Register result = x0; 1337 Register result = x0;
1338 Register key = LoadIC::NameRegister(); 1338 Register key = LoadIC::NameRegister();
1339 Register receiver = LoadIC::ReceiverRegister(); 1339 Register receiver = LoadIC::ReceiverRegister();
1340 ASSERT(receiver.is(x1)); 1340 ASSERT(receiver.is(x1));
1341 ASSERT(key.is(x2)); 1341 ASSERT(key.is(x2));
1342 1342
1343 __ JumpIfNotSmi(key, &miss); 1343 __ JumpIfNotSmi(key, &miss);
1344 __ Ldr(x4, FieldMemOperand(receiver, JSObject::kElementsOffset)); 1344 __ Ldr(x4, FieldMemOperand(receiver, JSObject::kElementsOffset));
1345 __ LoadFromNumberDictionary(&slow, x4, key, result, x7, x3, x5, x6); 1345 __ LoadFromNumberDictionary(&slow, x4, key, result, x7, x3, x5, x6);
1346 __ Ret(); 1346 __ Ret();
1347 1347
1348 __ Bind(&slow); 1348 __ Bind(&slow);
1349 __ IncrementCounter( 1349 __ IncrementCounter(
1350 masm->isolate()->counters()->keyed_load_external_array_slow(), 1, x4, x3); 1350 masm->isolate()->counters()->keyed_load_external_array_slow(), 1, x4, x3);
1351 TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow); 1351 TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow);
1352 1352
1353 // Miss case, call the runtime. 1353 // Miss case, call the runtime.
1354 __ Bind(&miss); 1354 __ Bind(&miss);
1355 TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss); 1355 TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss);
1356 } 1356 }
1357 1357
1358 1358
1359 } } // namespace v8::internal 1359 } } // namespace v8::internal
1360 1360
1361 #endif // V8_TARGET_ARCH_ARM64 1361 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm64/macro-assembler-arm64.cc ('k') | src/code-stubs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698