Concurrent class unloading
241
242 HeapWord* ZCollectedHeap::block_start(const void* addr) const {
243 return (HeapWord*)_heap.block_start((uintptr_t)addr);
244 }
245
246 size_t ZCollectedHeap::block_size(const HeapWord* addr) const {
247 size_t size_in_bytes = _heap.block_size((uintptr_t)addr);
248 return ZUtils::bytes_to_words(size_in_bytes);
249 }
250
251 bool ZCollectedHeap::block_is_obj(const HeapWord* addr) const {
252 return _heap.block_is_obj((uintptr_t)addr);
253 }
254
255 void ZCollectedHeap::register_nmethod(nmethod* nm) {
256 assert_locked_or_safepoint(CodeCache_lock);
257 ZNMethodTable::register_nmethod(nm);
258 }
259
260 void ZCollectedHeap::unregister_nmethod(nmethod* nm) {
261 assert_locked_or_safepoint(CodeCache_lock);
262 ZNMethodTable::unregister_nmethod(nm);
263 }
264
265 void ZCollectedHeap::verify_nmethod(nmethod* nm) {
266 // Does nothing
267 }
268
269 WorkGang* ZCollectedHeap::get_safepoint_workers() {
270 return _runtime_workers.workers();
271 }
272
273 jlong ZCollectedHeap::millis_since_last_gc() {
274 return ZStatCycle::time_since_last() / MILLIUNITS;
275 }
276
277 void ZCollectedHeap::gc_threads_do(ThreadClosure* tc) const {
278 tc->do_thread(_director);
279 tc->do_thread(_driver);
280 tc->do_thread(_stat);
|
241
242 HeapWord* ZCollectedHeap::block_start(const void* addr) const {
243 return (HeapWord*)_heap.block_start((uintptr_t)addr);
244 }
245
246 size_t ZCollectedHeap::block_size(const HeapWord* addr) const {
247 size_t size_in_bytes = _heap.block_size((uintptr_t)addr);
248 return ZUtils::bytes_to_words(size_in_bytes);
249 }
250
251 bool ZCollectedHeap::block_is_obj(const HeapWord* addr) const {
252 return _heap.block_is_obj((uintptr_t)addr);
253 }
254
255 void ZCollectedHeap::register_nmethod(nmethod* nm) {
256 assert_locked_or_safepoint(CodeCache_lock);
257 ZNMethodTable::register_nmethod(nm);
258 }
259
260 void ZCollectedHeap::unregister_nmethod(nmethod* nm) {
261 //assert_locked_or_safepoint(CodeCache_lock);
262 ZNMethodTable::unregister_nmethod(nm);
263 }
264
265 void ZCollectedHeap::verify_nmethod(nmethod* nm) {
266 // Does nothing
267 }
268
269 WorkGang* ZCollectedHeap::get_safepoint_workers() {
270 return _runtime_workers.workers();
271 }
272
273 jlong ZCollectedHeap::millis_since_last_gc() {
274 return ZStatCycle::time_since_last() / MILLIUNITS;
275 }
276
277 void ZCollectedHeap::gc_threads_do(ThreadClosure* tc) const {
278 tc->do_thread(_director);
279 tc->do_thread(_driver);
280 tc->do_thread(_stat);
|