src/share/vm/memory/defNewGeneration.cpp

Print this page
rev 4616 : 8014277: Remove ObjectClosure as base class for BoolObjectClosure


  33 #include "memory/genRemSet.hpp"
  34 #include "memory/generationSpec.hpp"
  35 #include "memory/iterator.hpp"
  36 #include "memory/referencePolicy.hpp"
  37 #include "memory/space.inline.hpp"
  38 #include "oops/instanceRefKlass.hpp"
  39 #include "oops/oop.inline.hpp"
  40 #include "runtime/java.hpp"
  41 #include "runtime/thread.inline.hpp"
  42 #include "utilities/copy.hpp"
  43 #include "utilities/stack.inline.hpp"
  44 
  45 //
  46 // DefNewGeneration functions.
  47 
  48 // Methods of protected closure types.
  49 
  50 DefNewGeneration::IsAliveClosure::IsAliveClosure(Generation* g) : _g(g) {
  51   assert(g->level() == 0, "Optimized for youngest gen.");
  52 }
  53 void DefNewGeneration::IsAliveClosure::do_object(oop p) {
  54   assert(false, "Do not call.");
  55 }
  56 bool DefNewGeneration::IsAliveClosure::do_object_b(oop p) {
  57   return (HeapWord*)p >= _g->reserved().end() || p->is_forwarded();
  58 }
  59 
  60 DefNewGeneration::KeepAliveClosure::
  61 KeepAliveClosure(ScanWeakRefClosure* cl) : _cl(cl) {
  62   GenRemSet* rs = GenCollectedHeap::heap()->rem_set();
  63   assert(rs->rs_kind() == GenRemSet::CardTable, "Wrong rem set kind.");
  64   _rs = (CardTableRS*)rs;
  65 }
  66 
  67 void DefNewGeneration::KeepAliveClosure::do_oop(oop* p)       { DefNewGeneration::KeepAliveClosure::do_oop_work(p); }
  68 void DefNewGeneration::KeepAliveClosure::do_oop(narrowOop* p) { DefNewGeneration::KeepAliveClosure::do_oop_work(p); }
  69 
  70 
  71 DefNewGeneration::FastKeepAliveClosure::
  72 FastKeepAliveClosure(DefNewGeneration* g, ScanWeakRefClosure* cl) :
  73   DefNewGeneration::KeepAliveClosure(cl) {
  74   _boundary = g->reserved().end();
  75 }




  33 #include "memory/genRemSet.hpp"
  34 #include "memory/generationSpec.hpp"
  35 #include "memory/iterator.hpp"
  36 #include "memory/referencePolicy.hpp"
  37 #include "memory/space.inline.hpp"
  38 #include "oops/instanceRefKlass.hpp"
  39 #include "oops/oop.inline.hpp"
  40 #include "runtime/java.hpp"
  41 #include "runtime/thread.inline.hpp"
  42 #include "utilities/copy.hpp"
  43 #include "utilities/stack.inline.hpp"
  44 
  45 //
  46 // DefNewGeneration functions.
  47 
  48 // Methods of protected closure types.
  49 
  50 DefNewGeneration::IsAliveClosure::IsAliveClosure(Generation* g) : _g(g) {
  51   assert(g->level() == 0, "Optimized for youngest gen.");
  52 }



  53 bool DefNewGeneration::IsAliveClosure::do_object_b(oop p) {
  54   return (HeapWord*)p >= _g->reserved().end() || p->is_forwarded();
  55 }
  56 
  57 DefNewGeneration::KeepAliveClosure::
  58 KeepAliveClosure(ScanWeakRefClosure* cl) : _cl(cl) {
  59   GenRemSet* rs = GenCollectedHeap::heap()->rem_set();
  60   assert(rs->rs_kind() == GenRemSet::CardTable, "Wrong rem set kind.");
  61   _rs = (CardTableRS*)rs;
  62 }
  63 
  64 void DefNewGeneration::KeepAliveClosure::do_oop(oop* p)       { DefNewGeneration::KeepAliveClosure::do_oop_work(p); }
  65 void DefNewGeneration::KeepAliveClosure::do_oop(narrowOop* p) { DefNewGeneration::KeepAliveClosure::do_oop_work(p); }
  66 
  67 
  68 DefNewGeneration::FastKeepAliveClosure::
  69 FastKeepAliveClosure(DefNewGeneration* g, ScanWeakRefClosure* cl) :
  70   DefNewGeneration::KeepAliveClosure(cl) {
  71   _boundary = g->reserved().end();
  72 }