< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp

Print this page

        

*** 39,48 **** --- 39,49 ---- #include "gc/shenandoah/shenandoahCollectionSet.hpp" #include "gc/shenandoah/shenandoahCollectorPolicy.hpp" #include "gc/shenandoah/shenandoahConcurrentMark.inline.hpp" #include "gc/shenandoah/shenandoahConcurrentRoots.hpp" #include "gc/shenandoah/shenandoahControlThread.hpp" + #include "gc/shenandoah/shenandoahEvacLockingBitmap.hpp" #include "gc/shenandoah/shenandoahFreeSet.hpp" #include "gc/shenandoah/shenandoahPhaseTimings.hpp" #include "gc/shenandoah/shenandoahHeap.inline.hpp" #include "gc/shenandoah/shenandoahHeapRegion.inline.hpp" #include "gc/shenandoah/shenandoahHeapRegionSet.hpp"
*** 257,266 **** --- 258,269 ---- "Cannot commit bitmap memory"); } _marking_context = new ShenandoahMarkingContext(_heap_region, _bitmap_region, _num_regions); + _evac_locking_bitmap = new ShenandoahEvacLockingBitmap(_heap_region); + if (ShenandoahVerify) { ReservedSpace verify_bitmap(_bitmap_size, bitmap_page_size); if (!verify_bitmap.special()) { os::commit_memory_or_exit(verify_bitmap.base(), verify_bitmap.size(), bitmap_page_size, false, "Cannot commit verification bitmap memory");
*** 493,503 **** _bitmap_regions_per_slice(0), _bitmap_bytes_per_slice(0), _bitmap_region_special(false), _aux_bitmap_region_special(false), _liveness_cache(NULL), ! _collection_set(NULL) { _heap = this; BarrierSet::set_barrier_set(new ShenandoahBarrierSet(this)); --- 496,507 ---- _bitmap_regions_per_slice(0), _bitmap_bytes_per_slice(0), _bitmap_region_special(false), _aux_bitmap_region_special(false), _liveness_cache(NULL), ! _collection_set(NULL), ! _evac_locking_bitmap(NULL) { _heap = this; BarrierSet::set_barrier_set(new ShenandoahBarrierSet(this));
*** 967,982 **** {} void work(uint worker_id) { if (_concurrent) { ShenandoahConcurrentWorkerSession worker_session(worker_id); ! ShenandoahSuspendibleThreadSetJoiner stsj(ShenandoahSuspendibleWorkers); ! ShenandoahEvacOOMScope oom_evac_scope; do_work(); } else { ShenandoahParallelWorkerSession worker_session(worker_id); - ShenandoahEvacOOMScope oom_evac_scope; do_work(); } } private: --- 971,984 ---- {} void work(uint worker_id) { if (_concurrent) { ShenandoahConcurrentWorkerSession worker_session(worker_id); ! SuspendibleThreadSetJoiner stsj(ShenandoahSuspendibleWorkers); do_work(); } else { ShenandoahParallelWorkerSession worker_session(worker_id); do_work(); } } private:
*** 1077,1087 **** AbstractGangTask("Shenandoah evacuate and update roots"), _rp(rp) {} void work(uint worker_id) { ShenandoahParallelWorkerSession worker_session(worker_id); - ShenandoahEvacOOMScope oom_evac_scope; ShenandoahEvacuateUpdateRootsClosure<> cl; MarkingCodeBlobClosure blobsCl(&cl, CodeBlobToOopClosure::FixRelocations); _rp->roots_do(worker_id, &cl); } }; --- 1079,1088 ----
*** 1662,1672 **** _vm_roots(phase), _cld_roots(phase, ShenandoahHeap::heap()->workers()->active_workers()) {} void work(uint worker_id) { ShenandoahConcurrentWorkerSession worker_session(worker_id); - ShenandoahEvacOOMScope oom; { // vm_roots and weak_roots are OopStorage backed roots, concurrent iteration // may race against OopStorage::release() calls. ShenandoahEvacUpdateOopStorageRootsClosure cl; _vm_roots.oops_do<ShenandoahEvacUpdateOopStorageRootsClosure>(&cl, worker_id); --- 1663,1672 ----
*** 1798,1808 **** } void work(uint worker_id) { ShenandoahConcurrentWorkerSession worker_session(worker_id); { - ShenandoahEvacOOMScope oom; // jni_roots and weak_roots are OopStorage backed roots, concurrent iteration // may race against OopStorage::release() calls. ShenandoahEvacUpdateCleanupOopStorageRootsClosure cl; _jni_roots.oops_do(&cl, worker_id); _vm_roots.oops_do(&cl, worker_id); --- 1798,1807 ----
*** 2470,2480 **** } void work(uint worker_id) { if (_concurrent) { ShenandoahConcurrentWorkerSession worker_session(worker_id); ! ShenandoahSuspendibleThreadSetJoiner stsj(ShenandoahSuspendibleWorkers); do_work(); } else { ShenandoahParallelWorkerSession worker_session(worker_id); do_work(); } --- 2469,2479 ---- } void work(uint worker_id) { if (_concurrent) { ShenandoahConcurrentWorkerSession worker_session(worker_id); ! SuspendibleThreadSetJoiner stsj(ShenandoahSuspendibleWorkers); do_work(); } else { ShenandoahParallelWorkerSession worker_session(worker_id); do_work(); }
< prev index next >