< prev index next >

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

Print this page
rev 50107 : [mq]: pp2_work


3064 
3065 void InstanceKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3066   PSParallelCompact::AdjustPointerClosure closure(cm);
3067   oop_oop_iterate_oop_maps<true>(obj, &closure);
3068 }
3069 
3070 void InstanceMirrorKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3071   InstanceKlass::oop_pc_update_pointers(obj, cm);
3072 
3073   PSParallelCompact::AdjustPointerClosure closure(cm);
3074   oop_oop_iterate_statics<true>(obj, &closure);
3075 }
3076 
3077 void InstanceClassLoaderKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3078   InstanceKlass::oop_pc_update_pointers(obj, cm);
3079 }
3080 
3081 #ifdef ASSERT
3082 template <class T> static void trace_reference_gc(const char *s, oop obj,
3083                                                   T* referent_addr,
3084                                                   T* next_addr,
3085                                                   T* discovered_addr) {
3086   log_develop_trace(gc, ref)("%s obj " PTR_FORMAT, s, p2i(obj));
3087   log_develop_trace(gc, ref)("     referent_addr/* " PTR_FORMAT " / " PTR_FORMAT,
3088                              p2i(referent_addr), referent_addr ? p2i((oop)RawAccess<>::oop_load(referent_addr)) : NULL);
3089   log_develop_trace(gc, ref)("     next_addr/* " PTR_FORMAT " / " PTR_FORMAT,
3090                              p2i(next_addr), next_addr ? p2i((oop)RawAccess<>::oop_load(next_addr)) : NULL);
3091   log_develop_trace(gc, ref)("     discovered_addr/* " PTR_FORMAT " / " PTR_FORMAT,
3092                              p2i(discovered_addr), discovered_addr ? p2i((oop)RawAccess<>::oop_load(discovered_addr)) : NULL);
3093 }
3094 #endif
3095 
3096 template <class T>
3097 static void oop_pc_update_pointers_specialized(oop obj, ParCompactionManager* cm) {
3098   T* referent_addr = (T*)java_lang_ref_Reference::referent_addr_raw(obj);
3099   PSParallelCompact::adjust_pointer(referent_addr, cm);
3100   T* next_addr = (T*)java_lang_ref_Reference::next_addr_raw(obj);
3101   PSParallelCompact::adjust_pointer(next_addr, cm);
3102   T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr_raw(obj);
3103   PSParallelCompact::adjust_pointer(discovered_addr, cm);
3104   debug_only(trace_reference_gc("InstanceRefKlass::oop_update_ptrs", obj,
3105                                 referent_addr, next_addr, discovered_addr);)
3106 }
3107 
3108 void InstanceRefKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3109   InstanceKlass::oop_pc_update_pointers(obj, cm);
3110 
3111   if (UseCompressedOops) {
3112     oop_pc_update_pointers_specialized<narrowOop>(obj, cm);
3113   } else {
3114     oop_pc_update_pointers_specialized<oop>(obj, cm);
3115   }
3116 }
3117 
3118 void ObjArrayKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3119   assert(obj->is_objArray(), "obj must be obj array");
3120   PSParallelCompact::AdjustPointerClosure closure(cm);
3121   oop_oop_iterate_elements<true>(objArrayOop(obj), &closure);
3122 }
3123 
3124 void TypeArrayKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3125   assert(obj->is_typeArray(),"must be a type array");




3064 
3065 void InstanceKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3066   PSParallelCompact::AdjustPointerClosure closure(cm);
3067   oop_oop_iterate_oop_maps<true>(obj, &closure);
3068 }
3069 
3070 void InstanceMirrorKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3071   InstanceKlass::oop_pc_update_pointers(obj, cm);
3072 
3073   PSParallelCompact::AdjustPointerClosure closure(cm);
3074   oop_oop_iterate_statics<true>(obj, &closure);
3075 }
3076 
3077 void InstanceClassLoaderKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3078   InstanceKlass::oop_pc_update_pointers(obj, cm);
3079 }
3080 
3081 #ifdef ASSERT
3082 template <class T> static void trace_reference_gc(const char *s, oop obj,
3083                                                   T* referent_addr,

3084                                                   T* discovered_addr) {
3085   log_develop_trace(gc, ref)("%s obj " PTR_FORMAT, s, p2i(obj));
3086   log_develop_trace(gc, ref)("     referent_addr/* " PTR_FORMAT " / " PTR_FORMAT,
3087                              p2i(referent_addr), referent_addr ? p2i((oop)RawAccess<>::oop_load(referent_addr)) : NULL);


3088   log_develop_trace(gc, ref)("     discovered_addr/* " PTR_FORMAT " / " PTR_FORMAT,
3089                              p2i(discovered_addr), discovered_addr ? p2i((oop)RawAccess<>::oop_load(discovered_addr)) : NULL);
3090 }
3091 #endif
3092 
3093 template <class T>
3094 static void oop_pc_update_pointers_specialized(oop obj, ParCompactionManager* cm) {
3095   T* referent_addr = (T*)java_lang_ref_Reference::referent_addr_raw(obj);
3096   PSParallelCompact::adjust_pointer(referent_addr, cm);


3097   T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr_raw(obj);
3098   PSParallelCompact::adjust_pointer(discovered_addr, cm);
3099   debug_only(trace_reference_gc("InstanceRefKlass::oop_update_ptrs", obj,
3100                                 referent_addr, discovered_addr);)
3101 }
3102 
3103 void InstanceRefKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3104   InstanceKlass::oop_pc_update_pointers(obj, cm);
3105 
3106   if (UseCompressedOops) {
3107     oop_pc_update_pointers_specialized<narrowOop>(obj, cm);
3108   } else {
3109     oop_pc_update_pointers_specialized<oop>(obj, cm);
3110   }
3111 }
3112 
3113 void ObjArrayKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3114   assert(obj->is_objArray(), "obj must be obj array");
3115   PSParallelCompact::AdjustPointerClosure closure(cm);
3116   oop_oop_iterate_elements<true>(objArrayOop(obj), &closure);
3117 }
3118 
3119 void TypeArrayKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3120   assert(obj->is_typeArray(),"must be a type array");


< prev index next >