src/share/vm/oops/instanceMirrorKlass.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** 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

*** 273,308 **** --- 273,304 ---- start_of_static_fields(obj), java_lang_Class::static_oop_field_size(obj), \ PSParallelCompact::adjust_pointer(p), \ 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) { if (k() != NULL && k->oop_is_instance()) { return align_object_size(size_helper() + instanceKlass::cast(k())->static_field_size()); } 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); + + 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; } int instanceMirrorKlass::oop_size(oop obj) const { return java_lang_Class::oop_size(obj);

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