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 711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
722 | 722 |
723 // Generate code for checking access rights - used for security checks | 723 // Generate code for checking access rights - used for security checks |
724 // on access to global objects across environments. The holder register | 724 // on access to global objects across environments. The holder register |
725 // is left untouched, whereas both scratch registers are clobbered. | 725 // is left untouched, whereas both scratch registers are clobbered. |
726 void CheckAccessGlobalProxy(Register holder_reg, | 726 void CheckAccessGlobalProxy(Register holder_reg, |
727 Register scratch, | 727 Register scratch, |
728 Label* miss); | 728 Label* miss); |
729 | 729 |
730 void GetNumberHash(Register t0, Register scratch); | 730 void GetNumberHash(Register t0, Register scratch); |
731 | 731 |
732 void LoadFromNumberDictionary(Label* miss, | |
733 Register elements, | |
734 Register key, | |
735 Register result, | |
736 Register t0, | |
737 Register t1, | |
738 Register t2); | |
739 | |
740 | |
741 inline void MarkCode(NopMarkerTypes type) { | 732 inline void MarkCode(NopMarkerTypes type) { |
742 nop(type); | 733 nop(type); |
743 } | 734 } |
744 | 735 |
745 // Check if the given instruction is a 'type' marker. | 736 // Check if the given instruction is a 'type' marker. |
746 // i.e. check if is is a mov r<type>, r<type> (referenced as nop(type)) | 737 // i.e. check if is is a mov r<type>, r<type> (referenced as nop(type)) |
747 // These instructions are generated to mark special location in the code, | 738 // These instructions are generated to mark special location in the code, |
748 // like some special IC code. | 739 // like some special IC code. |
749 static inline bool IsMarkedCode(Instr instr, int type) { | 740 static inline bool IsMarkedCode(Instr instr, int type) { |
750 DCHECK((FIRST_IC_MARKER <= type) && (type < LAST_CODE_MARKER)); | 741 DCHECK((FIRST_IC_MARKER <= type) && (type < LAST_CODE_MARKER)); |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
893 Register type_reg, | 884 Register type_reg, |
894 InstanceType type); | 885 InstanceType type); |
895 | 886 |
896 // Compare instance type in a map. map contains a valid map object whose | 887 // Compare instance type in a map. map contains a valid map object whose |
897 // object type should be compared with the given type. This both | 888 // object type should be compared with the given type. This both |
898 // sets the flags and leaves the object type in the type_reg register. | 889 // sets the flags and leaves the object type in the type_reg register. |
899 void CompareInstanceType(Register map, | 890 void CompareInstanceType(Register map, |
900 Register type_reg, | 891 Register type_reg, |
901 InstanceType type); | 892 InstanceType type); |
902 | 893 |
903 | |
904 // Check if a map for a JSObject indicates that the object has fast elements. | |
905 // Jump to the specified label if it does not. | |
906 void CheckFastElements(Register map, | |
907 Register scratch, | |
908 Label* fail); | |
909 | |
910 // Check if a map for a JSObject indicates that the object can have both smi | 894 // Check if a map for a JSObject indicates that the object can have both smi |
911 // and HeapObject elements. Jump to the specified label if it does not. | 895 // and HeapObject elements. Jump to the specified label if it does not. |
912 void CheckFastObjectElements(Register map, | 896 void CheckFastObjectElements(Register map, |
913 Register scratch, | 897 Register scratch, |
914 Label* fail); | 898 Label* fail); |
915 | 899 |
916 // Check if a map for a JSObject indicates that the object has fast smi only | 900 // Check if a map for a JSObject indicates that the object has fast smi only |
917 // elements. Jump to the specified label if it does not. | 901 // elements. Jump to the specified label if it does not. |
918 void CheckFastSmiElements(Register map, | 902 void CheckFastSmiElements(Register map, |
919 Register scratch, | 903 Register scratch, |
(...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1620 inline MemOperand NativeContextMemOperand() { | 1604 inline MemOperand NativeContextMemOperand() { |
1621 return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX); | 1605 return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX); |
1622 } | 1606 } |
1623 | 1607 |
1624 #define ACCESS_MASM(masm) masm-> | 1608 #define ACCESS_MASM(masm) masm-> |
1625 | 1609 |
1626 } // namespace internal | 1610 } // namespace internal |
1627 } // namespace v8 | 1611 } // namespace v8 |
1628 | 1612 |
1629 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 1613 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
OLD | NEW |