Print this page
rev 2896 : 6484965: G1: piggy-back liveness accounting phase on marking
Summary: Remove the separate counting phase of concurrent marking by tracking the amount of marked bytes and the cards spanned by marked objects in marking task/worker thread local data structures, which are updated as individual objects are marked.
Reviewed-by: brutisso

Split Close
Expand all
Collapse all
          --- old/src/share/vm/gc_implementation/g1/heapRegion.hpp
          +++ new/src/share/vm/gc_implementation/g1/heapRegion.hpp
↓ open down ↓ 365 lines elided ↑ open up ↑
 366  366    // up once during initialization time.
 367  367    static void setup_heap_region_size(uintx min_heap_size);
 368  368  
 369  369    enum ClaimValues {
 370  370      InitialClaimValue          = 0,
 371  371      FinalCountClaimValue       = 1,
 372  372      NoteEndClaimValue          = 2,
 373  373      ScrubRemSetClaimValue      = 3,
 374  374      ParVerifyClaimValue        = 4,
 375  375      RebuildRSClaimValue        = 5,
 376      -    CompleteMarkCSetClaimValue = 6
      376 +    CompleteMarkCSetClaimValue = 6,
      377 +    AggregateCountClaimValue   = 7,
      378 +    VerifyCountClaimValue      = 8
 377  379    };
 378  380  
 379  381    inline HeapWord* par_allocate_no_bot_updates(size_t word_size) {
 380  382      assert(is_young(), "we can only skip BOT updates on young regions");
 381  383      return ContiguousSpace::par_allocate(word_size);
 382  384    }
 383  385    inline HeapWord* allocate_no_bot_updates(size_t word_size) {
 384  386      assert(is_young(), "we can only skip BOT updates on young regions");
 385  387      return ContiguousSpace::allocate(word_size);
 386  388    }
↓ open down ↓ 462 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX