| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |