Merge

Wed, 17 Nov 2010 09:21:51 -0500

author
zgu
date
Wed, 17 Nov 2010 09:21:51 -0500
changeset 2300
13fee5052895
parent 2299
9752a6549f2e
parent 2296
e3e1fb85e50a
child 2304
0be53e62c06c
child 2309
22260322f0be

Merge

     1.1 --- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Fri Nov 12 09:37:13 2010 -0500
     1.2 +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Wed Nov 17 09:21:51 2010 -0500
     1.3 @@ -1093,7 +1093,8 @@
     1.4  // perm_gen_verify_bit_map where we store the "deadness" information if
     1.5  // we did not sweep the perm gen in the most recent previous GC cycle.
     1.6  bool CompactibleFreeListSpace::obj_is_alive(const HeapWord* p) const {
     1.7 -  assert (block_is_obj(p), "The address should point to an object");
     1.8 +  assert(block_is_obj(p), "The address should point to an object");
     1.9 +  assert(SafepointSynchronize::is_at_safepoint(), "Else races are possible");
    1.10  
    1.11    // If we're sweeping, we use object liveness information from the main bit map
    1.12    // for both perm gen and old gen.
    1.13 @@ -1102,9 +1103,14 @@
    1.14    // main marking bit map (live_map below) is locked,
    1.15    // OR we're in other phases and perm_gen_verify_bit_map (dead_map below)
    1.16    // is stable, because it's mutated only in the sweeping phase.
    1.17 +  // NOTE: This method is also used by jmap where, if class unloading is
    1.18 +  // off, the results can return "false" for legitimate perm objects,
    1.19 +  // when we are not in the midst of a sweeping phase, which can result
    1.20 +  // in jmap not reporting certain perm gen objects. This will be moot
    1.21 +  // if/when the perm gen goes away in the future.
    1.22    if (_collector->abstract_state() == CMSCollector::Sweeping) {
    1.23      CMSBitMap* live_map = _collector->markBitMap();
    1.24 -    return live_map->isMarked((HeapWord*) p);
    1.25 +    return live_map->par_isMarked((HeapWord*) p);
    1.26    } else {
    1.27      // If we're not currently sweeping and we haven't swept the perm gen in
    1.28      // the previous concurrent cycle then we may have dead but unswept objects
    1.29 @@ -2266,7 +2272,7 @@
    1.30  }
    1.31  
    1.32  void CompactibleFreeListSpace::print() const {
    1.33 -  Space::print_on(tty);
    1.34 +  print_on(tty);
    1.35  }
    1.36  
    1.37  void CompactibleFreeListSpace::prepare_for_verify() {
     2.1 --- a/src/share/vm/memory/defNewGeneration.cpp	Fri Nov 12 09:37:13 2010 -0500
     2.2 +++ b/src/share/vm/memory/defNewGeneration.cpp	Wed Nov 17 09:21:51 2010 -0500
     2.3 @@ -838,7 +838,9 @@
     2.4          gch->incremental_collection_failed()) {
     2.5        seen_incremental_collection_failed = true;
     2.6      } else if (seen_incremental_collection_failed) {
     2.7 -      assert(!gch->incremental_collection_failed(), "Twice in a row");
     2.8 +      assert(gch->gc_cause() == GCCause::_scavenge_alot || !gch->incremental_collection_failed(),
     2.9 +             "Twice in a row");
    2.10 +
    2.11        seen_incremental_collection_failed = false;
    2.12      }
    2.13  #endif // ASSERT

mercurial