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 1346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1357 Label* gc_required, | 1357 Label* gc_required, |
1358 Register scratch1, | 1358 Register scratch1, |
1359 Register scratch2, | 1359 Register scratch2, |
1360 CPURegister value = NoFPReg, | 1360 CPURegister value = NoFPReg, |
1361 CPURegister heap_number_map = NoReg, | 1361 CPURegister heap_number_map = NoReg, |
1362 MutableMode mode = IMMUTABLE); | 1362 MutableMode mode = IMMUTABLE); |
1363 | 1363 |
1364 // --------------------------------------------------------------------------- | 1364 // --------------------------------------------------------------------------- |
1365 // Support functions. | 1365 // Support functions. |
1366 | 1366 |
1367 // Try to get function prototype of a function and puts the value in the | |
1368 // result register. Checks that the function really is a function and jumps | |
1369 // to the miss label if the fast checks fail. The function register will be | |
1370 // untouched; the other registers may be clobbered. | |
1371 enum BoundFunctionAction { | |
1372 kMissOnBoundFunction, | |
1373 kDontMissOnBoundFunction | |
1374 }; | |
1375 | |
1376 // Machine code version of Map::GetConstructor(). | 1367 // Machine code version of Map::GetConstructor(). |
1377 // |temp| holds |result|'s map when done, and |temp2| its instance type. | 1368 // |temp| holds |result|'s map when done, and |temp2| its instance type. |
1378 void GetMapConstructor(Register result, Register map, Register temp, | 1369 void GetMapConstructor(Register result, Register map, Register temp, |
1379 Register temp2); | 1370 Register temp2); |
1380 | 1371 |
1381 void TryGetFunctionPrototype(Register function, | 1372 void TryGetFunctionPrototype(Register function, Register result, |
1382 Register result, | 1373 Register scratch, Label* miss); |
1383 Register scratch, | |
1384 Label* miss, | |
1385 BoundFunctionAction action = | |
1386 kDontMissOnBoundFunction); | |
1387 | 1374 |
1388 // Compare object type for heap object. heap_object contains a non-Smi | 1375 // Compare object type for heap object. heap_object contains a non-Smi |
1389 // whose object type should be compared with the given type. This both | 1376 // whose object type should be compared with the given type. This both |
1390 // sets the flags and leaves the object type in the type_reg register. | 1377 // sets the flags and leaves the object type in the type_reg register. |
1391 // It leaves the map in the map register (unless the type_reg and map register | 1378 // It leaves the map in the map register (unless the type_reg and map register |
1392 // are the same register). It leaves the heap object in the heap_object | 1379 // are the same register). It leaves the heap object in the heap_object |
1393 // register unless the heap_object register is the same register as one of the | 1380 // register unless the heap_object register is the same register as one of the |
1394 // other registers. | 1381 // other registers. |
1395 void CompareObjectType(Register heap_object, | 1382 void CompareObjectType(Register heap_object, |
1396 Register map, | 1383 Register map, |
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1876 Label* has_color, | 1863 Label* has_color, |
1877 int first_bit, | 1864 int first_bit, |
1878 int second_bit); | 1865 int second_bit); |
1879 | 1866 |
1880 void JumpIfBlack(Register object, | 1867 void JumpIfBlack(Register object, |
1881 Register scratch0, | 1868 Register scratch0, |
1882 Register scratch1, | 1869 Register scratch1, |
1883 Label* on_black); | 1870 Label* on_black); |
1884 | 1871 |
1885 | 1872 |
1886 // Get the location of a relocated constant (its address in the constant pool) | |
1887 // from its load site. | |
1888 void GetRelocatedValueLocation(Register ldr_location, | |
1889 Register result); | |
1890 | |
1891 | |
1892 // --------------------------------------------------------------------------- | 1873 // --------------------------------------------------------------------------- |
1893 // Debugging. | 1874 // Debugging. |
1894 | 1875 |
1895 // Calls Abort(msg) if the condition cond is not satisfied. | 1876 // Calls Abort(msg) if the condition cond is not satisfied. |
1896 // Use --debug_code to enable. | 1877 // Use --debug_code to enable. |
1897 void Assert(Condition cond, BailoutReason reason); | 1878 void Assert(Condition cond, BailoutReason reason); |
1898 void AssertRegisterIsClear(Register reg, BailoutReason reason); | 1879 void AssertRegisterIsClear(Register reg, BailoutReason reason); |
1899 void AssertRegisterIsRoot( | 1880 void AssertRegisterIsRoot( |
1900 Register reg, | 1881 Register reg, |
1901 Heap::RootListIndex index, | 1882 Heap::RootListIndex index, |
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2309 #error "Unsupported option" | 2290 #error "Unsupported option" |
2310 #define CODE_COVERAGE_STRINGIFY(x) #x | 2291 #define CODE_COVERAGE_STRINGIFY(x) #x |
2311 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) | 2292 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) |
2312 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 2293 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
2313 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 2294 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
2314 #else | 2295 #else |
2315 #define ACCESS_MASM(masm) masm-> | 2296 #define ACCESS_MASM(masm) masm-> |
2316 #endif | 2297 #endif |
2317 | 2298 |
2318 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ | 2299 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ |
OLD | NEW |