On Fri, 12 Dec 2025 15:28:27 GMT, Stefan Johansson <[email protected]> wrote:
> Please review this change to remove `ObjBufferAllocator` since the > impementation now is identical to `ObjAllocator`. > > **Summary** > This was not the case when ObjBufferAllocator was first introduced. Back then > it skipped clearing the memory and just called oopDesc::set_klass_gap(mem, > 0). This is no longer the case after > [JDK-8350630](https://bugs.openjdk.org/browse/JDK-8350630) in which > `ObjBufferAllocator` was changed to also clear the memory. The previous > optimization is likely not needed and we should streamline the code to always > use `ObjAllocator`. > > **Testing** > * mach5 tier1-3 (ongoing) src/hotspot/share/prims/unsafe.cpp line 520: > 518: Handle vh(THREAD, v); > 519: InlineKlass* vk = InlineKlass::cast(v->klass()); > 520: instanceOop new_value = vk->allocate_instance(CHECK_NULL); This changes one instance in a function named Unsafe_MakePrivateBuffer. Is that also dead code now? I don't see any Java usage of that API: $ grep -r akePrivateBuffer src/ src/hotspot/share/prims/unsafe.cpp:UNSAFE_ENTRY(jobject, Unsafe_MakePrivateBuffer(JNIEnv *env, jobject unsafe, jobject value)) { src/hotspot/share/prims/unsafe.cpp: {CC "makePrivateBuffer", CC "(" OBJ ")" OBJ, FN_PTR(Unsafe_MakePrivateBuffer)}, src/hotspot/share/classfile/vmIntrinsics.hpp: do_name(makePrivateBuffer_name,"makePrivateBuffer") \ src/hotspot/share/classfile/vmIntrinsics.hpp: do_intrinsic(_makePrivateBuffer, jdk_internal_misc_Unsafe, makePrivateBuffer_name, object_object_signature, F_RN) \ src/hotspot/share/classfile/vmIntrinsics.cpp: case vmIntrinsics::_makePrivateBuffer: src/hotspot/share/opto/doCall.cpp: if (callee->intrinsic_id() == vmIntrinsics::_makePrivateBuffer || callee->intrinsic_id() == vmIntrinsics::_finishPrivateBuffer) { src/hotspot/share/opto/doCall.cpp: if (!rtype->is_void() && cg->method()->intrinsic_id() != vmIntrinsicID::_makePrivateBuffer) { src/hotspot/share/opto/c2compiler.cpp: case vmIntrinsics::_makePrivateBuffer: src/hotspot/share/opto/graphKit.cpp: // language, Unsafe::makePrivateBuffer returns an Object that is checkcast-ed to the concrete src/hotspot/share/opto/library_call.cpp: case vmIntrinsics::_makePrivateBuffer: return inline_unsafe_make_private_buffer(); src/hotspot/share/opto/library_call.cpp: C->record_method_not_compilable("value passed to Unsafe::makePrivateBuffer is not of a constant value type"); src/hotspot/share/opto/library_call.cpp: C->record_method_not_compilable("value passed to Unsafe::finishPrivateBuffer must be allocated by Unsafe::makePrivateBuffer"); src/java.base/share/classes/jdk/internal/misc/Unsafe.java: public native <V> V makePrivateBuffer(V value); ------------- PR Review Comment: https://git.openjdk.org/valhalla/pull/1794#discussion_r2614654286
