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/bootstrapper.h" | 7 #include "src/bootstrapper.h" |
8 #include "src/code-stubs.h" | 8 #include "src/code-stubs.h" |
9 #include "src/codegen.h" | 9 #include "src/codegen.h" |
10 #include "src/ic/handler-compiler.h" | 10 #include "src/ic/handler-compiler.h" |
(...skipping 5175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5186 __ JumpIfObjectType(x10, x10, x11, MAP_TYPE, &map_ok); | 5186 __ JumpIfObjectType(x10, x10, x11, MAP_TYPE, &map_ok); |
5187 __ Bind(&unexpected_map); | 5187 __ Bind(&unexpected_map); |
5188 __ Abort(kUnexpectedInitialMapForArrayFunction); | 5188 __ Abort(kUnexpectedInitialMapForArrayFunction); |
5189 __ Bind(&map_ok); | 5189 __ Bind(&map_ok); |
5190 | 5190 |
5191 // We should either have undefined in the allocation_site register or a | 5191 // We should either have undefined in the allocation_site register or a |
5192 // valid AllocationSite. | 5192 // valid AllocationSite. |
5193 __ AssertUndefinedOrAllocationSite(allocation_site, x10); | 5193 __ AssertUndefinedOrAllocationSite(allocation_site, x10); |
5194 } | 5194 } |
5195 | 5195 |
| 5196 // Enter the context of the Array function. |
| 5197 __ Ldr(cp, FieldMemOperand(x1, JSFunction::kContextOffset)); |
| 5198 |
5196 Label subclassing; | 5199 Label subclassing; |
5197 __ Cmp(new_target, constructor); | 5200 __ Cmp(new_target, constructor); |
5198 __ B(ne, &subclassing); | 5201 __ B(ne, &subclassing); |
5199 | 5202 |
5200 Register kind = x3; | 5203 Register kind = x3; |
5201 Label no_info; | 5204 Label no_info; |
5202 // Get the elements kind and case on that. | 5205 // Get the elements kind and case on that. |
5203 __ JumpIfRoot(allocation_site, Heap::kUndefinedValueRootIndex, &no_info); | 5206 __ JumpIfRoot(allocation_site, Heap::kUndefinedValueRootIndex, &no_info); |
5204 | 5207 |
5205 __ Ldrsw(kind, | 5208 __ Ldrsw(kind, |
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5813 MemOperand(fp, 6 * kPointerSize), NULL); | 5816 MemOperand(fp, 6 * kPointerSize), NULL); |
5814 } | 5817 } |
5815 | 5818 |
5816 | 5819 |
5817 #undef __ | 5820 #undef __ |
5818 | 5821 |
5819 } // namespace internal | 5822 } // namespace internal |
5820 } // namespace v8 | 5823 } // namespace v8 |
5821 | 5824 |
5822 #endif // V8_TARGET_ARCH_ARM64 | 5825 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |