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 1294 matching lines...) Loading... |
1305 | 1305 |
1306 // --------------------------------------------------------------------------- | 1306 // --------------------------------------------------------------------------- |
1307 // Allocation support | 1307 // Allocation support |
1308 | 1308 |
1309 // Allocate an object in new space or old space. The object_size is | 1309 // Allocate an object in new space or old space. The object_size is |
1310 // specified either in bytes or in words if the allocation flag SIZE_IN_WORDS | 1310 // specified either in bytes or in words if the allocation flag SIZE_IN_WORDS |
1311 // is passed. The allocated object is returned in result. | 1311 // is passed. The allocated object is returned in result. |
1312 // | 1312 // |
1313 // If the new space is exhausted control continues at the gc_required label. | 1313 // If the new space is exhausted control continues at the gc_required label. |
1314 // In this case, the result and scratch registers may still be clobbered. | 1314 // In this case, the result and scratch registers may still be clobbered. |
1315 // If flags includes TAG_OBJECT, the result is tagged as as a heap object. | |
1316 void Allocate(Register object_size, Register result, Register result_end, | 1315 void Allocate(Register object_size, Register result, Register result_end, |
1317 Register scratch, Label* gc_required, AllocationFlags flags); | 1316 Register scratch, Label* gc_required, AllocationFlags flags); |
1318 | 1317 |
1319 void Allocate(int object_size, | 1318 void Allocate(int object_size, |
1320 Register result, | 1319 Register result, |
1321 Register scratch1, | 1320 Register scratch1, |
1322 Register scratch2, | 1321 Register scratch2, |
1323 Label* gc_required, | 1322 Label* gc_required, |
1324 AllocationFlags flags); | 1323 AllocationFlags flags); |
1325 | 1324 |
| 1325 // FastAllocate is right now only used for folded allocations. It just |
| 1326 // increments the top pointer without checking against limit. This can only |
| 1327 // be done if it was proved earlier that the allocation will succeed. |
| 1328 void FastAllocate(Register object_size, Register result, Register result_end, |
| 1329 Register scratch, AllocationFlags flags); |
| 1330 |
| 1331 void FastAllocate(int object_size, Register result, Register scratch1, |
| 1332 Register scratch2, AllocationFlags flags); |
| 1333 |
1326 void AllocateTwoByteString(Register result, | 1334 void AllocateTwoByteString(Register result, |
1327 Register length, | 1335 Register length, |
1328 Register scratch1, | 1336 Register scratch1, |
1329 Register scratch2, | 1337 Register scratch2, |
1330 Register scratch3, | 1338 Register scratch3, |
1331 Label* gc_required); | 1339 Label* gc_required); |
1332 void AllocateOneByteString(Register result, Register length, | 1340 void AllocateOneByteString(Register result, Register length, |
1333 Register scratch1, Register scratch2, | 1341 Register scratch1, Register scratch2, |
1334 Register scratch3, Label* gc_required); | 1342 Register scratch3, Label* gc_required); |
1335 void AllocateTwoByteConsString(Register result, | 1343 void AllocateTwoByteConsString(Register result, |
(...skipping 942 matching lines...) Loading... |
2278 #error "Unsupported option" | 2286 #error "Unsupported option" |
2279 #define CODE_COVERAGE_STRINGIFY(x) #x | 2287 #define CODE_COVERAGE_STRINGIFY(x) #x |
2280 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) | 2288 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) |
2281 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 2289 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
2282 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 2290 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
2283 #else | 2291 #else |
2284 #define ACCESS_MASM(masm) masm-> | 2292 #define ACCESS_MASM(masm) masm-> |
2285 #endif | 2293 #endif |
2286 | 2294 |
2287 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ | 2295 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ |
OLD | NEW |