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 1020 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1031 // The 'temps' list is a list of X registers which can be used for scratch | 1031 // The 'temps' list is a list of X registers which can be used for scratch |
1032 // values. The temps list must include at least one register. | 1032 // values. The temps list must include at least one register. |
1033 // | 1033 // |
1034 // Currently, CopyFields cannot make use of more than three registers from | 1034 // Currently, CopyFields cannot make use of more than three registers from |
1035 // the 'temps' list. | 1035 // the 'temps' list. |
1036 // | 1036 // |
1037 // CopyFields expects to be able to take at least two registers from | 1037 // CopyFields expects to be able to take at least two registers from |
1038 // MacroAssembler::TmpList(). | 1038 // MacroAssembler::TmpList(). |
1039 void CopyFields(Register dst, Register src, CPURegList temps, unsigned count); | 1039 void CopyFields(Register dst, Register src, CPURegList temps, unsigned count); |
1040 | 1040 |
1041 // Starting at address in dst, initialize field_count 64-bit fields with | 1041 // Initialize fields with filler values. Fields starting at |current_address| |
1042 // 64-bit value in register filler. Register dst is corrupted. | 1042 // not including |end_address| are overwritten with the value in |filler|. At |
1043 void FillFields(Register dst, | 1043 // the end the loop, |current_address| takes the value of |end_address|. |
1044 Register field_count, | 1044 void InitializeFieldsWithFiller(Register current_address, |
1045 Register filler); | 1045 Register end_address, Register filler); |
1046 | 1046 |
1047 // Copies a number of bytes from src to dst. All passed registers are | 1047 // Copies a number of bytes from src to dst. All passed registers are |
1048 // clobbered. On exit src and dst will point to the place just after where the | 1048 // clobbered. On exit src and dst will point to the place just after where the |
1049 // last byte was read or written and length will be zero. Hint may be used to | 1049 // last byte was read or written and length will be zero. Hint may be used to |
1050 // determine which is the most efficient algorithm to use for copying. | 1050 // determine which is the most efficient algorithm to use for copying. |
1051 void CopyBytes(Register dst, | 1051 void CopyBytes(Register dst, |
1052 Register src, | 1052 Register src, |
1053 Register length, | 1053 Register length, |
1054 Register scratch, | 1054 Register scratch, |
1055 CopyHint hint = kCopyUnknown); | 1055 CopyHint hint = kCopyUnknown); |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1290 // --------------------------------------------------------------------------- | 1290 // --------------------------------------------------------------------------- |
1291 // Allocation support | 1291 // Allocation support |
1292 | 1292 |
1293 // Allocate an object in new space or old space. The object_size is | 1293 // Allocate an object in new space or old space. The object_size is |
1294 // specified either in bytes or in words if the allocation flag SIZE_IN_WORDS | 1294 // specified either in bytes or in words if the allocation flag SIZE_IN_WORDS |
1295 // is passed. The allocated object is returned in result. | 1295 // is passed. The allocated object is returned in result. |
1296 // | 1296 // |
1297 // If the new space is exhausted control continues at the gc_required label. | 1297 // If the new space is exhausted control continues at the gc_required label. |
1298 // In this case, the result and scratch registers may still be clobbered. | 1298 // In this case, the result and scratch registers may still be clobbered. |
1299 // If flags includes TAG_OBJECT, the result is tagged as as a heap object. | 1299 // If flags includes TAG_OBJECT, the result is tagged as as a heap object. |
1300 void Allocate(Register object_size, | 1300 void Allocate(Register object_size, Register result, Register result_end, |
1301 Register result, | 1301 Register scratch, Label* gc_required, AllocationFlags flags); |
1302 Register scratch1, | |
1303 Register scratch2, | |
1304 Label* gc_required, | |
1305 AllocationFlags flags); | |
1306 | 1302 |
1307 void Allocate(int object_size, | 1303 void Allocate(int object_size, |
1308 Register result, | 1304 Register result, |
1309 Register scratch1, | 1305 Register scratch1, |
1310 Register scratch2, | 1306 Register scratch2, |
1311 Label* gc_required, | 1307 Label* gc_required, |
1312 AllocationFlags flags); | 1308 AllocationFlags flags); |
1313 | 1309 |
1314 void AllocateTwoByteString(Register result, | 1310 void AllocateTwoByteString(Register result, |
1315 Register length, | 1311 Register length, |
(...skipping 973 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2289 #error "Unsupported option" | 2285 #error "Unsupported option" |
2290 #define CODE_COVERAGE_STRINGIFY(x) #x | 2286 #define CODE_COVERAGE_STRINGIFY(x) #x |
2291 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) | 2287 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) |
2292 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 2288 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
2293 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 2289 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
2294 #else | 2290 #else |
2295 #define ACCESS_MASM(masm) masm-> | 2291 #define ACCESS_MASM(masm) masm-> |
2296 #endif | 2292 #endif |
2297 | 2293 |
2298 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ | 2294 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ |
OLD | NEW |