| 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 |