94 static HeapWord* miscdata_end; |
94 static HeapWord* miscdata_end; |
95 static HeapWord* misccode_bottom; |
95 static HeapWord* misccode_bottom; |
96 static HeapWord* misccode_end; |
96 static HeapWord* misccode_end; |
97 static HeapWord* shared_end; |
97 static HeapWord* shared_end; |
98 |
98 |
99 // List of klassOops whose vtbl entries are used to patch others. |
|
100 static void** _vtbl_list; |
|
101 |
|
102 // Performance Counters |
99 // Performance Counters |
103 GenerationCounters* _gen_counters; |
100 GenerationCounters* _gen_counters; |
104 CSpaceCounters* _space_counters; |
101 CSpaceCounters* _space_counters; |
105 |
102 |
106 void initialize_performance_counters(); |
103 void initialize_performance_counters(); |
151 OffsetTableContigSpace* rw_space() const { return _rw_space; } |
148 OffsetTableContigSpace* rw_space() const { return _rw_space; } |
152 VirtualSpace* md_space() { return &_md_vs; } |
149 VirtualSpace* md_space() { return &_md_vs; } |
153 VirtualSpace* mc_space() { return &_mc_vs; } |
150 VirtualSpace* mc_space() { return &_mc_vs; } |
154 ContiguousSpace* unshared_space() const { return _the_space; } |
151 ContiguousSpace* unshared_space() const { return _the_space; } |
155 |
152 |
156 static bool inline is_shared(const oopDesc* p) { |
153 static bool inline is_shared(const void* p) { |
157 return (HeapWord*)p >= shared_bottom && (HeapWord*)p < shared_end; |
154 return p >= shared_bottom && p < shared_end; |
158 } |
155 } |
159 // RedefineClasses note: this tester is used to check residence of |
156 // RedefineClasses note: this tester is used to check residence of |
160 // the specified oop in the shared readonly space and not whether |
157 // the specified oop in the shared readonly space and not whether |
161 // the oop is readonly. |
158 // the oop is readonly. |
162 static bool inline is_shared_readonly(const oopDesc* p) { |
159 static bool inline is_shared_readonly(const void* p) { |
163 return (HeapWord*)p >= readonly_bottom && (HeapWord*)p < readonly_end; |
160 return p >= readonly_bottom && p < readonly_end; |
164 } |
161 } |
165 // RedefineClasses note: this tester is used to check residence of |
162 // RedefineClasses note: this tester is used to check residence of |
166 // the specified oop in the shared readwrite space and not whether |
163 // the specified oop in the shared readwrite space and not whether |
167 // the oop is readwrite. |
164 // the oop is readwrite. |
168 static bool inline is_shared_readwrite(const oopDesc* p) { |
165 static bool inline is_shared_readwrite(const void* p) { |
169 return (HeapWord*)p >= readwrite_bottom && (HeapWord*)p < readwrite_end; |
166 return p >= readwrite_bottom && p < readwrite_end; |
170 } |
167 } |
171 |
168 |
172 bool is_in_unshared(const void* p) const { |
169 // Checks if the pointer is either in unshared space or in shared space |
173 return OneContigSpaceCardGeneration::is_in(p); |
|
174 } |
|
175 |
|
176 bool is_in_shared(const void* p) const { |
|
177 return p >= shared_bottom && p < shared_end; |
|
178 } |
|
179 |
|
180 inline bool is_in(const void* p) const { |
170 inline bool is_in(const void* p) const { |
181 return is_in_unshared(p) || is_in_shared(p); |
171 return OneContigSpaceCardGeneration::is_in(p) || is_shared(p); |
182 } |
172 } |
183 |
173 |
184 inline PermanentGenerationSpec* spec() const { return _spec; } |
174 inline PermanentGenerationSpec* spec() const { return _spec; } |
185 inline void set_spec(PermanentGenerationSpec* spec) { _spec = spec; } |
175 inline void set_spec(PermanentGenerationSpec* spec) { _spec = spec; } |
186 |
176 |
234 |
224 |
235 static void generate_vtable_methods(void** vtbl_list, |
225 static void generate_vtable_methods(void** vtbl_list, |
236 void** vtable, |
226 void** vtable, |
237 char** md_top, char* md_end, |
227 char** md_top, char* md_end, |
238 char** mc_top, char* mc_end); |
228 char** mc_top, char* mc_end); |
|
229 static void* find_matching_vtbl_ptr(void** vtbl_list, |
|
230 void* new_vtable_start, |
|
231 void* obj); |
239 |
232 |
240 void verify(bool allow_dirty); |
233 void verify(bool allow_dirty); |
241 |
234 |
242 // Serialization |
235 // Serialization |
243 static void initialize_oops() KERNEL_RETURN; |
236 static void initialize_oops() KERNEL_RETURN; |