1.1 --- a/src/share/vm/gc_implementation/g1/concurrentMark.hpp Tue Apr 13 13:52:10 2010 -0700 1.2 +++ b/src/share/vm/gc_implementation/g1/concurrentMark.hpp Tue Mar 30 15:43:03 2010 -0400 1.3 @@ -652,11 +652,24 @@ 1.4 // we do nothing. 1.5 void markAndGrayObjectIfNecessary(oop p); 1.6 1.7 - // This iterates over the marking bitmap (either prev or next) and 1.8 - // prints out all objects that are marked on the bitmap and indicates 1.9 - // whether what they point to is also marked or not. It also iterates 1.10 - // the objects over TAMS (either prev or next). 1.11 - void print_reachable(bool use_prev_marking, const char* str); 1.12 + // It iterates over the heap and for each object it comes across it 1.13 + // will dump the contents of its reference fields, as well as 1.14 + // liveness information for the object and its referents. The dump 1.15 + // will be written to a file with the following name: 1.16 + // G1PrintReachableBaseFile + "." + str. use_prev_marking decides 1.17 + // whether the prev (use_prev_marking == true) or next 1.18 + // (use_prev_marking == false) marking information will be used to 1.19 + // determine the liveness of each object / referent. If all is true, 1.20 + // all objects in the heap will be dumped, otherwise only the live 1.21 + // ones. In the dump the following symbols / abbreviations are used: 1.22 + // M : an explicitly live object (its bitmap bit is set) 1.23 + // > : an implicitly live object (over tams) 1.24 + // O : an object outside the G1 heap (typically: in the perm gen) 1.25 + // NOT : a reference field whose referent is not live 1.26 + // AND MARKED : indicates that an object is both explicitly and 1.27 + // implicitly live (it should be one or the other, not both) 1.28 + void print_reachable(const char* str, 1.29 + bool use_prev_marking, bool all) PRODUCT_RETURN; 1.30 1.31 // Clear the next marking bitmap (will be called concurrently). 1.32 void clearNextBitmap();