| 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/frames.h" | 9 #include "src/frames.h" |
| 10 #include "src/globals.h" | 10 #include "src/globals.h" |
| (...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 746 // allocation is undone. | 746 // allocation is undone. |
| 747 void UndoAllocationInNewSpace(Register object, Register scratch); | 747 void UndoAllocationInNewSpace(Register object, Register scratch); |
| 748 | 748 |
| 749 | 749 |
| 750 void AllocateTwoByteString(Register result, | 750 void AllocateTwoByteString(Register result, |
| 751 Register length, | 751 Register length, |
| 752 Register scratch1, | 752 Register scratch1, |
| 753 Register scratch2, | 753 Register scratch2, |
| 754 Register scratch3, | 754 Register scratch3, |
| 755 Label* gc_required); | 755 Label* gc_required); |
| 756 void AllocateAsciiString(Register result, | 756 void AllocateOneByteString(Register result, Register length, |
| 757 Register length, | 757 Register scratch1, Register scratch2, |
| 758 Register scratch1, | 758 Register scratch3, Label* gc_required); |
| 759 Register scratch2, | |
| 760 Register scratch3, | |
| 761 Label* gc_required); | |
| 762 void AllocateTwoByteConsString(Register result, | 759 void AllocateTwoByteConsString(Register result, |
| 763 Register length, | 760 Register length, |
| 764 Register scratch1, | 761 Register scratch1, |
| 765 Register scratch2, | 762 Register scratch2, |
| 766 Label* gc_required); | 763 Label* gc_required); |
| 767 void AllocateAsciiConsString(Register result, | 764 void AllocateOneByteConsString(Register result, Register length, |
| 768 Register length, | 765 Register scratch1, Register scratch2, |
| 769 Register scratch1, | 766 Label* gc_required); |
| 770 Register scratch2, | |
| 771 Label* gc_required); | |
| 772 void AllocateTwoByteSlicedString(Register result, | 767 void AllocateTwoByteSlicedString(Register result, |
| 773 Register length, | 768 Register length, |
| 774 Register scratch1, | 769 Register scratch1, |
| 775 Register scratch2, | 770 Register scratch2, |
| 776 Label* gc_required); | 771 Label* gc_required); |
| 777 void AllocateAsciiSlicedString(Register result, | 772 void AllocateOneByteSlicedString(Register result, Register length, |
| 778 Register length, | 773 Register scratch1, Register scratch2, |
| 779 Register scratch1, | 774 Label* gc_required); |
| 780 Register scratch2, | |
| 781 Label* gc_required); | |
| 782 | 775 |
| 783 // Allocates a heap number or jumps to the gc_required label if the young | 776 // Allocates a heap number or jumps to the gc_required label if the young |
| 784 // space is full and a scavenge is needed. All registers are clobbered also | 777 // space is full and a scavenge is needed. All registers are clobbered also |
| 785 // when control continues at the gc_required label. | 778 // when control continues at the gc_required label. |
| 786 void AllocateHeapNumber(Register result, | 779 void AllocateHeapNumber(Register result, |
| 787 Register scratch1, | 780 Register scratch1, |
| 788 Register scratch2, | 781 Register scratch2, |
| 789 Register heap_number_map, | 782 Register heap_number_map, |
| 790 Label* gc_required, | 783 Label* gc_required, |
| 791 TaggingMode tagging_mode = TAG_RESULT, | 784 TaggingMode tagging_mode = TAG_RESULT, |
| (...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1314 // with the result in the result register. The object and the result register | 1307 // with the result in the result register. The object and the result register |
| 1315 // can be the same. If the number is not found in the cache the code jumps to | 1308 // can be the same. If the number is not found in the cache the code jumps to |
| 1316 // the label not_found with only the content of register object unchanged. | 1309 // the label not_found with only the content of register object unchanged. |
| 1317 void LookupNumberStringCache(Register object, | 1310 void LookupNumberStringCache(Register object, |
| 1318 Register result, | 1311 Register result, |
| 1319 Register scratch1, | 1312 Register scratch1, |
| 1320 Register scratch2, | 1313 Register scratch2, |
| 1321 Register scratch3, | 1314 Register scratch3, |
| 1322 Label* not_found); | 1315 Label* not_found); |
| 1323 | 1316 |
| 1324 // Checks if both objects are sequential ASCII strings and jumps to label | 1317 // Checks if both objects are sequential one-byte strings and jumps to label |
| 1325 // if either is not. Assumes that neither object is a smi. | 1318 // if either is not. Assumes that neither object is a smi. |
| 1326 void JumpIfNonSmisNotBothSequentialAsciiStrings(Register object1, | 1319 void JumpIfNonSmisNotBothSequentialOneByteStrings(Register object1, |
| 1327 Register object2, | 1320 Register object2, |
| 1328 Register scratch1, | 1321 Register scratch1, |
| 1329 Register scratch2, | 1322 Register scratch2, |
| 1330 Label* failure); | 1323 Label* failure); |
| 1331 | 1324 |
| 1332 // Checks if both objects are sequential ASCII strings and jumps to label | 1325 // Checks if both objects are sequential one-byte strings and jumps to label |
| 1333 // if either is not. | 1326 // if either is not. |
| 1334 void JumpIfNotBothSequentialAsciiStrings(Register first, | 1327 void JumpIfNotBothSequentialOneByteStrings(Register first, Register second, |
| 1335 Register second, | 1328 Register scratch1, |
| 1336 Register scratch1, | 1329 Register scratch2, |
| 1337 Register scratch2, | 1330 Label* not_flat_one_byte_strings); |
| 1338 Label* not_flat_ascii_strings); | |
| 1339 | 1331 |
| 1340 // Checks if both instance types are sequential ASCII strings and jumps to | 1332 // Checks if both instance types are sequential one-byte strings and jumps to |
| 1341 // label if either is not. | 1333 // label if either is not. |
| 1342 void JumpIfBothInstanceTypesAreNotSequentialAscii( | 1334 void JumpIfBothInstanceTypesAreNotSequentialOneByte( |
| 1343 Register first_object_instance_type, | 1335 Register first_object_instance_type, Register second_object_instance_type, |
| 1344 Register second_object_instance_type, | 1336 Register scratch1, Register scratch2, Label* failure); |
| 1345 Register scratch1, | |
| 1346 Register scratch2, | |
| 1347 Label* failure); | |
| 1348 | 1337 |
| 1349 // Check if instance type is sequential ASCII string and jump to label if | 1338 // Check if instance type is sequential one-byte string and jump to label if |
| 1350 // it is not. | 1339 // it is not. |
| 1351 void JumpIfInstanceTypeIsNotSequentialAscii(Register type, | 1340 void JumpIfInstanceTypeIsNotSequentialOneByte(Register type, Register scratch, |
| 1352 Register scratch, | 1341 Label* failure); |
| 1353 Label* failure); | |
| 1354 | 1342 |
| 1355 void JumpIfNotUniqueName(Register reg, Label* not_unique_name); | 1343 void JumpIfNotUniqueName(Register reg, Label* not_unique_name); |
| 1356 | 1344 |
| 1357 void EmitSeqStringSetCharCheck(Register string, | 1345 void EmitSeqStringSetCharCheck(Register string, |
| 1358 Register index, | 1346 Register index, |
| 1359 Register value, | 1347 Register value, |
| 1360 uint32_t encoding_mask); | 1348 uint32_t encoding_mask); |
| 1361 | 1349 |
| 1362 // --------------------------------------------------------------------------- | 1350 // --------------------------------------------------------------------------- |
| 1363 // Patching helpers. | 1351 // Patching helpers. |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1625 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 1613 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
| 1626 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 1614 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
| 1627 #else | 1615 #else |
| 1628 #define ACCESS_MASM(masm) masm-> | 1616 #define ACCESS_MASM(masm) masm-> |
| 1629 #endif | 1617 #endif |
| 1630 | 1618 |
| 1631 | 1619 |
| 1632 } } // namespace v8::internal | 1620 } } // namespace v8::internal |
| 1633 | 1621 |
| 1634 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 1622 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
| OLD | NEW |