src/share/vm/oops/arrayKlassKlass.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/oops/arrayKlassKlass.cpp Fri Mar 18 14:58:47 2011
--- new/src/share/vm/oops/arrayKlassKlass.cpp Fri Mar 18 14:58:46 2011
*** 26,35 ****
--- 26,42 ----
#include "classfile/javaClasses.hpp"
#include "gc_implementation/shared/markSweep.inline.hpp"
#include "oops/arrayKlassKlass.hpp"
#include "oops/oop.inline.hpp"
#include "runtime/handles.inline.hpp"
+ #ifndef SERIALGC
+ #include "gc_implementation/parNew/parOopClosures.inline.hpp"
+ #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
+ #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+ #include "memory/cardTableRS.hpp"
+ #include "oops/oop.pcgc.inline.hpp"
+ #endif
klassOop arrayKlassKlass::create_klass(TRAPS) {
arrayKlassKlass o;
KlassHandle h_this_klass(THREAD, Universe::klassKlassObj());
*** 102,121 ****
--- 109,137 ----
int arrayKlassKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
assert(obj->is_klass(), "must be klass");
arrayKlass* ak = arrayKlass::cast(klassOop(obj));
! blk->do_oop(ak->adr_component_mirror());
! blk->do_oop(ak->adr_lower_dimension());
! blk->do_oop(ak->adr_higher_dimension());
! oop* addr = ak->adr_component_mirror();
! if (mr.contains(addr)) blk->do_oop(addr);
! addr = ak->adr_lower_dimension();
+ if (mr.contains(addr)) blk->do_oop(addr);
+ addr = ak->adr_higher_dimension();
+ if (mr.contains(addr)) blk->do_oop(addr);
ak->vtable()->oop_oop_iterate_m(blk, mr);
return klassKlass::oop_oop_iterate_m(obj, blk, mr);
}
#ifndef SERIALGC
void arrayKlassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
assert(obj->blueprint()->oop_is_arrayKlass(),"must be an array klass");
+ arrayKlass* ak = arrayKlass::cast(klassOop(obj));
+ oop* p = ak->adr_component_mirror();
+ if (PSScavenge::should_scavenge(p)) {
+ pm->claim_or_forward_depth(p);
+ }
+ klassKlass::oop_push_contents(pm, obj);
}
int arrayKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
assert(obj->is_klass(), "must be klass");
arrayKlass* ak = arrayKlass::cast(klassOop(obj));
src/share/vm/oops/arrayKlassKlass.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File