| 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 |