623 // requested phase has been reached, the collector will attempt to
624 // avoid transitioning to a new phase until a new request is made.
625 // [Note: A collector might not be able to remain in a given phase.
626 // For example, a full collection might cancel an in-progress
627 // concurrent collection.]
628 //
629 // Returns true when the phase is reached. Returns false for an
630 // unknown phase. The default implementation returns false.
631 virtual bool request_concurrent_phase(const char* phase);
632
633 // Provides a thread pool to SafepointSynchronize to use
634 // for parallel safepoint cleanup.
635 // GCs that use a GC worker thread pool may want to share
636 // it for use during safepoint cleanup. This is only possible
637 // if the GC can pause and resume concurrent work (e.g. G1
638 // concurrent marking) for an intermittent non-GC safepoint.
639 // If this method returns NULL, SafepointSynchronize will
640 // perform cleanup tasks serially in the VMThread.
641 virtual WorkGang* get_safepoint_workers() { return NULL; }
642
643 // Accumulate additional statistics from GCLABs.
644 virtual void accumulate_statistics_all_gclabs();
645
646 // Support for object pinning. This is used by JNI Get*Critical()
647 // and Release*Critical() family of functions. If supported, the GC
648 // must guarantee that pinned objects never move.
649 virtual bool supports_object_pinning() const;
650 virtual oop pin_object(JavaThread* thread, oop obj);
651 virtual void unpin_object(JavaThread* thread, oop obj);
652
653 // Non product verification and debugging.
654 #ifndef PRODUCT
655 // Support for PromotionFailureALot. Return true if it's time to cause a
656 // promotion failure. The no-argument version uses
657 // this->_promotion_failure_alot_count as the counter.
658 inline bool promotion_should_fail(volatile size_t* count);
659 inline bool promotion_should_fail();
660
661 // Reset the PromotionFailureALot counters. Should be called at the end of a
662 // GC in which promotion failure occurred.
663 inline void reset_promotion_should_fail(volatile size_t* count);
664 inline void reset_promotion_should_fail();
665 #endif // #ifndef PRODUCT
|
623 // requested phase has been reached, the collector will attempt to
624 // avoid transitioning to a new phase until a new request is made.
625 // [Note: A collector might not be able to remain in a given phase.
626 // For example, a full collection might cancel an in-progress
627 // concurrent collection.]
628 //
629 // Returns true when the phase is reached. Returns false for an
630 // unknown phase. The default implementation returns false.
631 virtual bool request_concurrent_phase(const char* phase);
632
633 // Provides a thread pool to SafepointSynchronize to use
634 // for parallel safepoint cleanup.
635 // GCs that use a GC worker thread pool may want to share
636 // it for use during safepoint cleanup. This is only possible
637 // if the GC can pause and resume concurrent work (e.g. G1
638 // concurrent marking) for an intermittent non-GC safepoint.
639 // If this method returns NULL, SafepointSynchronize will
640 // perform cleanup tasks serially in the VMThread.
641 virtual WorkGang* get_safepoint_workers() { return NULL; }
642
643 // Support for object pinning. This is used by JNI Get*Critical()
644 // and Release*Critical() family of functions. If supported, the GC
645 // must guarantee that pinned objects never move.
646 virtual bool supports_object_pinning() const;
647 virtual oop pin_object(JavaThread* thread, oop obj);
648 virtual void unpin_object(JavaThread* thread, oop obj);
649
650 // Non product verification and debugging.
651 #ifndef PRODUCT
652 // Support for PromotionFailureALot. Return true if it's time to cause a
653 // promotion failure. The no-argument version uses
654 // this->_promotion_failure_alot_count as the counter.
655 inline bool promotion_should_fail(volatile size_t* count);
656 inline bool promotion_should_fail();
657
658 // Reset the PromotionFailureALot counters. Should be called at the end of a
659 // GC in which promotion failure occurred.
660 inline void reset_promotion_should_fail(volatile size_t* count);
661 inline void reset_promotion_should_fail();
662 #endif // #ifndef PRODUCT
|