src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp

changeset 2061
9d7a8ab3736b
parent 2020
a93a9eda13f7
child 2314
f95d63e2154a
     1.1 --- a/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp	Mon Aug 02 12:51:43 2010 -0700
     1.2 +++ b/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp	Thu Jul 22 10:27:41 2010 -0400
     1.3 @@ -46,32 +46,7 @@
     1.4  }
     1.5  
     1.6  template <class T>
     1.7 -inline void PSPromotionManager::claim_or_forward_internal_breadth(T* p) {
     1.8 -  if (p != NULL) { // XXX: error if p != NULL here
     1.9 -    oop o = oopDesc::load_decode_heap_oop_not_null(p);
    1.10 -    if (o->is_forwarded()) {
    1.11 -      o = o->forwardee();
    1.12 -    } else {
    1.13 -      o = copy_to_survivor_space(o, false);
    1.14 -    }
    1.15 -    // Card mark
    1.16 -    if (PSScavenge::is_obj_in_young((HeapWord*) o)) {
    1.17 -      PSScavenge::card_table()->inline_write_ref_field_gc(p, o);
    1.18 -    }
    1.19 -    oopDesc::encode_store_heap_oop_not_null(p, o);
    1.20 -  }
    1.21 -}
    1.22 -
    1.23 -inline void PSPromotionManager::flush_prefetch_queue() {
    1.24 -  assert(!depth_first(), "invariant");
    1.25 -  for (int i = 0; i < _prefetch_queue.length(); i++) {
    1.26 -    claim_or_forward_internal_breadth((oop*)_prefetch_queue.pop());
    1.27 -  }
    1.28 -}
    1.29 -
    1.30 -template <class T>
    1.31  inline void PSPromotionManager::claim_or_forward_depth(T* p) {
    1.32 -  assert(depth_first(), "invariant");
    1.33    assert(PSScavenge::should_scavenge(p, true), "revisiting object?");
    1.34    assert(Universe::heap()->kind() == CollectedHeap::ParallelScavengeHeap,
    1.35           "Sanity");
    1.36 @@ -80,36 +55,6 @@
    1.37    claim_or_forward_internal_depth(p);
    1.38  }
    1.39  
    1.40 -template <class T>
    1.41 -inline void PSPromotionManager::claim_or_forward_breadth(T* p) {
    1.42 -  assert(!depth_first(), "invariant");
    1.43 -  assert(PSScavenge::should_scavenge(p, true), "revisiting object?");
    1.44 -  assert(Universe::heap()->kind() == CollectedHeap::ParallelScavengeHeap,
    1.45 -         "Sanity");
    1.46 -  assert(Universe::heap()->is_in(p), "pointer outside heap");
    1.47 -
    1.48 -  if (UsePrefetchQueue) {
    1.49 -    claim_or_forward_internal_breadth((T*)_prefetch_queue.push_and_pop(p));
    1.50 -  } else {
    1.51 -    // This option is used for testing.  The use of the prefetch
    1.52 -    // queue can delay the processing of the objects and thus
    1.53 -    // change the order of object scans.  For example, remembered
    1.54 -    // set updates are typically the clearing of the remembered
    1.55 -    // set (the cards) followed by updates of the remembered set
    1.56 -    // for young-to-old pointers.  In a situation where there
    1.57 -    // is an error in the sequence of clearing and updating
    1.58 -    // (e.g. clear card A, update card A, erroneously clear
    1.59 -    // card A again) the error can be obscured by a delay
    1.60 -    // in the update due to the use of the prefetch queue
    1.61 -    // (e.g., clear card A, erroneously clear card A again,
    1.62 -    // update card A that was pushed into the prefetch queue
    1.63 -    // and thus delayed until after the erronous clear).  The
    1.64 -    // length of the delay is random depending on the objects
    1.65 -    // in the queue and the delay can be zero.
    1.66 -    claim_or_forward_internal_breadth(p);
    1.67 -  }
    1.68 -}
    1.69 -
    1.70  inline void PSPromotionManager::process_popped_location_depth(StarTask p) {
    1.71    if (is_oop_masked(p)) {
    1.72      assert(PSChunkLargeArrays, "invariant");

mercurial