Changeset 44341 in webkit for trunk/JavaScriptCore/jit/ExecutableAllocator.h
- Timestamp:
- Jun 1, 2009, 6:20:35 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/ExecutableAllocator.h
r43338 r44341 37 37 #define JIT_ALLOCATOR_LARGE_ALLOC_SIZE (ExecutableAllocator::pageSize * 4) 38 38 39 #if ENABLE(ASSEMBLER_WX_EXCLUSIVE) 40 #define PROTECTION_FLAGS_RW (PROT_READ | PROT_WRITE) 41 #define PROTECTION_FLAGS_RX (PROT_READ | PROT_EXEC) 42 #define INITIAL_PROTECTION_FLAGS PROTECTION_FLAGS_RX 43 #else 44 #define INITIAL_PROTECTION_FLAGS (PROT_READ | PROT_WRITE | PROT_EXEC) 45 #endif 46 39 47 namespace JSC { 40 48 … … 113 121 114 122 class ExecutableAllocator { 123 enum ProtectionSeting { Writable, Executable }; 124 115 125 public: 116 126 static size_t pageSize; … … 142 152 } 143 153 154 #if ENABLE(ASSEMBLER_WX_EXCLUSIVE) 155 static void makeWritable(void* start, size_t size) { reprotectRegion(start, size, Writable); } 156 static void makeExecutable(void* start, size_t size) { reprotectRegion(start, size, Executable); } 157 158 class MakeWritable { 159 public: 160 MakeWritable(void* start, size_t size) 161 : m_start(start) 162 , m_size(size) 163 { 164 makeWritable(start, size); 165 } 166 167 ~MakeWritable() 168 { 169 makeExecutable(m_start, m_size); 170 } 171 172 private: 173 void* m_start; 174 size_t m_size; 175 }; 176 #else 177 static void makeWritable(void*, size_t) {} 178 static void makeExecutable(void*, size_t) {} 179 class MakeWritable { public: MakeWritable(void*, size_t) {} }; 180 #endif 181 144 182 private: 183 184 #if ENABLE(ASSEMBLER_WX_EXCLUSIVE) 185 static void reprotectRegion(void*, size_t, ProtectionSeting); 186 #endif 187 145 188 RefPtr<ExecutablePool> m_smallAllocationPool; 146 189 static void intializePageSize();
Note:
See TracChangeset
for help on using the changeset viewer.