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_PPC_MACRO_ASSEMBLER_PPC_H_ | 5 #ifndef V8_PPC_MACRO_ASSEMBLER_PPC_H_ |
6 #define V8_PPC_MACRO_ASSEMBLER_PPC_H_ | 6 #define V8_PPC_MACRO_ASSEMBLER_PPC_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 884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
895 // Loads the type into the second argument register. | 895 // Loads the type into the second argument register. |
896 // Returns a condition that will be enabled if the object was a string. | 896 // Returns a condition that will be enabled if the object was a string. |
897 Condition IsObjectStringType(Register obj, Register type) { | 897 Condition IsObjectStringType(Register obj, Register type) { |
898 LoadP(type, FieldMemOperand(obj, HeapObject::kMapOffset)); | 898 LoadP(type, FieldMemOperand(obj, HeapObject::kMapOffset)); |
899 lbz(type, FieldMemOperand(type, Map::kInstanceTypeOffset)); | 899 lbz(type, FieldMemOperand(type, Map::kInstanceTypeOffset)); |
900 andi(r0, type, Operand(kIsNotStringMask)); | 900 andi(r0, type, Operand(kIsNotStringMask)); |
901 DCHECK_EQ(0u, kStringTag); | 901 DCHECK_EQ(0u, kStringTag); |
902 return eq; | 902 return eq; |
903 } | 903 } |
904 | 904 |
905 | |
906 // Picks out an array index from the hash field. | |
907 // Register use: | |
908 // hash - holds the index's hash. Clobbered. | |
909 // index - holds the overwritten index on exit. | |
910 void IndexFromHash(Register hash, Register index); | |
911 | |
912 // Get the number of least significant bits from a register | 905 // Get the number of least significant bits from a register |
913 void GetLeastBitsFromSmi(Register dst, Register src, int num_least_bits); | 906 void GetLeastBitsFromSmi(Register dst, Register src, int num_least_bits); |
914 void GetLeastBitsFromInt32(Register dst, Register src, int mun_least_bits); | 907 void GetLeastBitsFromInt32(Register dst, Register src, int mun_least_bits); |
915 | 908 |
916 // Load the value of a smi object into a double register. | 909 // Load the value of a smi object into a double register. |
917 void SmiToDouble(DoubleRegister value, Register smi); | 910 void SmiToDouble(DoubleRegister value, Register smi); |
918 | 911 |
919 // Check if a double can be exactly represented as a signed 32-bit integer. | 912 // Check if a double can be exactly represented as a signed 32-bit integer. |
920 // CR_EQ in cr7 is set if true. | 913 // CR_EQ in cr7 is set if true. |
921 void TestDoubleIsInt32(DoubleRegister double_input, Register scratch1, | 914 void TestDoubleIsInt32(DoubleRegister double_input, Register scratch1, |
(...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1665 inline MemOperand NativeContextMemOperand() { | 1658 inline MemOperand NativeContextMemOperand() { |
1666 return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX); | 1659 return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX); |
1667 } | 1660 } |
1668 | 1661 |
1669 #define ACCESS_MASM(masm) masm-> | 1662 #define ACCESS_MASM(masm) masm-> |
1670 | 1663 |
1671 } // namespace internal | 1664 } // namespace internal |
1672 } // namespace v8 | 1665 } // namespace v8 |
1673 | 1666 |
1674 #endif // V8_PPC_MACRO_ASSEMBLER_PPC_H_ | 1667 #endif // V8_PPC_MACRO_ASSEMBLER_PPC_H_ |
OLD | NEW |