RFR: 8359064: Expose reason for marking nmethod non-entrant to JVMCI client [v3]
Doug Simon
dnsimon at openjdk.org
Thu Jun 12 11:03:32 UTC 2025
On Thu, 12 Jun 2025 00:27:55 GMT, Cesar Soares Lucas <cslucas at openjdk.org> wrote:
>> We recently introduced a way to set the reason why a nmethod was being marked as `not entrant`, see [here](https://github.com/openjdk/jdk/pull/23980) and [here](https://github.com/openjdk/jdk/pull/25338).
>>
>> This PR is to expose in the JVMCI interface the reason why the nmethod was flagged as `not entrant`. This will allow JVMCI-based compilers to implement heuristics to handle re-compilations differently based on what happened to earlier versions of a method, for instance, this will likely be used to address this [RFE in Truffle](https://github.com/oracle/graal/issues/11045
>> ).
>>
>> Tested on Linux x86_64, ARM with JTREG tier 1-3.
>
> Cesar Soares Lucas has updated the pull request incrementally with one additional commit since the last revision:
>
> Refactoring: move changes to HotSpotNmethod class; remove enum on Java side; rename field to invalidationReason
src/hotspot/share/code/nmethod.hpp line 476:
> 474: // If you change anything in this enum please patch
> 475: // vmStructs_jvmci.cpp accordingly.
> 476: enum class ChangeReason : u1 {
I would also suggest this enum be changed to `InvalidationReason` but that can be considered as a potential follow up.
src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotNmethod.java line 213:
> 211: * @return a String describing the reason why this nmethod was invalidated.
> 212: */
> 213: public String getInvalidationReasonString() {
I would have stuck with getInvalidationReasonDescription but can live with getInvalidationReasonString.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25706#discussion_r2142359399
PR Review Comment: https://git.openjdk.org/jdk/pull/25706#discussion_r2142360949
More information about the graal-dev
mailing list