< prev index next >

src/hotspot/share/oops/valueKlass.cpp

Print this page

        

*** 128,137 **** --- 128,145 ---- instanceOop oop = (instanceOop)Universe::heap()->obj_allocate(this, size, CHECK_NULL); assert(oop->mark().is_always_locked(), "Unlocked value type"); return oop; } + instanceOop ValueKlass::allocate_instance_buffer(TRAPS) { + int size = size_helper(); // Query before forming handle. + + instanceOop oop = (instanceOop)Universe::heap()->obj_buffer_allocate(this, size, CHECK_NULL); + assert(oop->mark().is_always_locked(), "Unlocked value type"); + return oop; + } + bool ValueKlass::is_atomic() { return (nonstatic_field_size() * heapOopSize) <= longSize; } int ValueKlass::nonstatic_oop_count() {
*** 151,161 **** this->initialize(CHECK_NULL); // will throw an exception if in error state if (is_empty_value()) { res = (instanceOop)default_value(); } else { Handle obj_h(THREAD, obj); ! res = allocate_instance(CHECK_NULL); value_copy_payload_to_new_oop(((char*)(oopDesc*)obj_h()) + offset, res); } assert(res != NULL, "Must be set in one of two paths above"); return res; } --- 159,169 ---- this->initialize(CHECK_NULL); // will throw an exception if in error state if (is_empty_value()) { res = (instanceOop)default_value(); } else { Handle obj_h(THREAD, obj); ! res = allocate_instance_buffer(CHECK_NULL); value_copy_payload_to_new_oop(((char*)(oopDesc*)obj_h()) + offset, res); } assert(res != NULL, "Must be set in one of two paths above"); return res; }
< prev index next >