[jdk17u-dev] RFR: 8280481: Duplicated stubs to interpreter for static calls

Evgeny Astigeevich eastigeevich at openjdk.org
Tue Oct 11 19:35:30 UTC 2022


This is a backport of shared stubs to the interpreter for statically bound Java methods calls.
Stubs to the interpreter are used when an invoked Java method is not compiled.

The full description of the changes and improvements in saving nmethod memory can be found in https://github.com/openjdk/jdk/pull/8816

The backport contains implementations for the aarch64, x86 and x86_64 backends. Other backends are guarded with `Unimplemented()` calls and `constexpr supports_shared_stubs()` returning `false`.

A risk is between low and moderate. Performance regressions are unlikely because stubs are used to go to the interpreter which will be the main contributor to the  execution time. Crashes are unlikely because we either successfully generate a shared stub during compilation or fail. If generation fails, there will be no compiled method with missing stubs.

Tested with fastdebug and release builds on aarch64, x86 and x86_64:
- `gtest`: Passed
- `tier1`, `tier2`: Passed

-------------

Commit messages:
 - Backport 351560414d7ddc0694126ab184bdb78be604e51f

Changes: https://git.openjdk.org/jdk17u-dev/pull/780/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk17u-dev&pr=780&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8280481
  Stats: 483 lines in 21 files changed: 451 ins; 5 del; 27 mod
  Patch: https://git.openjdk.org/jdk17u-dev/pull/780.diff
  Fetch: git fetch https://git.openjdk.org/jdk17u-dev pull/780/head:pull/780

PR: https://git.openjdk.org/jdk17u-dev/pull/780


More information about the jdk-updates-dev mailing list