src/share/vm/oops/objArrayKlassKlass.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
7017732_incremental Cdiff src/share/vm/oops/objArrayKlassKlass.cpp
src/share/vm/oops/objArrayKlassKlass.cpp
Print this page
*** 29,38 ****
--- 29,45 ----
#include "gc_interface/collectedHeap.inline.hpp"
#include "oops/instanceKlass.hpp"
#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;
KlassHandle h_this_klass(THREAD, Universe::klassKlassObj());
KlassHandle k = base_create_klass(h_this_klass, header_size(), o.vtbl_value(), CHECK_0);
*** 234,249 ****
addr = oak->element_klass_addr();
if (mr.contains(addr)) blk->do_oop(addr);
addr = oak->bottom_klass_addr();
if (mr.contains(addr)) blk->do_oop(addr);
! return arrayKlassKlass::oop_oop_iterate(obj, blk);
}
#ifndef SERIALGC
void objArrayKlassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
assert(obj->blueprint()->oop_is_objArrayKlass(),"must be an obj array klass");
}
int objArrayKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
assert(obj->is_klass(), "must be klass");
assert(klassOop(obj)->klass_part()->oop_is_objArray_slow(), "must be obj array");
--- 241,267 ----
addr = oak->element_klass_addr();
if (mr.contains(addr)) blk->do_oop(addr);
addr = oak->bottom_klass_addr();
if (mr.contains(addr)) blk->do_oop(addr);
! 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) {
assert(obj->is_klass(), "must be klass");
assert(klassOop(obj)->klass_part()->oop_is_objArray_slow(), "must be obj array");
*** 285,295 ****
// Verification
void objArrayKlassKlass::oop_verify_on(oop obj, outputStream* st) {
! klassKlass::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");
guarantee(oak->bottom_klass()->is_perm(), "should be in permspace");
guarantee(oak->bottom_klass()->is_klass(), "should be klass");
--- 303,313 ----
// Verification
void objArrayKlassKlass::oop_verify_on(oop obj, outputStream* 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");
guarantee(oak->bottom_klass()->is_perm(), "should be in permspace");
guarantee(oak->bottom_klass()->is_klass(), "should be klass");
src/share/vm/oops/objArrayKlassKlass.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File