Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1334)

Side by Side Diff: src/arm64/code-stubs-arm64.cc

Issue 1126783003: Handle the case when derived constructor is [[Call]]ed with 0 args. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/arm/code-stubs-arm.cc ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_ARM64 7 #if V8_TARGET_ARCH_ARM64
8 8
9 #include "src/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 2066 matching lines...) Expand 10 before | Expand all | Expand 10 after
2077 // x3 function function pointer 2077 // x3 function function pointer
2078 // x11 caller_fp caller's frame pointer 2078 // x11 caller_fp caller's frame pointer
2079 // x13 param_count number of parameters passed to function 2079 // x13 param_count number of parameters passed to function
2080 2080
2081 // Patch the argument length and parameters pointer. 2081 // Patch the argument length and parameters pointer.
2082 __ Ldr(param_count_smi, 2082 __ Ldr(param_count_smi,
2083 MemOperand(caller_fp, 2083 MemOperand(caller_fp,
2084 ArgumentsAdaptorFrameConstants::kLengthOffset)); 2084 ArgumentsAdaptorFrameConstants::kLengthOffset));
2085 __ SmiUntag(param_count, param_count_smi); 2085 __ SmiUntag(param_count, param_count_smi);
2086 if (has_new_target()) { 2086 if (has_new_target()) {
2087 __ Cmp(param_count, Operand(0));
2088 Label skip_decrement;
2089 __ B(eq, &skip_decrement);
2087 // Skip new.target: it is not a part of arguments. 2090 // Skip new.target: it is not a part of arguments.
2088 __ Sub(param_count, param_count, Operand(1)); 2091 __ Sub(param_count, param_count, Operand(1));
2089 __ SmiTag(param_count_smi, param_count); 2092 __ SmiTag(param_count_smi, param_count);
2093 __ Bind(&skip_decrement);
2090 } 2094 }
2091 __ Add(x10, caller_fp, Operand(param_count, LSL, kPointerSizeLog2)); 2095 __ Add(x10, caller_fp, Operand(param_count, LSL, kPointerSizeLog2));
2092 __ Add(params, x10, StandardFrameConstants::kCallerSPOffset); 2096 __ Add(params, x10, StandardFrameConstants::kCallerSPOffset);
2093 2097
2094 // Try the new space allocation. Start out with computing the size of the 2098 // Try the new space allocation. Start out with computing the size of the
2095 // arguments object and the elements array in words. 2099 // arguments object and the elements array in words.
2096 Register size = x10; 2100 Register size = x10;
2097 __ Bind(&try_allocate); 2101 __ Bind(&try_allocate);
2098 __ Add(size, param_count, FixedArray::kHeaderSize / kPointerSize); 2102 __ Add(size, param_count, FixedArray::kHeaderSize / kPointerSize);
2099 __ Cmp(param_count, 0); 2103 __ Cmp(param_count, 0);
(...skipping 3653 matching lines...) Expand 10 before | Expand all | Expand 10 after
5753 kStackUnwindSpace, NULL, spill_offset, 5757 kStackUnwindSpace, NULL, spill_offset,
5754 MemOperand(fp, 6 * kPointerSize), NULL); 5758 MemOperand(fp, 6 * kPointerSize), NULL);
5755 } 5759 }
5756 5760
5757 5761
5758 #undef __ 5762 #undef __
5759 5763
5760 } } // namespace v8::internal 5764 } } // namespace v8::internal
5761 5765
5762 #endif // V8_TARGET_ARCH_ARM64 5766 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm/code-stubs-arm.cc ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698