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 |