16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
24 */
25
26 #include "precompiled.hpp"
27 #include "memory/allocation.hpp"
28 #include "memory/universe.hpp"
29
30 #include "gc/shared/gcArguments.hpp"
31 #include "gc/shared/gcTimer.hpp"
32 #include "gc/shared/gcTraceTime.inline.hpp"
33 #include "gc/shared/locationPrinter.inline.hpp"
34 #include "gc/shared/memAllocator.hpp"
35 #include "gc/shared/plab.hpp"
36 #include "gc/shared/tlab_globals.hpp"
37
38 #include "gc/shenandoah/shenandoahBarrierSet.hpp"
39 #include "gc/shenandoah/shenandoahClosures.inline.hpp"
40 #include "gc/shenandoah/shenandoahCollectionSet.hpp"
41 #include "gc/shenandoah/shenandoahCollectorPolicy.hpp"
42 #include "gc/shenandoah/shenandoahConcurrentMark.hpp"
43 #include "gc/shenandoah/shenandoahMarkingContext.inline.hpp"
44 #include "gc/shenandoah/shenandoahControlThread.hpp"
45 #include "gc/shenandoah/shenandoahFreeSet.hpp"
46 #include "gc/shenandoah/shenandoahPhaseTimings.hpp"
47 #include "gc/shenandoah/shenandoahHeap.inline.hpp"
48 #include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
49 #include "gc/shenandoah/shenandoahHeapRegionSet.hpp"
50 #include "gc/shenandoah/shenandoahInitLogger.hpp"
51 #include "gc/shenandoah/shenandoahMarkingContext.inline.hpp"
52 #include "gc/shenandoah/shenandoahMemoryPool.hpp"
53 #include "gc/shenandoah/shenandoahMetrics.hpp"
54 #include "gc/shenandoah/shenandoahMonitoringSupport.hpp"
55 #include "gc/shenandoah/shenandoahOopClosures.inline.hpp"
386 ShenandoahSATBMarkQueueSet& satbqs = ShenandoahBarrierSet::satb_mark_queue_set();
387 satbqs.set_process_completed_buffers_threshold(20); // G1SATBProcessCompletedThreshold
388 satbqs.set_buffer_enqueue_threshold_percentage(60); // G1SATBBufferEnqueueingThresholdPercent
389 }
390
391 _monitoring_support = new ShenandoahMonitoringSupport(this);
392 _phase_timings = new ShenandoahPhaseTimings(max_workers());
393 ShenandoahCodeRoots::initialize();
394
395 if (ShenandoahPacing) {
396 _pacer = new ShenandoahPacer(this);
397 _pacer->setup_for_idle();
398 } else {
399 _pacer = nullptr;
400 }
401
402 _control_thread = new ShenandoahControlThread();
403
404 ShenandoahInitLogger::print();
405
406 return JNI_OK;
407 }
408
409 void ShenandoahHeap::initialize_mode() {
410 if (ShenandoahGCMode != nullptr) {
411 if (strcmp(ShenandoahGCMode, "satb") == 0) {
412 _gc_mode = new ShenandoahSATBMode();
413 } else if (strcmp(ShenandoahGCMode, "iu") == 0) {
414 _gc_mode = new ShenandoahIUMode();
415 } else if (strcmp(ShenandoahGCMode, "passive") == 0) {
416 _gc_mode = new ShenandoahPassiveMode();
417 } else {
418 vm_exit_during_initialization("Unknown -XX:ShenandoahGCMode option");
419 }
420 } else {
421 vm_exit_during_initialization("Unknown -XX:ShenandoahGCMode option (null)");
422 }
423 _gc_mode->initialize_flags();
424 if (_gc_mode->is_diagnostic() && !UnlockDiagnosticVMOptions) {
425 vm_exit_during_initialization(
|
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
24 */
25
26 #include "precompiled.hpp"
27 #include "memory/allocation.hpp"
28 #include "memory/universe.hpp"
29
30 #include "gc/shared/gcArguments.hpp"
31 #include "gc/shared/gcTimer.hpp"
32 #include "gc/shared/gcTraceTime.inline.hpp"
33 #include "gc/shared/locationPrinter.inline.hpp"
34 #include "gc/shared/memAllocator.hpp"
35 #include "gc/shared/plab.hpp"
36 #include "gc/shared/slidingForwarding.hpp"
37 #include "gc/shared/tlab_globals.hpp"
38
39 #include "gc/shenandoah/shenandoahBarrierSet.hpp"
40 #include "gc/shenandoah/shenandoahClosures.inline.hpp"
41 #include "gc/shenandoah/shenandoahCollectionSet.hpp"
42 #include "gc/shenandoah/shenandoahCollectorPolicy.hpp"
43 #include "gc/shenandoah/shenandoahConcurrentMark.hpp"
44 #include "gc/shenandoah/shenandoahMarkingContext.inline.hpp"
45 #include "gc/shenandoah/shenandoahControlThread.hpp"
46 #include "gc/shenandoah/shenandoahFreeSet.hpp"
47 #include "gc/shenandoah/shenandoahPhaseTimings.hpp"
48 #include "gc/shenandoah/shenandoahHeap.inline.hpp"
49 #include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
50 #include "gc/shenandoah/shenandoahHeapRegionSet.hpp"
51 #include "gc/shenandoah/shenandoahInitLogger.hpp"
52 #include "gc/shenandoah/shenandoahMarkingContext.inline.hpp"
53 #include "gc/shenandoah/shenandoahMemoryPool.hpp"
54 #include "gc/shenandoah/shenandoahMetrics.hpp"
55 #include "gc/shenandoah/shenandoahMonitoringSupport.hpp"
56 #include "gc/shenandoah/shenandoahOopClosures.inline.hpp"
387 ShenandoahSATBMarkQueueSet& satbqs = ShenandoahBarrierSet::satb_mark_queue_set();
388 satbqs.set_process_completed_buffers_threshold(20); // G1SATBProcessCompletedThreshold
389 satbqs.set_buffer_enqueue_threshold_percentage(60); // G1SATBBufferEnqueueingThresholdPercent
390 }
391
392 _monitoring_support = new ShenandoahMonitoringSupport(this);
393 _phase_timings = new ShenandoahPhaseTimings(max_workers());
394 ShenandoahCodeRoots::initialize();
395
396 if (ShenandoahPacing) {
397 _pacer = new ShenandoahPacer(this);
398 _pacer->setup_for_idle();
399 } else {
400 _pacer = nullptr;
401 }
402
403 _control_thread = new ShenandoahControlThread();
404
405 ShenandoahInitLogger::print();
406
407 SlidingForwarding::initialize(_heap_region, ShenandoahHeapRegion::region_size_words());
408
409 return JNI_OK;
410 }
411
412 void ShenandoahHeap::initialize_mode() {
413 if (ShenandoahGCMode != nullptr) {
414 if (strcmp(ShenandoahGCMode, "satb") == 0) {
415 _gc_mode = new ShenandoahSATBMode();
416 } else if (strcmp(ShenandoahGCMode, "iu") == 0) {
417 _gc_mode = new ShenandoahIUMode();
418 } else if (strcmp(ShenandoahGCMode, "passive") == 0) {
419 _gc_mode = new ShenandoahPassiveMode();
420 } else {
421 vm_exit_during_initialization("Unknown -XX:ShenandoahGCMode option");
422 }
423 } else {
424 vm_exit_during_initialization("Unknown -XX:ShenandoahGCMode option (null)");
425 }
426 _gc_mode->initialize_flags();
427 if (_gc_mode->is_diagnostic() && !UnlockDiagnosticVMOptions) {
428 vm_exit_during_initialization(
|