Mercurial > hg > truffle
diff src/share/vm/gc_implementation/g1/heapRegion.cpp @ 6725:da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author | coleenp |
---|---|
date | Sat, 01 Sep 2012 13:25:18 -0400 |
parents | 7383557659bd |
children | 8fbf05030e24 |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/g1/heapRegion.cpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/share/vm/gc_implementation/g1/heapRegion.cpp Sat Sep 01 13:25:18 2012 -0400 @@ -40,7 +40,7 @@ size_t HeapRegion::CardsPerRegion = 0; HeapRegionDCTOC::HeapRegionDCTOC(G1CollectedHeap* g1, - HeapRegion* hr, OopClosure* cl, + HeapRegion* hr, ExtendedOopClosure* cl, CardTableModRefBS::PrecisionStyle precision, FilterKind fk) : ContiguousSpaceDCTOC(hr, cl, precision, NULL), @@ -83,8 +83,8 @@ void print_object(outputStream* out, oop obj) { #ifdef PRODUCT - klassOop k = obj->klass(); - const char* class_name = instanceKlass::cast(k)->external_name(); + Klass* k = obj->klass(); + const char* class_name = InstanceKlass::cast(k)->external_name(); out->print_cr("class name %s", class_name); #else // PRODUCT obj->print_on(out); @@ -213,10 +213,10 @@ void HeapRegionDCTOC::walk_mem_region_with_cl(MemRegion mr, HeapWord* bottom, HeapWord* top, - OopClosure* cl) { + ExtendedOopClosure* cl) { G1CollectedHeap* g1h = _g1; int oop_size; - OopClosure* cl2 = NULL; + ExtendedOopClosure* cl2 = NULL; FilterIntoCSClosure intoCSFilt(this, g1h, cl); FilterOutOfRegionClosure outOfRegionFilt(_hr, cl); @@ -535,7 +535,7 @@ set_saved_mark(); } -void HeapRegion::oops_in_mr_iterate(MemRegion mr, OopClosure* cl) { +void HeapRegion::oops_in_mr_iterate(MemRegion mr, ExtendedOopClosure* cl) { HeapWord* p = mr.start(); HeapWord* e = mr.end(); oop obj; @@ -553,7 +553,7 @@ SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES(HeapRegion_OOP_SINCE_SAVE_MARKS_DEFN) -void HeapRegion::oop_before_save_marks_iterate(OopClosure* cl) { +void HeapRegion::oop_before_save_marks_iterate(ExtendedOopClosure* cl) { oops_in_mr_iterate(MemRegion(bottom(), saved_mark_word()), cl); } @@ -801,10 +801,10 @@ if (!g1->is_obj_dead_cond(obj, this, vo)) { if (obj->is_oop()) { - klassOop klass = obj->klass(); - if (!klass->is_perm()) { + Klass* klass = obj->klass(); + if (!klass->is_metadata()) { gclog_or_tty->print_cr("klass "PTR_FORMAT" of object "PTR_FORMAT" " - "not in perm", klass, obj); + "not metadata", klass, obj); *failures = true; return; } else if (!klass->is_klass()) { @@ -814,7 +814,7 @@ return; } else { vl_cl.set_containing_obj(obj); - obj->oop_iterate(&vl_cl); + obj->oop_iterate_no_header(&vl_cl); if (vl_cl.failures()) { *failures = true; }