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 hotspot-compiler-dev
mailing list