< prev index next >

src/hotspot/share/gc/parallel/psParallelCompact.cpp

Print this page




  38 #include "gc/parallel/psMarkSweepDecorator.hpp"
  39 #include "gc/parallel/psOldGen.hpp"
  40 #include "gc/parallel/psParallelCompact.inline.hpp"
  41 #include "gc/parallel/psPromotionManager.inline.hpp"
  42 #include "gc/parallel/psScavenge.hpp"
  43 #include "gc/parallel/psYoungGen.hpp"
  44 #include "gc/shared/gcCause.hpp"
  45 #include "gc/shared/gcHeapSummary.hpp"
  46 #include "gc/shared/gcId.hpp"
  47 #include "gc/shared/gcLocker.inline.hpp"
  48 #include "gc/shared/gcTimer.hpp"
  49 #include "gc/shared/gcTrace.hpp"
  50 #include "gc/shared/gcTraceTime.inline.hpp"
  51 #include "gc/shared/isGCActiveMark.hpp"
  52 #include "gc/shared/referencePolicy.hpp"
  53 #include "gc/shared/referenceProcessor.hpp"
  54 #include "gc/shared/spaceDecorator.hpp"
  55 #include "gc/shared/weakProcessor.hpp"
  56 #include "logging/log.hpp"
  57 #include "memory/resourceArea.hpp"

  58 #include "oops/instanceKlass.inline.hpp"
  59 #include "oops/instanceMirrorKlass.inline.hpp"
  60 #include "oops/methodData.hpp"
  61 #include "oops/objArrayKlass.inline.hpp"
  62 #include "oops/oop.inline.hpp"
  63 #include "runtime/atomic.hpp"
  64 #include "runtime/handles.inline.hpp"
  65 #include "runtime/safepoint.hpp"
  66 #include "runtime/vmThread.hpp"
  67 #include "services/management.hpp"
  68 #include "services/memTracker.hpp"
  69 #include "services/memoryService.hpp"
  70 #include "utilities/align.hpp"
  71 #include "utilities/debug.hpp"
  72 #include "utilities/events.hpp"
  73 #include "utilities/formatBuffer.hpp"
  74 #include "utilities/stack.inline.hpp"
  75 
  76 #include <math.h>
  77 


3061 }
3062 
3063 void InstanceMirrorKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3064   InstanceKlass::oop_pc_update_pointers(obj, cm);
3065 
3066   PSParallelCompact::AdjustPointerClosure closure(cm);
3067   oop_oop_iterate_statics<true>(obj, &closure);
3068 }
3069 
3070 void InstanceClassLoaderKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3071   InstanceKlass::oop_pc_update_pointers(obj, cm);
3072 }
3073 
3074 #ifdef ASSERT
3075 template <class T> static void trace_reference_gc(const char *s, oop obj,
3076                                                   T* referent_addr,
3077                                                   T* next_addr,
3078                                                   T* discovered_addr) {
3079   log_develop_trace(gc, ref)("%s obj " PTR_FORMAT, s, p2i(obj));
3080   log_develop_trace(gc, ref)("     referent_addr/* " PTR_FORMAT " / " PTR_FORMAT,
3081                              p2i(referent_addr), referent_addr ? p2i(oopDesc::load_decode_heap_oop(referent_addr)) : NULL);
3082   log_develop_trace(gc, ref)("     next_addr/* " PTR_FORMAT " / " PTR_FORMAT,
3083                              p2i(next_addr), next_addr ? p2i(oopDesc::load_decode_heap_oop(next_addr)) : NULL);
3084   log_develop_trace(gc, ref)("     discovered_addr/* " PTR_FORMAT " / " PTR_FORMAT,
3085                              p2i(discovered_addr), discovered_addr ? p2i(oopDesc::load_decode_heap_oop(discovered_addr)) : NULL);
3086 }
3087 #endif
3088 
3089 template <class T>
3090 static void oop_pc_update_pointers_specialized(oop obj, ParCompactionManager* cm) {
3091   T* referent_addr = (T*)java_lang_ref_Reference::referent_addr_raw(obj);
3092   PSParallelCompact::adjust_pointer(referent_addr, cm);
3093   T* next_addr = (T*)java_lang_ref_Reference::next_addr_raw(obj);
3094   PSParallelCompact::adjust_pointer(next_addr, cm);
3095   T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr_raw(obj);
3096   PSParallelCompact::adjust_pointer(discovered_addr, cm);
3097   debug_only(trace_reference_gc("InstanceRefKlass::oop_update_ptrs", obj,
3098                                 referent_addr, next_addr, discovered_addr);)
3099 }
3100 
3101 void InstanceRefKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3102   InstanceKlass::oop_pc_update_pointers(obj, cm);
3103 
3104   if (UseCompressedOops) {
3105     oop_pc_update_pointers_specialized<narrowOop>(obj, cm);




  38 #include "gc/parallel/psMarkSweepDecorator.hpp"
  39 #include "gc/parallel/psOldGen.hpp"
  40 #include "gc/parallel/psParallelCompact.inline.hpp"
  41 #include "gc/parallel/psPromotionManager.inline.hpp"
  42 #include "gc/parallel/psScavenge.hpp"
  43 #include "gc/parallel/psYoungGen.hpp"
  44 #include "gc/shared/gcCause.hpp"
  45 #include "gc/shared/gcHeapSummary.hpp"
  46 #include "gc/shared/gcId.hpp"
  47 #include "gc/shared/gcLocker.inline.hpp"
  48 #include "gc/shared/gcTimer.hpp"
  49 #include "gc/shared/gcTrace.hpp"
  50 #include "gc/shared/gcTraceTime.inline.hpp"
  51 #include "gc/shared/isGCActiveMark.hpp"
  52 #include "gc/shared/referencePolicy.hpp"
  53 #include "gc/shared/referenceProcessor.hpp"
  54 #include "gc/shared/spaceDecorator.hpp"
  55 #include "gc/shared/weakProcessor.hpp"
  56 #include "logging/log.hpp"
  57 #include "memory/resourceArea.hpp"
  58 #include "oops/access.inline.hpp"
  59 #include "oops/instanceKlass.inline.hpp"
  60 #include "oops/instanceMirrorKlass.inline.hpp"
  61 #include "oops/methodData.hpp"
  62 #include "oops/objArrayKlass.inline.hpp"
  63 #include "oops/oop.inline.hpp"
  64 #include "runtime/atomic.hpp"
  65 #include "runtime/handles.inline.hpp"
  66 #include "runtime/safepoint.hpp"
  67 #include "runtime/vmThread.hpp"
  68 #include "services/management.hpp"
  69 #include "services/memTracker.hpp"
  70 #include "services/memoryService.hpp"
  71 #include "utilities/align.hpp"
  72 #include "utilities/debug.hpp"
  73 #include "utilities/events.hpp"
  74 #include "utilities/formatBuffer.hpp"
  75 #include "utilities/stack.inline.hpp"
  76 
  77 #include <math.h>
  78 


3062 }
3063 
3064 void InstanceMirrorKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3065   InstanceKlass::oop_pc_update_pointers(obj, cm);
3066 
3067   PSParallelCompact::AdjustPointerClosure closure(cm);
3068   oop_oop_iterate_statics<true>(obj, &closure);
3069 }
3070 
3071 void InstanceClassLoaderKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3072   InstanceKlass::oop_pc_update_pointers(obj, cm);
3073 }
3074 
3075 #ifdef ASSERT
3076 template <class T> static void trace_reference_gc(const char *s, oop obj,
3077                                                   T* referent_addr,
3078                                                   T* next_addr,
3079                                                   T* discovered_addr) {
3080   log_develop_trace(gc, ref)("%s obj " PTR_FORMAT, s, p2i(obj));
3081   log_develop_trace(gc, ref)("     referent_addr/* " PTR_FORMAT " / " PTR_FORMAT,
3082                              p2i(referent_addr), referent_addr ? p2i(RawAccess<>::oop_load(referent_addr)) : NULL);
3083   log_develop_trace(gc, ref)("     next_addr/* " PTR_FORMAT " / " PTR_FORMAT,
3084                              p2i(next_addr), next_addr ? p2i(RawAccess<>::oop_load(next_addr)) : NULL);
3085   log_develop_trace(gc, ref)("     discovered_addr/* " PTR_FORMAT " / " PTR_FORMAT,
3086                              p2i(discovered_addr), discovered_addr ? p2i(RawAccess<>::oop_load(discovered_addr)) : NULL);
3087 }
3088 #endif
3089 
3090 template <class T>
3091 static void oop_pc_update_pointers_specialized(oop obj, ParCompactionManager* cm) {
3092   T* referent_addr = (T*)java_lang_ref_Reference::referent_addr_raw(obj);
3093   PSParallelCompact::adjust_pointer(referent_addr, cm);
3094   T* next_addr = (T*)java_lang_ref_Reference::next_addr_raw(obj);
3095   PSParallelCompact::adjust_pointer(next_addr, cm);
3096   T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr_raw(obj);
3097   PSParallelCompact::adjust_pointer(discovered_addr, cm);
3098   debug_only(trace_reference_gc("InstanceRefKlass::oop_update_ptrs", obj,
3099                                 referent_addr, next_addr, discovered_addr);)
3100 }
3101 
3102 void InstanceRefKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3103   InstanceKlass::oop_pc_update_pointers(obj, cm);
3104 
3105   if (UseCompressedOops) {
3106     oop_pc_update_pointers_specialized<narrowOop>(obj, cm);


< prev index next >