RFR: 8359064: Expose reason for marking nmethod non-entrant to JVMCI client [v7]
Doug Simon
dnsimon at openjdk.org
Wed Jun 18 16:56:36 UTC 2025
On Mon, 16 Jun 2025 22:22:48 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:
>
> Prevent overriding invalidation reason.
src/hotspot/share/jvmci/jvmciCompilerToVM.cpp line 1408:
> 1406:
> 1407: C2V_VMENTRY(void, invalidateHotSpotNmethod, (JNIEnv* env, jobject, jobject hs_nmethod, jboolean deoptimize, jint invalidation_reason))
> 1408: #ifdef ASSERT
We prefer runtime checks and throwing Java exceptions than assertions in this JVMCI code:
int first = static_cast<int>(nmethod::InvalidationReason::UNKNOWN);
int last = static_cast<int>(nmethod::InvalidationReason::LAST_REASON);
if (invalidation_reason < first || invalidation_reason >= last) {
JVMCI_THROW_MSG(IllegalArgumentException, err_msg("Invalid invalidation_reason: %d", invalidation_reason ));
}
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25706#discussion_r2155092025
More information about the graal-dev
mailing list