src/hotspot/share/gc/g1/g1FullGCOopClosures.cpp
changeset 50752 9d62da00bf15
parent 49722 a47d1e21b3f1
child 51332 c25572739e7c
equal deleted inserted replaced
50751:d9132bdf6c30 50752:9d62da00bf15
    24 
    24 
    25 #include "precompiled.hpp"
    25 #include "precompiled.hpp"
    26 #include "gc/g1/g1CollectedHeap.hpp"
    26 #include "gc/g1/g1CollectedHeap.hpp"
    27 #include "gc/g1/g1FullGCMarker.inline.hpp"
    27 #include "gc/g1/g1FullGCMarker.inline.hpp"
    28 #include "gc/g1/g1FullGCOopClosures.inline.hpp"
    28 #include "gc/g1/g1FullGCOopClosures.inline.hpp"
    29 #include "gc/g1/g1_specialized_oop_closures.hpp"
       
    30 #include "logging/logStream.hpp"
    29 #include "logging/logStream.hpp"
       
    30 #include "memory/iterator.inline.hpp"
    31 #include "oops/access.inline.hpp"
    31 #include "oops/access.inline.hpp"
    32 #include "oops/compressedOops.inline.hpp"
    32 #include "oops/compressedOops.inline.hpp"
    33 #include "oops/oop.inline.hpp"
    33 #include "oops/oop.inline.hpp"
    34 
       
    35 void G1MarkAndPushClosure::do_oop(oop* p) {
       
    36   do_oop_nv(p);
       
    37 }
       
    38 
       
    39 void G1MarkAndPushClosure::do_oop(narrowOop* p) {
       
    40   do_oop_nv(p);
       
    41 }
       
    42 
       
    43 bool G1MarkAndPushClosure::do_metadata() {
       
    44   return do_metadata_nv();
       
    45 }
       
    46 
       
    47 void G1MarkAndPushClosure::do_klass(Klass* k) {
       
    48   do_klass_nv(k);
       
    49 }
       
    50 
       
    51 void G1MarkAndPushClosure::do_cld(ClassLoaderData* cld) {
       
    52   do_cld_nv(cld);
       
    53 }
       
    54 
    34 
    55 void G1FollowStackClosure::do_void() { _marker->drain_stack(); }
    35 void G1FollowStackClosure::do_void() { _marker->drain_stack(); }
    56 
    36 
    57 void G1FullKeepAliveClosure::do_oop(oop* p) { do_oop_work(p); }
    37 void G1FullKeepAliveClosure::do_oop(oop* p) { do_oop_work(p); }
    58 void G1FullKeepAliveClosure::do_oop(narrowOop* p) { do_oop_work(p); }
    38 void G1FullKeepAliveClosure::do_oop(narrowOop* p) { do_oop_work(p); }
    73 #else // PRODUCT
    53 #else // PRODUCT
    74   obj->print_on(out);
    54   obj->print_on(out);
    75 #endif // PRODUCT
    55 #endif // PRODUCT
    76 }
    56 }
    77 
    57 
    78 template <class T> void G1VerifyOopClosure::do_oop_nv(T* p) {
    58 template <class T> void G1VerifyOopClosure::do_oop_work(T* p) {
    79   T heap_oop = RawAccess<>::oop_load(p);
    59   T heap_oop = RawAccess<>::oop_load(p);
    80   if (!CompressedOops::is_null(heap_oop)) {
    60   if (!CompressedOops::is_null(heap_oop)) {
    81     _cc++;
    61     _cc++;
    82     oop obj = CompressedOops::decode_not_null(heap_oop);
    62     oop obj = CompressedOops::decode_not_null(heap_oop);
    83     bool failed = false;
    63     bool failed = false;
   119       failed = true;
    99       failed = true;
   120     }
   100     }
   121   }
   101   }
   122 }
   102 }
   123 
   103 
   124 template void G1VerifyOopClosure::do_oop_nv(oop*);
   104 template void G1VerifyOopClosure::do_oop_work(oop*);
   125 template void G1VerifyOopClosure::do_oop_nv(narrowOop*);
   105 template void G1VerifyOopClosure::do_oop_work(narrowOop*);
   126 
       
   127 // Generate G1 full GC specialized oop_oop_iterate functions.
       
   128 SPECIALIZED_OOP_OOP_ITERATE_CLOSURES_G1FULL(ALL_KLASS_OOP_OOP_ITERATE_DEFN)