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 1956 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1967 __ Push(target, new_target, arguments_list); | 1967 __ Push(target, new_target, arguments_list); |
1968 __ CallRuntime(Runtime::kCreateListFromArrayLike); | 1968 __ CallRuntime(Runtime::kCreateListFromArrayLike); |
1969 __ Pop(new_target, target); | 1969 __ Pop(new_target, target); |
1970 __ Ldrsw(len, UntagSmiFieldMemOperand(arguments_list, | 1970 __ Ldrsw(len, UntagSmiFieldMemOperand(arguments_list, |
1971 FixedArray::kLengthOffset)); | 1971 FixedArray::kLengthOffset)); |
1972 } | 1972 } |
1973 __ B(&done_create); | 1973 __ B(&done_create); |
1974 | 1974 |
1975 // Try to create the list from an arguments object. | 1975 // Try to create the list from an arguments object. |
1976 __ Bind(&create_arguments); | 1976 __ Bind(&create_arguments); |
1977 __ Ldrsw(len, UntagSmiFieldMemOperand( | 1977 __ Ldrsw(len, UntagSmiFieldMemOperand(arguments_list, |
1978 arguments_list, | 1978 JSArgumentsObject::kLengthOffset)); |
1979 JSObject::kHeaderSize + | |
1980 Heap::kArgumentsLengthIndex * kPointerSize)); | |
1981 __ Ldr(x10, FieldMemOperand(arguments_list, JSObject::kElementsOffset)); | 1979 __ Ldr(x10, FieldMemOperand(arguments_list, JSObject::kElementsOffset)); |
1982 __ Ldrsw(x11, UntagSmiFieldMemOperand(x10, FixedArray::kLengthOffset)); | 1980 __ Ldrsw(x11, UntagSmiFieldMemOperand(x10, FixedArray::kLengthOffset)); |
1983 __ CompareAndBranch(len, x11, ne, &create_runtime); | 1981 __ CompareAndBranch(len, x11, ne, &create_runtime); |
1984 __ Mov(args, x10); | 1982 __ Mov(args, x10); |
1985 __ B(&done_create); | 1983 __ B(&done_create); |
1986 | 1984 |
1987 // Try to create the list from a JSArray object. | 1985 // Try to create the list from a JSArray object. |
1988 __ Bind(&create_array); | 1986 __ Bind(&create_array); |
1989 __ Ldr(x10, FieldMemOperand(arguments_list_map, Map::kBitField2Offset)); | 1987 __ Ldr(x10, FieldMemOperand(arguments_list_map, Map::kBitField2Offset)); |
1990 __ DecodeField<Map::ElementsKindBits>(x10); | 1988 __ DecodeField<Map::ElementsKindBits>(x10); |
(...skipping 825 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2816 } | 2814 } |
2817 } | 2815 } |
2818 | 2816 |
2819 | 2817 |
2820 #undef __ | 2818 #undef __ |
2821 | 2819 |
2822 } // namespace internal | 2820 } // namespace internal |
2823 } // namespace v8 | 2821 } // namespace v8 |
2824 | 2822 |
2825 #endif // V8_TARGET_ARCH_ARM | 2823 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |