RFR: 8307462: [REDO] VmObjectAlloc is not generated by intrinsics methods which allocate objects
Leonid Mesnik
lmesnik at openjdk.org
Thu Aug 3 02:49:47 UTC 2023
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
More information about the serviceability-dev
mailing list