comparison src/share/vm/oops/arrayKlassKlass.cpp @ 2376:c7f3d0b4570f

7017732: move static fields into Class to prepare for perm gen removal Reviewed-by: kvn, coleenp, twisti, stefank
author never
date Fri, 18 Mar 2011 16:00:34 -0700
parents e5383553fd4e
children
comparison
equal deleted inserted replaced
2375:d673ef06fe96 2376:c7f3d0b4570f
26 #include "classfile/javaClasses.hpp" 26 #include "classfile/javaClasses.hpp"
27 #include "gc_implementation/shared/markSweep.inline.hpp" 27 #include "gc_implementation/shared/markSweep.inline.hpp"
28 #include "oops/arrayKlassKlass.hpp" 28 #include "oops/arrayKlassKlass.hpp"
29 #include "oops/oop.inline.hpp" 29 #include "oops/oop.inline.hpp"
30 #include "runtime/handles.inline.hpp" 30 #include "runtime/handles.inline.hpp"
31 #ifndef SERIALGC
32 #include "gc_implementation/parNew/parOopClosures.inline.hpp"
33 #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
34 #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
35 #include "memory/cardTableRS.hpp"
36 #include "oops/oop.pcgc.inline.hpp"
37 #endif
31 38
32 39
33 klassOop arrayKlassKlass::create_klass(TRAPS) { 40 klassOop arrayKlassKlass::create_klass(TRAPS) {
34 arrayKlassKlass o; 41 arrayKlassKlass o;
35 KlassHandle h_this_klass(THREAD, Universe::klassKlassObj()); 42 KlassHandle h_this_klass(THREAD, Universe::klassKlassObj());
102 109
103 110
104 int arrayKlassKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) { 111 int arrayKlassKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
105 assert(obj->is_klass(), "must be klass"); 112 assert(obj->is_klass(), "must be klass");
106 arrayKlass* ak = arrayKlass::cast(klassOop(obj)); 113 arrayKlass* ak = arrayKlass::cast(klassOop(obj));
107 blk->do_oop(ak->adr_component_mirror()); 114 oop* addr = ak->adr_component_mirror();
108 blk->do_oop(ak->adr_lower_dimension()); 115 if (mr.contains(addr)) blk->do_oop(addr);
109 blk->do_oop(ak->adr_higher_dimension()); 116 addr = ak->adr_lower_dimension();
117 if (mr.contains(addr)) blk->do_oop(addr);
118 addr = ak->adr_higher_dimension();
119 if (mr.contains(addr)) blk->do_oop(addr);
110 ak->vtable()->oop_oop_iterate_m(blk, mr); 120 ak->vtable()->oop_oop_iterate_m(blk, mr);
111 return klassKlass::oop_oop_iterate_m(obj, blk, mr); 121 return klassKlass::oop_oop_iterate_m(obj, blk, mr);
112 } 122 }
113 123
114 #ifndef SERIALGC 124 #ifndef SERIALGC
115 void arrayKlassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { 125 void arrayKlassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
116 assert(obj->blueprint()->oop_is_arrayKlass(),"must be an array klass"); 126 assert(obj->blueprint()->oop_is_arrayKlass(),"must be an array klass");
127 arrayKlass* ak = arrayKlass::cast(klassOop(obj));
128 oop* p = ak->adr_component_mirror();
129 if (PSScavenge::should_scavenge(p)) {
130 pm->claim_or_forward_depth(p);
131 }
132 klassKlass::oop_push_contents(pm, obj);
117 } 133 }
118 134
119 int arrayKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { 135 int arrayKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
120 assert(obj->is_klass(), "must be klass"); 136 assert(obj->is_klass(), "must be klass");
121 arrayKlass* ak = arrayKlass::cast(klassOop(obj)); 137 arrayKlass* ak = arrayKlass::cast(klassOop(obj));