OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_ARM_MACRO_ASSEMBLER_ARM_H_ | 5 #ifndef V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
6 #define V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 6 #define V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
7 | 7 |
8 #include "src/assembler.h" | 8 #include "src/assembler.h" |
9 #include "src/bailout-reason.h" | 9 #include "src/bailout-reason.h" |
10 #include "src/frames.h" | 10 #include "src/frames.h" |
(...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
844 // Machine code version of Map::GetConstructor(). | 844 // Machine code version of Map::GetConstructor(). |
845 // |temp| holds |result|'s map when done, and |temp2| its instance type. | 845 // |temp| holds |result|'s map when done, and |temp2| its instance type. |
846 void GetMapConstructor(Register result, Register map, Register temp, | 846 void GetMapConstructor(Register result, Register map, Register temp, |
847 Register temp2); | 847 Register temp2); |
848 | 848 |
849 // Try to get function prototype of a function and puts the value in | 849 // Try to get function prototype of a function and puts the value in |
850 // the result register. Checks that the function really is a | 850 // the result register. Checks that the function really is a |
851 // function and jumps to the miss label if the fast checks fail. The | 851 // function and jumps to the miss label if the fast checks fail. The |
852 // function register will be untouched; the other registers may be | 852 // function register will be untouched; the other registers may be |
853 // clobbered. | 853 // clobbered. |
854 void TryGetFunctionPrototype(Register function, | 854 void TryGetFunctionPrototype(Register function, Register result, |
855 Register result, | 855 Register scratch, Label* miss); |
856 Register scratch, | |
857 Label* miss, | |
858 bool miss_on_bound_function = false); | |
859 | 856 |
860 // Compare object type for heap object. heap_object contains a non-Smi | 857 // Compare object type for heap object. heap_object contains a non-Smi |
861 // whose object type should be compared with the given type. This both | 858 // whose object type should be compared with the given type. This both |
862 // sets the flags and leaves the object type in the type_reg register. | 859 // sets the flags and leaves the object type in the type_reg register. |
863 // It leaves the map in the map register (unless the type_reg and map register | 860 // It leaves the map in the map register (unless the type_reg and map register |
864 // are the same register). It leaves the heap object in the heap_object | 861 // are the same register). It leaves the heap object in the heap_object |
865 // register unless the heap_object register is the same register as one of the | 862 // register unless the heap_object register is the same register as one of the |
866 // other registers. | 863 // other registers. |
867 // Type_reg can be no_reg. In that case ip is used. | 864 // Type_reg can be no_reg. In that case ip is used. |
868 void CompareObjectType(Register heap_object, | 865 void CompareObjectType(Register heap_object, |
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1368 void JumpIfInstanceTypeIsNotSequentialOneByte(Register type, Register scratch, | 1365 void JumpIfInstanceTypeIsNotSequentialOneByte(Register type, Register scratch, |
1369 Label* failure); | 1366 Label* failure); |
1370 | 1367 |
1371 void JumpIfNotUniqueNameInstanceType(Register reg, Label* not_unique_name); | 1368 void JumpIfNotUniqueNameInstanceType(Register reg, Label* not_unique_name); |
1372 | 1369 |
1373 void EmitSeqStringSetCharCheck(Register string, | 1370 void EmitSeqStringSetCharCheck(Register string, |
1374 Register index, | 1371 Register index, |
1375 Register value, | 1372 Register value, |
1376 uint32_t encoding_mask); | 1373 uint32_t encoding_mask); |
1377 | 1374 |
1378 // --------------------------------------------------------------------------- | |
1379 // Patching helpers. | |
1380 | |
1381 // Get the location of a relocated constant (its address in the constant pool) | |
1382 // from its load site. | |
1383 void GetRelocatedValueLocation(Register ldr_location, Register result, | |
1384 Register scratch); | |
1385 | |
1386 | 1375 |
1387 void ClampUint8(Register output_reg, Register input_reg); | 1376 void ClampUint8(Register output_reg, Register input_reg); |
1388 | 1377 |
1389 void ClampDoubleToUint8(Register result_reg, | 1378 void ClampDoubleToUint8(Register result_reg, |
1390 DwVfpRegister input_reg, | 1379 DwVfpRegister input_reg, |
1391 LowDwVfpRegister double_scratch); | 1380 LowDwVfpRegister double_scratch); |
1392 | 1381 |
1393 | 1382 |
1394 void LoadInstanceDescriptors(Register map, Register descriptors); | 1383 void LoadInstanceDescriptors(Register map, Register descriptors); |
1395 void EnumLength(Register dst, Register map); | 1384 void EnumLength(Register dst, Register map); |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1577 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 1566 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
1578 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 1567 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
1579 #else | 1568 #else |
1580 #define ACCESS_MASM(masm) masm-> | 1569 #define ACCESS_MASM(masm) masm-> |
1581 #endif | 1570 #endif |
1582 | 1571 |
1583 | 1572 |
1584 } } // namespace v8::internal | 1573 } } // namespace v8::internal |
1585 | 1574 |
1586 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 1575 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
OLD | NEW |