< prev index next >

src/share/vm/gc/parallel/psScavenge.inline.hpp

Print this page

        

@@ -83,76 +83,6 @@
 };
 
 typedef PSRootsClosure</*promote_immediately=*/false> PSScavengeRootsClosure;
 typedef PSRootsClosure</*promote_immediately=*/true> PSPromoteRootsClosure;
 
-// Scavenges a single oop in a Klass.
-class PSScavengeFromKlassClosure: public OopClosure {
- private:
-  PSPromotionManager* _pm;
-  // Used to redirty a scanned klass if it has oops
-  // pointing to the young generation after being scanned.
-  Klass*             _scanned_klass;
- public:
-  PSScavengeFromKlassClosure(PSPromotionManager* pm) : _pm(pm), _scanned_klass(NULL) { }
-  void do_oop(narrowOop* p) { ShouldNotReachHere(); }
-  void do_oop(oop* p)       {
-    ParallelScavengeHeap* psh = ParallelScavengeHeap::heap();
-    assert(!psh->is_in_reserved(p), "GC barrier needed");
-    if (PSScavenge::should_scavenge(p)) {
-      assert(PSScavenge::should_scavenge(p, true), "revisiting object?");
-
-      oop o = *p;
-      oop new_obj;
-      if (o->is_forwarded()) {
-        new_obj = o->forwardee();
-      } else {
-        new_obj = _pm->copy_to_survivor_space</*promote_immediately=*/false>(o);
-      }
-      oopDesc::encode_store_heap_oop_not_null(p, new_obj);
-
-      if (PSScavenge::is_obj_in_young(new_obj)) {
-        do_klass_barrier();
-      }
-    }
-  }
-
-  void set_scanned_klass(Klass* klass) {
-    assert(_scanned_klass == NULL || klass == NULL, "Should always only handling one klass at a time");
-    _scanned_klass = klass;
-  }
-
- private:
-  void do_klass_barrier() {
-    assert(_scanned_klass != NULL, "Should not be called without having a scanned klass");
-    _scanned_klass->record_modified_oops();
-  }
-
-};
-
-// Scavenges the oop in a Klass.
-class PSScavengeKlassClosure: public KlassClosure {
- private:
-  PSScavengeFromKlassClosure _oop_closure;
- protected:
- public:
-  PSScavengeKlassClosure(PSPromotionManager* pm) : _oop_closure(pm) { }
-  void do_klass(Klass* klass) {
-    // If the klass has not been dirtied we know that there's
-    // no references into  the young gen and we can skip it.
-
-    if (klass->has_modified_oops()) {
-      // Clean the klass since we're going to scavenge all the metadata.
-      klass->clear_modified_oops();
-
-      // Setup the promotion manager to redirty this klass
-      // if references are left in the young gen.
-      _oop_closure.set_scanned_klass(klass);
-
-      klass->oops_do(&_oop_closure);
-
-      _oop_closure.set_scanned_klass(NULL);
-    }
-  }
-};
-
 #endif // SHARE_VM_GC_PARALLEL_PSSCAVENGE_INLINE_HPP
< prev index next >