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	Tue Mar  8 20:18:00 2011
--- new/src/share/vm/oops/arrayKlassKlass.cpp	Tue Mar  8 20:18:00 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,136 ---- 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");

src/share/vm/oops/arrayKlassKlass.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File