comparison src/share/vm/oops/klassKlass.cpp @ 2491:0654ee04b214

Merge with OpenJDK.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Fri, 22 Apr 2011 15:30:53 +0200
parents 2ab52cda08e5 c7f3d0b4570f
children 75a99b4f1c98
comparison
equal deleted inserted replaced
2490:29246b1d2d3c 2491:0654ee04b214
39 #include "oops/oop.inline2.hpp" 39 #include "oops/oop.inline2.hpp"
40 #include "oops/symbol.hpp" 40 #include "oops/symbol.hpp"
41 #include "oops/typeArrayKlass.hpp" 41 #include "oops/typeArrayKlass.hpp"
42 #include "runtime/handles.inline.hpp" 42 #include "runtime/handles.inline.hpp"
43 #ifndef SERIALGC 43 #ifndef SERIALGC
44 #include "gc_implementation/parNew/parOopClosures.inline.hpp"
45 #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
46 #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
47 #include "memory/cardTableRS.hpp"
44 #include "oops/oop.pcgc.inline.hpp" 48 #include "oops/oop.pcgc.inline.hpp"
45 #endif 49 #endif
46 50
47 int klassKlass::oop_size(oop obj) const { 51 int klassKlass::oop_size(oop obj) const {
48 assert (obj->is_klass(), "must be a klassOop"); 52 assert (obj->is_klass(), "must be a klassOop");
179 return size; 183 return size;
180 } 184 }
181 185
182 #ifndef SERIALGC 186 #ifndef SERIALGC
183 void klassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { 187 void klassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
188 Klass* k = Klass::cast(klassOop(obj));
189
190 oop* p = k->adr_java_mirror();
191 if (PSScavenge::should_scavenge(p)) {
192 pm->claim_or_forward_depth(p);
193 }
184 } 194 }
185 195
186 int klassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { 196 int klassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
187 Klass* k = Klass::cast(klassOop(obj)); 197 Klass* k = Klass::cast(klassOop(obj));
188 198
237 } 247 }
238 } 248 }
239 249
240 if (k->java_mirror() != NULL || (k->oop_is_instance() && instanceKlass::cast(klassOop(obj))->is_loaded())) { 250 if (k->java_mirror() != NULL || (k->oop_is_instance() && instanceKlass::cast(klassOop(obj))->is_loaded())) {
241 guarantee(k->java_mirror() != NULL, "should be allocated"); 251 guarantee(k->java_mirror() != NULL, "should be allocated");
242 guarantee(k->java_mirror()->is_perm(), "should be in permspace"); 252 guarantee(k->java_mirror()->is_perm() || !JavaObjectsInPerm, "should be in permspace");
243 guarantee(k->java_mirror()->is_instance(), "should be instance"); 253 guarantee(k->java_mirror()->is_instance(), "should be instance");
244 } 254 }
245 } 255 }