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

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

Issue 2090723005: [builtins] New frame type for exits to C++ builtins (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 6 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
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 #if V8_TARGET_ARCH_ARM64 5 #if V8_TARGET_ARCH_ARM64
6 6
7 #include "src/code-stubs.h" 7 #include "src/code-stubs.h"
8 #include "src/api-arguments.h" 8 #include "src/api-arguments.h"
9 #include "src/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 1032 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 // - Adjust for the receiver. 1043 // - Adjust for the receiver.
1044 __ Sub(temp_argv, temp_argv, 1 * kPointerSize); 1044 __ Sub(temp_argv, temp_argv, 1 * kPointerSize);
1045 } 1045 }
1046 1046
1047 // Reserve three slots to preserve x21-x23 callee-saved registers. If the 1047 // Reserve three slots to preserve x21-x23 callee-saved registers. If the
1048 // result size is too large to be returned in registers then also reserve 1048 // result size is too large to be returned in registers then also reserve
1049 // space for the return value. 1049 // space for the return value.
1050 int extra_stack_space = 3 + (result_size() <= 2 ? 0 : result_size()); 1050 int extra_stack_space = 3 + (result_size() <= 2 ? 0 : result_size());
1051 // Enter the exit frame. 1051 // Enter the exit frame.
1052 FrameScope scope(masm, StackFrame::MANUAL); 1052 FrameScope scope(masm, StackFrame::MANUAL);
1053 __ EnterExitFrame(save_doubles(), x10, extra_stack_space); 1053 __ EnterExitFrame(
1054 save_doubles(), x10, extra_stack_space,
1055 is_builtin_exit() ? StackFrame::BUILTIN_EXIT : StackFrame::EXIT);
1054 DCHECK(csp.Is(__ StackPointer())); 1056 DCHECK(csp.Is(__ StackPointer()));
1055 1057
1056 // Poke callee-saved registers into reserved space. 1058 // Poke callee-saved registers into reserved space.
1057 __ Poke(argv, 1 * kPointerSize); 1059 __ Poke(argv, 1 * kPointerSize);
1058 __ Poke(argc, 2 * kPointerSize); 1060 __ Poke(argc, 2 * kPointerSize);
1059 __ Poke(target, 3 * kPointerSize); 1061 __ Poke(target, 3 * kPointerSize);
1060 1062
1061 if (result_size() > 2) { 1063 if (result_size() > 2) {
1062 // Save the location of the return value into x8 for call. 1064 // Save the location of the return value into x8 for call.
1063 __ Add(x8, __ StackPointer(), Operand(4 * kPointerSize)); 1065 __ Add(x8, __ StackPointer(), Operand(4 * kPointerSize));
(...skipping 4656 matching lines...) Expand 10 before | Expand all | Expand 10 after
5720 kStackUnwindSpace, NULL, spill_offset, 5722 kStackUnwindSpace, NULL, spill_offset,
5721 return_value_operand, NULL); 5723 return_value_operand, NULL);
5722 } 5724 }
5723 5725
5724 #undef __ 5726 #undef __
5725 5727
5726 } // namespace internal 5728 } // namespace internal
5727 } // namespace v8 5729 } // namespace v8
5728 5730
5729 #endif // V8_TARGET_ARCH_ARM64 5731 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm64/builtins-arm64.cc ('k') | src/arm64/macro-assembler-arm64.h » ('j') | src/builtins.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698