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

Side by Side Diff: src/arm64/macro-assembler-arm64.h

Issue 960273002: Move stack unwinding logic into the runtime. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix Win64 (finally). Created 5 years, 9 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/arm64/code-stubs-arm64.cc ('k') | src/arm64/macro-assembler-arm64.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 #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ 5 #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_H_
6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ 6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "src/bailout-reason.h" 10 #include "src/bailout-reason.h"
(...skipping 1060 matching lines...) Expand 10 before | Expand all | Expand 10 after
1071 Register first_object_instance_type, Register second_object_instance_type, 1071 Register first_object_instance_type, Register second_object_instance_type,
1072 Register scratch1, Register scratch2, Label* failure); 1072 Register scratch1, Register scratch2, Label* failure);
1073 1073
1074 void JumpIfNotUniqueNameInstanceType(Register type, Label* not_unique_name); 1074 void JumpIfNotUniqueNameInstanceType(Register type, Label* not_unique_name);
1075 1075
1076 // ---- Calling / Jumping helpers ---- 1076 // ---- Calling / Jumping helpers ----
1077 1077
1078 // This is required for compatibility in architecture indepenedant code. 1078 // This is required for compatibility in architecture indepenedant code.
1079 inline void jmp(Label* L) { B(L); } 1079 inline void jmp(Label* L) { B(L); }
1080 1080
1081 // Passes thrown value to the handler of top of the try handler chain.
1082 // Register value must be x0.
1083 void Throw(Register value,
1084 Register scratch1,
1085 Register scratch2,
1086 Register scratch3,
1087 Register scratch4);
1088
1089 // Propagates an uncatchable exception to the top of the current JS stack's
1090 // handler chain. Register value must be x0.
1091 void ThrowUncatchable(Register value,
1092 Register scratch1,
1093 Register scratch2,
1094 Register scratch3,
1095 Register scratch4);
1096
1097 void CallStub(CodeStub* stub, TypeFeedbackId ast_id = TypeFeedbackId::None()); 1081 void CallStub(CodeStub* stub, TypeFeedbackId ast_id = TypeFeedbackId::None());
1098 void TailCallStub(CodeStub* stub); 1082 void TailCallStub(CodeStub* stub);
1099 1083
1100 void CallRuntime(const Runtime::Function* f, 1084 void CallRuntime(const Runtime::Function* f,
1101 int num_arguments, 1085 int num_arguments,
1102 SaveFPRegsMode save_doubles = kDontSaveFPRegs); 1086 SaveFPRegsMode save_doubles = kDontSaveFPRegs);
1103 1087
1104 void CallRuntime(Runtime::FunctionId id, 1088 void CallRuntime(Runtime::FunctionId id,
1105 int num_arguments, 1089 int num_arguments,
1106 SaveFPRegsMode save_doubles = kDontSaveFPRegs) { 1090 SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
(...skipping 961 matching lines...) Expand 10 before | Expand all | Expand 10 after
2068 // Call Printf. On a native build, a simple call will be generated, but if the 2052 // Call Printf. On a native build, a simple call will be generated, but if the
2069 // simulator is being used then a suitable pseudo-instruction is used. The 2053 // simulator is being used then a suitable pseudo-instruction is used. The
2070 // arguments and stack (csp) must be prepared by the caller as for a normal 2054 // arguments and stack (csp) must be prepared by the caller as for a normal
2071 // AAPCS64 call to 'printf'. 2055 // AAPCS64 call to 'printf'.
2072 // 2056 //
2073 // The 'args' argument should point to an array of variable arguments in their 2057 // The 'args' argument should point to an array of variable arguments in their
2074 // proper PCS registers (and in calling order). The argument registers can 2058 // proper PCS registers (and in calling order). The argument registers can
2075 // have mixed types. The format string (x0) should not be included. 2059 // have mixed types. The format string (x0) should not be included.
2076 void CallPrintf(int arg_count = 0, const CPURegister * args = NULL); 2060 void CallPrintf(int arg_count = 0, const CPURegister * args = NULL);
2077 2061
2078 // Helper for throwing exceptions. Compute a handler address and jump to
2079 // it. See the implementation for register usage.
2080 void JumpToHandlerEntry(Register exception,
2081 Register object,
2082 Register state,
2083 Register scratch1,
2084 Register scratch2);
2085
2086 // Helper for implementing JumpIfNotInNewSpace and JumpIfInNewSpace. 2062 // Helper for implementing JumpIfNotInNewSpace and JumpIfInNewSpace.
2087 void InNewSpace(Register object, 2063 void InNewSpace(Register object,
2088 Condition cond, // eq for new space, ne otherwise. 2064 Condition cond, // eq for new space, ne otherwise.
2089 Label* branch); 2065 Label* branch);
2090 2066
2091 // Try to represent a double as an int so that integer fast-paths may be 2067 // Try to represent a double as an int so that integer fast-paths may be
2092 // used. Not every valid integer value is guaranteed to be caught. 2068 // used. Not every valid integer value is guaranteed to be caught.
2093 // It supports both 32-bit and 64-bit integers depending whether 'as_int' 2069 // It supports both 32-bit and 64-bit integers depending whether 'as_int'
2094 // is a W or X register. 2070 // is a W or X register.
2095 // 2071 //
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
2322 #error "Unsupported option" 2298 #error "Unsupported option"
2323 #define CODE_COVERAGE_STRINGIFY(x) #x 2299 #define CODE_COVERAGE_STRINGIFY(x) #x
2324 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 2300 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
2325 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 2301 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
2326 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 2302 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
2327 #else 2303 #else
2328 #define ACCESS_MASM(masm) masm-> 2304 #define ACCESS_MASM(masm) masm->
2329 #endif 2305 #endif
2330 2306
2331 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ 2307 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_
OLDNEW
« no previous file with comments | « src/arm64/code-stubs-arm64.cc ('k') | src/arm64/macro-assembler-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698