719 // G1PrintReachableBaseFile + "." + str.
720 // vo decides whether the prev (vo == UsePrevMarking), the next
721 // (vo == UseNextMarking) marking information, or the mark word
722 // (vo == UseMarkWord) will be used to determine the liveness of
723 // each object / referent.
724 // If all is true, all objects in the heap will be dumped, otherwise
725 // only the live ones. In the dump the following symbols / breviations
726 // are used:
727 // M : an explicitly live object (its bitmap bit is set)
728 // > : an implicitly live object (over tams)
729 // O : an object outside the G1 heap (typically: in the perm gen)
730 // NOT : a reference field whose referent is not live
731 // AND MARKED : indicates that an object is both explicitly and
732 // implicitly live (it should be one or the other, not both)
733 void print_reachable(const char* str,
734 VerifyOption vo, bool all) PRODUCT_RETURN;
735
736 // Clear the next marking bitmap (will be called concurrently).
737 void clearNextBitmap();
738
739 // These two do the work that needs to be done before and after the
740 // initial root checkpoint. Since this checkpoint can be done at two
741 // different points (i.e. an explicit pause or piggy-backed on a
742 // young collection), then it's nice to be able to easily share the
743 // pre/post code. It might be the case that we can put everything in
744 // the post method. TP
745 void checkpointRootsInitialPre();
746 void checkpointRootsInitialPost();
747
748 // Scan all the root regions and mark everything reachable from
749 // them.
750 void scanRootRegions();
751
752 // Scan a single root region and mark everything reachable from it.
753 void scanRootRegion(HeapRegion* hr, uint worker_id);
754
755 // Do concurrent phase of marking, to a tentative transitive closure.
756 void markFromRoots();
757
758 void checkpointRootsFinal(bool clear_all_soft_refs);
|
719 // G1PrintReachableBaseFile + "." + str.
720 // vo decides whether the prev (vo == UsePrevMarking), the next
721 // (vo == UseNextMarking) marking information, or the mark word
722 // (vo == UseMarkWord) will be used to determine the liveness of
723 // each object / referent.
724 // If all is true, all objects in the heap will be dumped, otherwise
725 // only the live ones. In the dump the following symbols / breviations
726 // are used:
727 // M : an explicitly live object (its bitmap bit is set)
728 // > : an implicitly live object (over tams)
729 // O : an object outside the G1 heap (typically: in the perm gen)
730 // NOT : a reference field whose referent is not live
731 // AND MARKED : indicates that an object is both explicitly and
732 // implicitly live (it should be one or the other, not both)
733 void print_reachable(const char* str,
734 VerifyOption vo, bool all) PRODUCT_RETURN;
735
736 // Clear the next marking bitmap (will be called concurrently).
737 void clearNextBitmap();
738
739 // Return whether the next mark bitmap has no marks set.
740 bool nextMarkBitmapIsClear();
741
742 // These two do the work that needs to be done before and after the
743 // initial root checkpoint. Since this checkpoint can be done at two
744 // different points (i.e. an explicit pause or piggy-backed on a
745 // young collection), then it's nice to be able to easily share the
746 // pre/post code. It might be the case that we can put everything in
747 // the post method. TP
748 void checkpointRootsInitialPre();
749 void checkpointRootsInitialPost();
750
751 // Scan all the root regions and mark everything reachable from
752 // them.
753 void scanRootRegions();
754
755 // Scan a single root region and mark everything reachable from it.
756 void scanRootRegion(HeapRegion* hr, uint worker_id);
757
758 // Do concurrent phase of marking, to a tentative transitive closure.
759 void markFromRoots();
760
761 void checkpointRootsFinal(bool clear_all_soft_refs);
|