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);
|