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