Mercurial > hg > graal-compiler
diff src/share/vm/oops/objArrayKlassKlass.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 | fc9d8850ab8b |
line wrap: on
line diff
--- a/src/share/vm/oops/objArrayKlassKlass.cpp Fri Mar 18 15:52:42 2011 -0700 +++ b/src/share/vm/oops/objArrayKlassKlass.cpp Fri Mar 18 16:00:34 2011 -0700 @@ -31,6 +31,13 @@ #include "oops/objArrayKlassKlass.hpp" #include "oops/oop.inline.hpp" #include "oops/oop.inline2.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 objArrayKlassKlass::create_klass(TRAPS) { objArrayKlassKlass o; @@ -236,12 +243,23 @@ addr = oak->bottom_klass_addr(); if (mr.contains(addr)) blk->do_oop(addr); - return arrayKlassKlass::oop_oop_iterate(obj, blk); + return arrayKlassKlass::oop_oop_iterate_m(obj, blk, mr); } #ifndef SERIALGC void objArrayKlassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { assert(obj->blueprint()->oop_is_objArrayKlass(),"must be an obj array klass"); + objArrayKlass* oak = objArrayKlass::cast((klassOop)obj); + oop* p = oak->element_klass_addr(); + if (PSScavenge::should_scavenge(p)) { + pm->claim_or_forward_depth(p); + } + p = oak->bottom_klass_addr(); + if (PSScavenge::should_scavenge(p)) { + pm->claim_or_forward_depth(p); + } + + arrayKlassKlass::oop_push_contents(pm, obj); } int objArrayKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { @@ -287,7 +305,7 @@ // Verification void objArrayKlassKlass::oop_verify_on(oop obj, outputStream* st) { - klassKlass::oop_verify_on(obj, st); + arrayKlassKlass::oop_verify_on(obj, st); objArrayKlass* oak = objArrayKlass::cast((klassOop)obj); guarantee(oak->element_klass()->is_perm(), "should be in permspace"); guarantee(oak->element_klass()->is_klass(), "should be klass");