OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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_S390_MACRO_ASSEMBLER_S390_H_ | 5 #ifndef V8_S390_MACRO_ASSEMBLER_S390_H_ |
6 #define V8_S390_MACRO_ASSEMBLER_S390_H_ | 6 #define V8_S390_MACRO_ASSEMBLER_S390_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 962 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
973 | 973 |
974 // FastAllocate is right now only used for folded allocations. It just | 974 // FastAllocate is right now only used for folded allocations. It just |
975 // increments the top pointer without checking against limit. This can only | 975 // increments the top pointer without checking against limit. This can only |
976 // be done if it was proved earlier that the allocation will succeed. | 976 // be done if it was proved earlier that the allocation will succeed. |
977 void FastAllocate(int object_size, Register result, Register scratch1, | 977 void FastAllocate(int object_size, Register result, Register scratch1, |
978 Register scratch2, AllocationFlags flags); | 978 Register scratch2, AllocationFlags flags); |
979 | 979 |
980 void FastAllocate(Register object_size, Register result, Register result_end, | 980 void FastAllocate(Register object_size, Register result, Register result_end, |
981 Register scratch, AllocationFlags flags); | 981 Register scratch, AllocationFlags flags); |
982 | 982 |
983 void AllocateTwoByteString(Register result, Register length, | |
984 Register scratch1, Register scratch2, | |
985 Register scratch3, Label* gc_required); | |
986 void AllocateOneByteString(Register result, Register length, | |
987 Register scratch1, Register scratch2, | |
988 Register scratch3, Label* gc_required); | |
989 void AllocateTwoByteConsString(Register result, Register length, | |
990 Register scratch1, Register scratch2, | |
991 Label* gc_required); | |
992 void AllocateOneByteConsString(Register result, Register length, | |
993 Register scratch1, Register scratch2, | |
994 Label* gc_required); | |
995 void AllocateTwoByteSlicedString(Register result, Register length, | |
996 Register scratch1, Register scratch2, | |
997 Label* gc_required); | |
998 void AllocateOneByteSlicedString(Register result, Register length, | |
999 Register scratch1, Register scratch2, | |
1000 Label* gc_required); | |
1001 | |
1002 // Allocates a heap number or jumps to the gc_required label if the young | 983 // Allocates a heap number or jumps to the gc_required label if the young |
1003 // space is full and a scavenge is needed. All registers are clobbered also | 984 // space is full and a scavenge is needed. All registers are clobbered also |
1004 // when control continues at the gc_required label. | 985 // when control continues at the gc_required label. |
1005 void AllocateHeapNumber(Register result, Register scratch1, Register scratch2, | 986 void AllocateHeapNumber(Register result, Register scratch1, Register scratch2, |
1006 Register heap_number_map, Label* gc_required, | 987 Register heap_number_map, Label* gc_required, |
1007 MutableMode mode = IMMUTABLE); | 988 MutableMode mode = IMMUTABLE); |
1008 void AllocateHeapNumberWithValue(Register result, DoubleRegister value, | 989 void AllocateHeapNumberWithValue(Register result, DoubleRegister value, |
1009 Register scratch1, Register scratch2, | 990 Register scratch1, Register scratch2, |
1010 Register heap_number_map, | 991 Register heap_number_map, |
1011 Label* gc_required); | 992 Label* gc_required); |
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1658 Register scratch1, | 1639 Register scratch1, |
1659 Register scratch2, | 1640 Register scratch2, |
1660 Label* not_flat_one_byte_strings); | 1641 Label* not_flat_one_byte_strings); |
1661 | 1642 |
1662 // Checks if both instance types are sequential one-byte strings and jumps to | 1643 // Checks if both instance types are sequential one-byte strings and jumps to |
1663 // label if either is not. | 1644 // label if either is not. |
1664 void JumpIfBothInstanceTypesAreNotSequentialOneByte( | 1645 void JumpIfBothInstanceTypesAreNotSequentialOneByte( |
1665 Register first_object_instance_type, Register second_object_instance_type, | 1646 Register first_object_instance_type, Register second_object_instance_type, |
1666 Register scratch1, Register scratch2, Label* failure); | 1647 Register scratch1, Register scratch2, Label* failure); |
1667 | 1648 |
1668 // Check if instance type is sequential one-byte string and jump to label if | |
1669 // it is not. | |
1670 void JumpIfInstanceTypeIsNotSequentialOneByte(Register type, Register scratch, | |
1671 Label* failure); | |
1672 | |
1673 void JumpIfNotUniqueNameInstanceType(Register reg, Label* not_unique_name); | 1649 void JumpIfNotUniqueNameInstanceType(Register reg, Label* not_unique_name); |
1674 | 1650 |
1675 void EmitSeqStringSetCharCheck(Register string, Register index, | 1651 void EmitSeqStringSetCharCheck(Register string, Register index, |
1676 Register value, uint32_t encoding_mask); | 1652 Register value, uint32_t encoding_mask); |
1677 | 1653 |
1678 // --------------------------------------------------------------------------- | 1654 // --------------------------------------------------------------------------- |
1679 // Patching helpers. | 1655 // Patching helpers. |
1680 | 1656 |
1681 void ClampUint8(Register output_reg, Register input_reg); | 1657 void ClampUint8(Register output_reg, Register input_reg); |
1682 | 1658 |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1823 inline MemOperand NativeContextMemOperand() { | 1799 inline MemOperand NativeContextMemOperand() { |
1824 return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX); | 1800 return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX); |
1825 } | 1801 } |
1826 | 1802 |
1827 #define ACCESS_MASM(masm) masm-> | 1803 #define ACCESS_MASM(masm) masm-> |
1828 | 1804 |
1829 } // namespace internal | 1805 } // namespace internal |
1830 } // namespace v8 | 1806 } // namespace v8 |
1831 | 1807 |
1832 #endif // V8_S390_MACRO_ASSEMBLER_S390_H_ | 1808 #endif // V8_S390_MACRO_ASSEMBLER_S390_H_ |
OLD | NEW |