341 for (uint worker = 0; worker < _max_workers; worker++) { |
341 for (uint worker = 0; worker < _max_workers; worker++) { |
342 _liveness_cache[worker] = NEW_C_HEAP_ARRAY(jushort, _num_regions, mtGC); |
342 _liveness_cache[worker] = NEW_C_HEAP_ARRAY(jushort, _num_regions, mtGC); |
343 Copy::fill_to_bytes(_liveness_cache[worker], _num_regions * sizeof(jushort)); |
343 Copy::fill_to_bytes(_liveness_cache[worker], _num_regions * sizeof(jushort)); |
344 } |
344 } |
345 |
345 |
346 // The call below uses stuff (the SATB* things) that are in G1, but probably |
346 // There should probably be Shenandoah-specific options for these, |
347 // belong into a shared location. |
347 // just as there are G1-specific options. |
348 ShenandoahBarrierSet::satb_mark_queue_set().initialize(this, |
348 { |
349 20 /* G1SATBProcessCompletedThreshold */, |
349 ShenandoahSATBMarkQueueSet& satbqs = ShenandoahBarrierSet::satb_mark_queue_set(); |
350 60 /* G1SATBBufferEnqueueingThresholdPercent */); |
350 satbqs.set_process_completed_buffers_threshold(20); // G1SATBProcessCompletedThreshold |
|
351 satbqs.set_buffer_enqueue_threshold_percentage(60); // G1SATBBufferEnqueueingThresholdPercent |
|
352 } |
351 |
353 |
352 _monitoring_support = new ShenandoahMonitoringSupport(this); |
354 _monitoring_support = new ShenandoahMonitoringSupport(this); |
353 _phase_timings = new ShenandoahPhaseTimings(); |
355 _phase_timings = new ShenandoahPhaseTimings(); |
354 ShenandoahStringDedup::initialize(); |
356 ShenandoahStringDedup::initialize(); |
355 ShenandoahCodeRoots::initialize(); |
357 ShenandoahCodeRoots::initialize(); |