Changeset 44455 in webkit for trunk/JavaScriptCore/assembler/MacroAssemblerCodeRef.h
- Timestamp:
- Jun 5, 2009, 12:55:38 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/assembler/MacroAssemblerCodeRef.h
r44030 r44455 38 38 namespace JSC { 39 39 40 // FunctionPtr: 41 // 42 // FunctionPtr should be used to wrap pointers to C/C++ functions in JSC 43 // (particularly, the stub functions). 44 class FunctionPtr { 45 public: 46 FunctionPtr() 47 : m_value(0) 48 { 49 } 50 51 template<typename FunctionType> 52 explicit FunctionPtr(FunctionType* value) 53 : m_value(reinterpret_cast<void*>(value)) 54 { 55 ASSERT(m_value); 56 } 57 58 void* value() const { return m_value; } 59 void* executableAddress() const { return m_value; } 60 61 62 private: 63 void* m_value; 64 }; 65 66 // ReturnAddressPtr: 67 // 68 // ReturnAddressPtr should be used to wrap return addresses generated by processor 69 // 'call' instructions exectued in JIT code. We use return addresses to look up 70 // exception and optimization information, and to repatch the call instruction 71 // that is the source of the return address. 72 class ReturnAddressPtr { 73 public: 74 ReturnAddressPtr() 75 : m_value(0) 76 { 77 } 78 79 explicit ReturnAddressPtr(void* value) 80 : m_value(value) 81 { 82 ASSERT(m_value); 83 } 84 85 void* value() const { return m_value; } 86 87 private: 88 void* m_value; 89 }; 90 91 // MacroAssemblerCodePtr: 92 // 93 // MacroAssemblerCodePtr should be used to wrap pointers to JIT generated code. 94 class MacroAssemblerCodePtr { 95 public: 96 MacroAssemblerCodePtr() 97 : m_value(0) 98 { 99 } 100 101 explicit MacroAssemblerCodePtr(void* value) 102 : m_value(value) 103 { 104 ASSERT(m_value); 105 } 106 107 explicit MacroAssemblerCodePtr(ReturnAddressPtr ra) 108 : m_value(ra.value()) 109 { 110 ASSERT(m_value); 111 } 112 113 void* executableAddress() const { return m_value; } 114 void* dataLocation() const { ASSERT(m_value); return m_value; } 115 116 private: 117 void* m_value; 118 }; 119 40 120 // MacroAssemblerCodeRef: 41 121 // … … 46 126 public: 47 127 MacroAssemblerCodeRef() 48 : m_code(0)49 128 #ifndef NDEBUG 50 ,m_size(0)129 : m_size(0) 51 130 #endif 52 131 { … … 64 143 } 65 144 66 void*m_code;145 MacroAssemblerCodePtr m_code; 67 146 RefPtr<ExecutablePool> m_executablePool; 68 147 #ifndef NDEBUG
Note:
See TracChangeset
for help on using the changeset viewer.