754 size_t predicted_bytes_to_copy() const { return _predicted_bytes_to_copy; }
755
756 void set_recorded_rs_length(size_t rs_length) {
757 _recorded_rs_length = rs_length;
758 }
759
760 void set_predicted_elapsed_time_ms(double ms) {
761 _predicted_elapsed_time_ms = ms;
762 }
763
764 void set_predicted_bytes_to_copy(size_t bytes) {
765 _predicted_bytes_to_copy = bytes;
766 }
767
768 virtual CompactibleSpace* next_compaction_space() const;
769
770 virtual void reset_after_compaction();
771
772 // Routines for managing a list of code roots (attached to the
773 // this region's RSet) that point into this heap region.
774 void add_strong_code_root(nmethod* nm);
775 void remove_strong_code_root(nmethod* nm);
776
777 // During a collection, migrate the successfully evacuated
778 // strong code roots that referenced into this region to the
779 // new regions that they now point into. Unsuccessfully
780 // evacuated code roots are not migrated.
781 void migrate_strong_code_roots();
782
783 // Applies blk->do_code_blob() to each of the entries in
784 // the strong code roots list for this region
785 void strong_code_roots_do(CodeBlobClosure* blk) const;
786
787 // Verify that the entries on the strong code root list for this
788 // region are live and include at least one pointer into this region.
789 void verify_strong_code_roots(VerifyOption vo, bool* failures) const;
790
791 void print() const;
792 void print_on(outputStream* st) const;
793
794 // vo == UsePrevMarking -> use "prev" marking information,
795 // vo == UseNextMarking -> use "next" marking information
796 // vo == UseMarkWord -> use the mark word in the object header
797 //
798 // NOTE: Only the "prev" marking information is guaranteed to be
799 // consistent most of the time, so most calls to this should use
800 // vo == UsePrevMarking.
801 // Currently, there is only one case where this is called with
|
754 size_t predicted_bytes_to_copy() const { return _predicted_bytes_to_copy; }
755
756 void set_recorded_rs_length(size_t rs_length) {
757 _recorded_rs_length = rs_length;
758 }
759
760 void set_predicted_elapsed_time_ms(double ms) {
761 _predicted_elapsed_time_ms = ms;
762 }
763
764 void set_predicted_bytes_to_copy(size_t bytes) {
765 _predicted_bytes_to_copy = bytes;
766 }
767
768 virtual CompactibleSpace* next_compaction_space() const;
769
770 virtual void reset_after_compaction();
771
772 // Routines for managing a list of code roots (attached to the
773 // this region's RSet) that point into this heap region.
774 void lock_add_strong_code_root(nmethod* nm);
775 void add_strong_code_root(nmethod* nm);
776 void remove_strong_code_root(nmethod* nm);
777
778 // Applies blk->do_code_blob() to each of the entries in
779 // the strong code roots list for this region
780 void strong_code_roots_do(CodeBlobClosure* blk) const;
781
782 // Verify that the entries on the strong code root list for this
783 // region are live and include at least one pointer into this region.
784 void verify_strong_code_roots(VerifyOption vo, bool* failures) const;
785
786 void print() const;
787 void print_on(outputStream* st) const;
788
789 // vo == UsePrevMarking -> use "prev" marking information,
790 // vo == UseNextMarking -> use "next" marking information
791 // vo == UseMarkWord -> use the mark word in the object header
792 //
793 // NOTE: Only the "prev" marking information is guaranteed to be
794 // consistent most of the time, so most calls to this should use
795 // vo == UsePrevMarking.
796 // Currently, there is only one case where this is called with
|