The fix adds posting VmObjectAlloc events by Unsafe.allocateInstance(Class<?> cls). The previous attempt to post event directly from 'LibraryCallKit::inline_unsafe_allocate()' cause performance regression even if jvmti event is not enabled. Some optimizations have been disabled just because possible usage and escaping of newly allocated object. So event posting is doing by returning to interpreter if events are enabled.
I verified that that performance (run locally only) of org.renaissance.jdk.streams.JmhScrabble.runOperation doesn't change if events are not enabled. There might be other intrinsics like 'LibraryCallKit::inline_unsafe_newArray()' where VM allocate memory. I'm going to file separate issue to find and fix them. Many thanks to Tobias H. for proposed solution. Testing with all tiers. ------------- Commit messages: - fixed comments and problemlist - fixed - 8307462: [REDO] VmObjectAlloc is not generated by intrinsics methods which allocate objects Changes: https://git.openjdk.org/jdk/pull/15110/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=15110&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8307462 Stats: 39 lines in 6 files changed: 35 ins; 4 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/15110.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/15110/head:pull/15110 PR: https://git.openjdk.org/jdk/pull/15110