Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/g1/concurrentMark.hpp @ 3772:6747fd0512e0
7004681: G1: Extend marking verification to Full GCs
Summary: Perform a heap verification after the first phase of G1's full GC using objects' mark words to determine liveness. The third parameter of the heap verification routines, which was used in G1 to determine which marking bitmap to use in liveness calculations, has been changed from a boolean to an enum with values defined for using the mark word, and the 'prev' and 'next' bitmaps.
Reviewed-by: tonyp, ysr
author | johnc |
---|---|
date | Tue, 14 Jun 2011 11:01:10 -0700 |
parents | 842b840e67db |
children | 23d434c6290d |
comparison
equal
deleted
inserted
replaced
3771:842b840e67db | 3772:6747fd0512e0 |
---|---|
734 | 734 |
735 // It iterates over the heap and for each object it comes across it | 735 // It iterates over the heap and for each object it comes across it |
736 // will dump the contents of its reference fields, as well as | 736 // will dump the contents of its reference fields, as well as |
737 // liveness information for the object and its referents. The dump | 737 // liveness information for the object and its referents. The dump |
738 // will be written to a file with the following name: | 738 // will be written to a file with the following name: |
739 // G1PrintReachableBaseFile + "." + str. use_prev_marking decides | 739 // G1PrintReachableBaseFile + "." + str. |
740 // whether the prev (use_prev_marking == true) or next | 740 // vo decides whether the prev (vo == UsePrevMarking), the next |
741 // (use_prev_marking == false) marking information will be used to | 741 // (vo == UseNextMarking) marking information, or the mark word |
742 // determine the liveness of each object / referent. If all is true, | 742 // (vo == UseMarkWord) will be used to determine the liveness of |
743 // all objects in the heap will be dumped, otherwise only the live | 743 // each object / referent. |
744 // ones. In the dump the following symbols / abbreviations are used: | 744 // If all is true, all objects in the heap will be dumped, otherwise |
745 // only the live ones. In the dump the following symbols / breviations | |
746 // are used: | |
745 // M : an explicitly live object (its bitmap bit is set) | 747 // M : an explicitly live object (its bitmap bit is set) |
746 // > : an implicitly live object (over tams) | 748 // > : an implicitly live object (over tams) |
747 // O : an object outside the G1 heap (typically: in the perm gen) | 749 // O : an object outside the G1 heap (typically: in the perm gen) |
748 // NOT : a reference field whose referent is not live | 750 // NOT : a reference field whose referent is not live |
749 // AND MARKED : indicates that an object is both explicitly and | 751 // AND MARKED : indicates that an object is both explicitly and |
750 // implicitly live (it should be one or the other, not both) | 752 // implicitly live (it should be one or the other, not both) |
751 void print_reachable(const char* str, | 753 void print_reachable(const char* str, |
752 bool use_prev_marking, bool all) PRODUCT_RETURN; | 754 VerifyOption vo, bool all) PRODUCT_RETURN; |
753 | 755 |
754 // Clear the next marking bitmap (will be called concurrently). | 756 // Clear the next marking bitmap (will be called concurrently). |
755 void clearNextBitmap(); | 757 void clearNextBitmap(); |
756 | 758 |
757 // main CMS steps and related support | 759 // main CMS steps and related support |