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 1788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1799 // x4 mapped_params number of mapped parameters, min(params, args) | 1799 // x4 mapped_params number of mapped parameters, min(params, args) |
1800 // x7 param_count number of function parameters | 1800 // x7 param_count number of function parameters |
1801 // x11 sloppy_args_map offset to args (or aliased args) map (uninit) | 1801 // x11 sloppy_args_map offset to args (or aliased args) map (uninit) |
1802 // x14 arg_count number of function arguments | 1802 // x14 arg_count number of function arguments |
1803 | 1803 |
1804 Register global_object = x10; | 1804 Register global_object = x10; |
1805 Register global_ctx = x10; | 1805 Register global_ctx = x10; |
1806 Register sloppy_args_map = x11; | 1806 Register sloppy_args_map = x11; |
1807 Register aliased_args_map = x10; | 1807 Register aliased_args_map = x10; |
1808 __ Ldr(global_object, GlobalObjectMemOperand()); | 1808 __ Ldr(global_object, GlobalObjectMemOperand()); |
1809 __ Ldr(global_ctx, FieldMemOperand(global_object, | 1809 __ Ldr(global_ctx, |
1810 GlobalObject::kNativeContextOffset)); | 1810 FieldMemOperand(global_object, JSGlobalObject::kNativeContextOffset)); |
1811 | 1811 |
1812 __ Ldr(sloppy_args_map, | 1812 __ Ldr(sloppy_args_map, |
1813 ContextMemOperand(global_ctx, Context::SLOPPY_ARGUMENTS_MAP_INDEX)); | 1813 ContextMemOperand(global_ctx, Context::SLOPPY_ARGUMENTS_MAP_INDEX)); |
1814 __ Ldr( | 1814 __ Ldr( |
1815 aliased_args_map, | 1815 aliased_args_map, |
1816 ContextMemOperand(global_ctx, Context::FAST_ALIASED_ARGUMENTS_MAP_INDEX)); | 1816 ContextMemOperand(global_ctx, Context::FAST_ALIASED_ARGUMENTS_MAP_INDEX)); |
1817 __ Cmp(mapped_params, 0); | 1817 __ Cmp(mapped_params, 0); |
1818 __ CmovX(sloppy_args_map, aliased_args_map, ne); | 1818 __ CmovX(sloppy_args_map, aliased_args_map, ne); |
1819 | 1819 |
1820 // Copy the JS object part. | 1820 // Copy the JS object part. |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2044 // be returned to the caller. | 2044 // be returned to the caller. |
2045 Register alloc_obj = x0; | 2045 Register alloc_obj = x0; |
2046 __ Allocate(size, alloc_obj, x11, x12, &runtime, | 2046 __ Allocate(size, alloc_obj, x11, x12, &runtime, |
2047 static_cast<AllocationFlags>(TAG_OBJECT | SIZE_IN_WORDS)); | 2047 static_cast<AllocationFlags>(TAG_OBJECT | SIZE_IN_WORDS)); |
2048 | 2048 |
2049 // Get the arguments boilerplate from the current (native) context. | 2049 // Get the arguments boilerplate from the current (native) context. |
2050 Register global_object = x10; | 2050 Register global_object = x10; |
2051 Register global_ctx = x10; | 2051 Register global_ctx = x10; |
2052 Register strict_args_map = x4; | 2052 Register strict_args_map = x4; |
2053 __ Ldr(global_object, GlobalObjectMemOperand()); | 2053 __ Ldr(global_object, GlobalObjectMemOperand()); |
2054 __ Ldr(global_ctx, FieldMemOperand(global_object, | 2054 __ Ldr(global_ctx, |
2055 GlobalObject::kNativeContextOffset)); | 2055 FieldMemOperand(global_object, JSGlobalObject::kNativeContextOffset)); |
2056 __ Ldr(strict_args_map, | 2056 __ Ldr(strict_args_map, |
2057 ContextMemOperand(global_ctx, Context::STRICT_ARGUMENTS_MAP_INDEX)); | 2057 ContextMemOperand(global_ctx, Context::STRICT_ARGUMENTS_MAP_INDEX)); |
2058 | 2058 |
2059 // x0 alloc_obj pointer to allocated objects: parameter array and | 2059 // x0 alloc_obj pointer to allocated objects: parameter array and |
2060 // arguments object | 2060 // arguments object |
2061 // x1 function function pointer | 2061 // x1 function function pointer |
2062 // x2 param_count_smi number of parameters passed to function (smi) | 2062 // x2 param_count_smi number of parameters passed to function (smi) |
2063 // x3 params pointer to parameters | 2063 // x3 params pointer to parameters |
2064 // x4 strict_args_map offset to arguments map | 2064 // x4 strict_args_map offset to arguments map |
2065 // x13 param_count number of parameters passed to function | 2065 // x13 param_count number of parameters passed to function |
(...skipping 3938 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6004 MemOperand(fp, 6 * kPointerSize), NULL); | 6004 MemOperand(fp, 6 * kPointerSize), NULL); |
6005 } | 6005 } |
6006 | 6006 |
6007 | 6007 |
6008 #undef __ | 6008 #undef __ |
6009 | 6009 |
6010 } // namespace internal | 6010 } // namespace internal |
6011 } // namespace v8 | 6011 } // namespace v8 |
6012 | 6012 |
6013 #endif // V8_TARGET_ARCH_ARM64 | 6013 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |