433 // This is true from the very start of concurrent marking until the
434 // point when all the tasks complete their work. It is really used
435 // to determine the points between the end of concurrent marking and
436 // time of remark.
437 volatile bool _concurrent_marking_in_progress;
438
439 // Verbose level
440 CMVerboseLevel _verbose_level;
441
442 // All of these times are in ms
443 NumberSeq _init_times;
444 NumberSeq _remark_times;
445 NumberSeq _remark_mark_times;
446 NumberSeq _remark_weak_ref_times;
447 NumberSeq _cleanup_times;
448 double _total_counting_time;
449 double _total_rs_scrub_time;
450
451 double* _accum_task_vtime; // Accumulated task vtime
452
453 FlexibleWorkGang* _parallel_workers;
454
455 ForceOverflowSettings _force_overflow_conc;
456 ForceOverflowSettings _force_overflow_stw;
457
458 void weakRefsWorkParallelPart(BoolObjectClosure* is_alive, bool purged_classes);
459 void weakRefsWork(bool clear_all_soft_refs);
460
461 void swapMarkBitMaps();
462
463 // It resets the global marking data structures, as well as the
464 // task local ones; should be called during initial mark.
465 void reset();
466
467 // Resets all the marking data structures. Called when we have to restart
468 // marking or when marking completes (via set_non_marking_state below).
469 void reset_marking_state(bool clear_overflow = true);
470
471 // We do this after we're done with marking so that the marking data
472 // structures are initialized to a sensible and predictable state.
473 void set_non_marking_state();
|
433 // This is true from the very start of concurrent marking until the
434 // point when all the tasks complete their work. It is really used
435 // to determine the points between the end of concurrent marking and
436 // time of remark.
437 volatile bool _concurrent_marking_in_progress;
438
439 // Verbose level
440 CMVerboseLevel _verbose_level;
441
442 // All of these times are in ms
443 NumberSeq _init_times;
444 NumberSeq _remark_times;
445 NumberSeq _remark_mark_times;
446 NumberSeq _remark_weak_ref_times;
447 NumberSeq _cleanup_times;
448 double _total_counting_time;
449 double _total_rs_scrub_time;
450
451 double* _accum_task_vtime; // Accumulated task vtime
452
453 WorkGang* _parallel_workers;
454
455 ForceOverflowSettings _force_overflow_conc;
456 ForceOverflowSettings _force_overflow_stw;
457
458 void weakRefsWorkParallelPart(BoolObjectClosure* is_alive, bool purged_classes);
459 void weakRefsWork(bool clear_all_soft_refs);
460
461 void swapMarkBitMaps();
462
463 // It resets the global marking data structures, as well as the
464 // task local ones; should be called during initial mark.
465 void reset();
466
467 // Resets all the marking data structures. Called when we have to restart
468 // marking or when marking completes (via set_non_marking_state below).
469 void reset_marking_state(bool clear_overflow = true);
470
471 // We do this after we're done with marking so that the marking data
472 // structures are initialized to a sensible and predictable state.
473 void set_non_marking_state();
|