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 #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/arm64/assembler-arm64.h" | 10 #include "src/arm64/assembler-arm64.h" |
(...skipping 1148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1159 | 1159 |
1160 // For every Call variant, there is a matching CallSize function that returns | 1160 // For every Call variant, there is a matching CallSize function that returns |
1161 // the size (in bytes) of the call sequence. | 1161 // the size (in bytes) of the call sequence. |
1162 static int CallSize(Register target); | 1162 static int CallSize(Register target); |
1163 static int CallSize(Label* target); | 1163 static int CallSize(Label* target); |
1164 static int CallSize(Address target, RelocInfo::Mode rmode); | 1164 static int CallSize(Address target, RelocInfo::Mode rmode); |
1165 static int CallSize(Handle<Code> code, | 1165 static int CallSize(Handle<Code> code, |
1166 RelocInfo::Mode rmode = RelocInfo::CODE_TARGET, | 1166 RelocInfo::Mode rmode = RelocInfo::CODE_TARGET, |
1167 TypeFeedbackId ast_id = TypeFeedbackId::None()); | 1167 TypeFeedbackId ast_id = TypeFeedbackId::None()); |
1168 | 1168 |
| 1169 // Removes current frame and its arguments from the stack preserving |
| 1170 // the arguments and a return address pushed to the stack for the next call. |
| 1171 // Both |callee_args_count| and |caller_args_count_reg| do not include |
| 1172 // receiver. |callee_args_count| is not modified, |caller_args_count_reg| |
| 1173 // is trashed. |
| 1174 void PrepareForTailCall(const ParameterCount& callee_args_count, |
| 1175 Register caller_args_count_reg, Register scratch0, |
| 1176 Register scratch1); |
| 1177 |
1169 // Registers used through the invocation chain are hard-coded. | 1178 // Registers used through the invocation chain are hard-coded. |
1170 // We force passing the parameters to ensure the contracts are correctly | 1179 // We force passing the parameters to ensure the contracts are correctly |
1171 // honoured by the caller. | 1180 // honoured by the caller. |
1172 // 'function' must be x1. | 1181 // 'function' must be x1. |
1173 // 'actual' must use an immediate or x0. | 1182 // 'actual' must use an immediate or x0. |
1174 // 'expected' must use an immediate or x2. | 1183 // 'expected' must use an immediate or x2. |
1175 // 'call_kind' must be x5. | 1184 // 'call_kind' must be x5. |
1176 void InvokePrologue(const ParameterCount& expected, | 1185 void InvokePrologue(const ParameterCount& expected, |
1177 const ParameterCount& actual, | 1186 const ParameterCount& actual, |
1178 Label* done, | 1187 Label* done, |
(...skipping 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2259 #error "Unsupported option" | 2268 #error "Unsupported option" |
2260 #define CODE_COVERAGE_STRINGIFY(x) #x | 2269 #define CODE_COVERAGE_STRINGIFY(x) #x |
2261 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) | 2270 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) |
2262 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 2271 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
2263 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 2272 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
2264 #else | 2273 #else |
2265 #define ACCESS_MASM(masm) masm-> | 2274 #define ACCESS_MASM(masm) masm-> |
2266 #endif | 2275 #endif |
2267 | 2276 |
2268 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ | 2277 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ |
OLD | NEW |