< prev index next >
src/share/vm/oops/instanceMirrorKlass.cpp
Print this page
rev 11484 : [mq]: webrev.02
@@ -48,16 +48,17 @@
instanceOop InstanceMirrorKlass::allocate_instance(KlassHandle k, TRAPS) {
// Query before forming handle.
int size = instance_size(k);
KlassHandle h_k(THREAD, this);
- instanceOop i = (instanceOop)CollectedHeap::obj_allocate(h_k, size, CHECK_NULL);
+ int field_offset = java_lang_Class::oop_size_offset();
- // Since mirrors can be variable sized because of the static fields, store
- // the size in the mirror itself.
- java_lang_Class::set_oop_size(i, size);
+ assert(field_offset != 0, "must be set");
+ assert(size > 0, "total object size must be positive: %d", size);
+ instanceOop i = (instanceOop)CollectedHeap::class_allocate(h_k, size, field_offset, CHECK_NULL);
+ // oop_size is set by class_allocate() before the header is set.
return i;
}
int InstanceMirrorKlass::oop_size(oop obj) const {
return java_lang_Class::oop_size(obj);
< prev index next >