src/hotspot/share/gc/cms/parNewGeneration.cpp
changeset 50752 9d62da00bf15
parent 50728 9375184cec98
child 51256 604581924221
equal deleted inserted replaced
50751:d9132bdf6c30 50752:9d62da00bf15
    49 #include "gc/shared/taskqueue.inline.hpp"
    49 #include "gc/shared/taskqueue.inline.hpp"
    50 #include "gc/shared/weakProcessor.hpp"
    50 #include "gc/shared/weakProcessor.hpp"
    51 #include "gc/shared/workgroup.hpp"
    51 #include "gc/shared/workgroup.hpp"
    52 #include "logging/log.hpp"
    52 #include "logging/log.hpp"
    53 #include "logging/logStream.hpp"
    53 #include "logging/logStream.hpp"
       
    54 #include "memory/iterator.inline.hpp"
    54 #include "memory/resourceArea.hpp"
    55 #include "memory/resourceArea.hpp"
    55 #include "oops/access.inline.hpp"
    56 #include "oops/access.inline.hpp"
    56 #include "oops/compressedOops.inline.hpp"
    57 #include "oops/compressedOops.inline.hpp"
    57 #include "oops/objArrayOop.hpp"
    58 #include "oops/objArrayOop.hpp"
    58 #include "oops/oop.inline.hpp"
    59 #include "oops/oop.inline.hpp"
   500                                ParScanThreadState* par_scan_state) :
   501                                ParScanThreadState* par_scan_state) :
   501   OopsInClassLoaderDataOrGenClosure(g), _par_scan_state(par_scan_state), _g(g) {
   502   OopsInClassLoaderDataOrGenClosure(g), _par_scan_state(par_scan_state), _g(g) {
   502   _boundary = _g->reserved().end();
   503   _boundary = _g->reserved().end();
   503 }
   504 }
   504 
   505 
   505 void ParScanWithBarrierClosure::do_oop(oop* p)       { ParScanClosure::do_oop_work(p, true, false); }
       
   506 void ParScanWithBarrierClosure::do_oop(narrowOop* p) { ParScanClosure::do_oop_work(p, true, false); }
       
   507 
       
   508 void ParScanWithoutBarrierClosure::do_oop(oop* p)       { ParScanClosure::do_oop_work(p, false, false); }
       
   509 void ParScanWithoutBarrierClosure::do_oop(narrowOop* p) { ParScanClosure::do_oop_work(p, false, false); }
       
   510 
       
   511 void ParRootScanWithBarrierTwoGensClosure::do_oop(oop* p)       { ParScanClosure::do_oop_work(p, true, true); }
   506 void ParRootScanWithBarrierTwoGensClosure::do_oop(oop* p)       { ParScanClosure::do_oop_work(p, true, true); }
   512 void ParRootScanWithBarrierTwoGensClosure::do_oop(narrowOop* p) { ParScanClosure::do_oop_work(p, true, true); }
   507 void ParRootScanWithBarrierTwoGensClosure::do_oop(narrowOop* p) { ParScanClosure::do_oop_work(p, true, true); }
   513 
   508 
   514 void ParRootScanWithoutBarrierClosure::do_oop(oop* p)       { ParScanClosure::do_oop_work(p, false, true); }
   509 void ParRootScanWithoutBarrierClosure::do_oop(oop* p)       { ParScanClosure::do_oop_work(p, false, true); }
   515 void ParRootScanWithoutBarrierClosure::do_oop(narrowOop* p) { ParScanClosure::do_oop_work(p, false, true); }
   510 void ParRootScanWithoutBarrierClosure::do_oop(narrowOop* p) { ParScanClosure::do_oop_work(p, false, true); }
   516 
   511 
   517 ParScanWeakRefClosure::ParScanWeakRefClosure(ParNewGeneration* g,
   512 ParScanWeakRefClosure::ParScanWeakRefClosure(ParNewGeneration* g,
   518                                              ParScanThreadState* par_scan_state)
   513                                              ParScanThreadState* par_scan_state)
   519   : ScanWeakRefClosure(g), _par_scan_state(par_scan_state)
   514   : ScanWeakRefClosure(g), _par_scan_state(par_scan_state)
   520 {}
   515 {}
   521 
       
   522 void ParScanWeakRefClosure::do_oop(oop* p)       { ParScanWeakRefClosure::do_oop_work(p); }
       
   523 void ParScanWeakRefClosure::do_oop(narrowOop* p) { ParScanWeakRefClosure::do_oop_work(p); }
       
   524 
   516 
   525 #ifdef WIN32
   517 #ifdef WIN32
   526 #pragma warning(disable: 4786) /* identifier was truncated to '255' characters in the browser information */
   518 #pragma warning(disable: 4786) /* identifier was truncated to '255' characters in the browser information */
   527 #endif
   519 #endif
   528 
   520 
   689     // as a weak reference.
   681     // as a weak reference.
   690     assert(oopDesc::is_oop(obj), "expected an oop while scanning weak refs");
   682     assert(oopDesc::is_oop(obj), "expected an oop while scanning weak refs");
   691   }
   683   }
   692 #endif // ASSERT
   684 #endif // ASSERT
   693 
   685 
   694   _par_cl->do_oop_nv(p);
   686   Devirtualizer::do_oop_no_verify(_par_cl, p);
   695 
   687 
   696   if (CMSHeap::heap()->is_in_reserved(p)) {
   688   if (CMSHeap::heap()->is_in_reserved(p)) {
   697     oop obj = RawAccess<IS_NOT_NULL>::oop_load(p);;
   689     oop obj = RawAccess<IS_NOT_NULL>::oop_load(p);;
   698     _rs->write_ref_field_gc_par(p, obj);
   690     _rs->write_ref_field_gc_par(p, obj);
   699   }
   691   }
   715     // as a weak reference.
   707     // as a weak reference.
   716     assert(oopDesc::is_oop(obj), "expected an oop while scanning weak refs");
   708     assert(oopDesc::is_oop(obj), "expected an oop while scanning weak refs");
   717   }
   709   }
   718 #endif // ASSERT
   710 #endif // ASSERT
   719 
   711 
   720   _cl->do_oop_nv(p);
   712   Devirtualizer::do_oop_no_verify(_cl, p);
   721 
   713 
   722   if (CMSHeap::heap()->is_in_reserved(p)) {
   714   if (CMSHeap::heap()->is_in_reserved(p)) {
   723     oop obj = RawAccess<IS_NOT_NULL>::oop_load(p);
   715     oop obj = RawAccess<IS_NOT_NULL>::oop_load(p);
   724     _rs->write_ref_field_gc_par(p, obj);
   716     _rs->write_ref_field_gc_par(p, obj);
   725   }
   717   }