--- old/src/share/vm/oops/instanceMirrorKlass.cpp Tue Mar 8 20:18:02 2011 +++ new/src/share/vm/oops/instanceMirrorKlass.cpp Tue Mar 8 20:18:02 2011 @@ -275,18 +275,6 @@ assert_nothing) return oop_size(obj); } - - -int instanceMirrorKlass::oop_update_pointers(ParCompactionManager* cm, oop obj, - HeapWord* beg_addr, HeapWord* end_addr) { - instanceKlass::oop_update_pointers(cm, obj, beg_addr, end_addr); - InstanceMirrorKlass_BOUNDED_OOP_ITERATE( \ - start_of_static_fields(obj), java_lang_Class::static_oop_field_size(obj), \ - beg_addr, end_addr, \ - PSParallelCompact::adjust_pointer(p), \ - assert_nothing ) - return oop_size(obj); -} #endif // SERIALGC int instanceMirrorKlass::instance_size(KlassHandle k) { @@ -296,11 +284,19 @@ return size_helper(); } -instanceOop instanceMirrorKlass::allocate_permanent_instance(KlassHandle k, TRAPS) { +instanceOop instanceMirrorKlass::allocate_instance(KlassHandle k, TRAPS) { // Query before forming handle. int size = instance_size(k); KlassHandle h_k(THREAD, as_klassOop()); - instanceOop i = (instanceOop) CollectedHeap::permanent_obj_allocate(h_k, size, CHECK_NULL); + instanceOop i; + + if (JavaObjectsInPerm) { + i = (instanceOop) CollectedHeap::permanent_obj_allocate(h_k, size, CHECK_NULL); + } else { + assert(ScavengeRootsInCode > 0, "must be"); + i = (instanceOop) CollectedHeap::obj_allocate(h_k, size, CHECK_NULL); + } + return i; }