Mercurial > hg > truffle
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)); |