| 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 #if V8_TARGET_ARCH_ARM64 | 5 #if V8_TARGET_ARCH_ARM64 |
| 6 | 6 |
| 7 #include "src/arm64/frames-arm64.h" | 7 #include "src/arm64/frames-arm64.h" |
| 8 #include "src/codegen.h" | 8 #include "src/codegen.h" |
| 9 #include "src/debug/debug.h" | 9 #include "src/debug/debug.h" |
| 10 #include "src/deoptimizer.h" | 10 #include "src/deoptimizer.h" |
| (...skipping 1416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1427 __ CompareObjectType(type, x16, x17, FUNCTION_TEMPLATE_INFO_TYPE); | 1427 __ CompareObjectType(type, x16, x17, FUNCTION_TEMPLATE_INFO_TYPE); |
| 1428 __ B(ne, &next_prototype); | 1428 __ B(ne, &next_prototype); |
| 1429 | 1429 |
| 1430 // Otherwise load the parent function template and iterate. | 1430 // Otherwise load the parent function template and iterate. |
| 1431 __ Ldr(type, | 1431 __ Ldr(type, |
| 1432 FieldMemOperand(type, FunctionTemplateInfo::kParentTemplateOffset)); | 1432 FieldMemOperand(type, FunctionTemplateInfo::kParentTemplateOffset)); |
| 1433 __ B(&function_template_loop); | 1433 __ B(&function_template_loop); |
| 1434 | 1434 |
| 1435 // Load the next prototype. | 1435 // Load the next prototype. |
| 1436 __ Bind(&next_prototype); | 1436 __ Bind(&next_prototype); |
| 1437 __ Ldr(x16, FieldMemOperand(map, Map::kBitField3Offset)); |
| 1438 __ Tst(x16, Operand(Map::HasHiddenPrototype::kMask)); |
| 1439 __ B(eq, receiver_check_failed); |
| 1437 __ Ldr(receiver, FieldMemOperand(map, Map::kPrototypeOffset)); | 1440 __ Ldr(receiver, FieldMemOperand(map, Map::kPrototypeOffset)); |
| 1438 // End if the prototype is null or not hidden. | |
| 1439 __ CompareRoot(receiver, Heap::kNullValueRootIndex); | |
| 1440 __ B(eq, receiver_check_failed); | |
| 1441 __ Ldr(map, FieldMemOperand(receiver, HeapObject::kMapOffset)); | 1441 __ Ldr(map, FieldMemOperand(receiver, HeapObject::kMapOffset)); |
| 1442 __ Ldr(x16, FieldMemOperand(map, Map::kBitField3Offset)); | |
| 1443 __ Tst(x16, Operand(Map::IsHiddenPrototype::kMask)); | |
| 1444 __ B(eq, receiver_check_failed); | |
| 1445 // Iterate. | 1442 // Iterate. |
| 1446 __ B(&prototype_loop_start); | 1443 __ B(&prototype_loop_start); |
| 1447 | 1444 |
| 1448 __ Bind(&receiver_check_passed); | 1445 __ Bind(&receiver_check_passed); |
| 1449 } | 1446 } |
| 1450 | 1447 |
| 1451 | 1448 |
| 1452 void Builtins::Generate_HandleFastApiCall(MacroAssembler* masm) { | 1449 void Builtins::Generate_HandleFastApiCall(MacroAssembler* masm) { |
| 1453 // ----------- S t a t e ------------- | 1450 // ----------- S t a t e ------------- |
| 1454 // -- x0 : number of arguments excluding receiver | 1451 // -- x0 : number of arguments excluding receiver |
| (...skipping 1368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2823 } | 2820 } |
| 2824 } | 2821 } |
| 2825 | 2822 |
| 2826 | 2823 |
| 2827 #undef __ | 2824 #undef __ |
| 2828 | 2825 |
| 2829 } // namespace internal | 2826 } // namespace internal |
| 2830 } // namespace v8 | 2827 } // namespace v8 |
| 2831 | 2828 |
| 2832 #endif // V8_TARGET_ARCH_ARM | 2829 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |