RFR: 8348203: [JVMCI] Make eager JVMCI initialization observable in the debugger

David Holmes dholmes at openjdk.org
Wed Jan 22 00:28:34 UTC 2025


On Tue, 21 Jan 2025 16:59:05 GMT, Volker Simonis <simonis at openjdk.org> wrote:

> I realized that I can't debug (i.e. with a Java debugger) the Graal compiler initialization if it happens eagerly (e.g. with `EagerJVMCI`, `JVMCIPrintProperties`, `JVMCILibDumpJNIConfig`). Not that this is something I need every day, but I think it can easily be fixed by moving the early initializing a little further down, right after `JvmtiExport::post_vm_initialized()`:
> 
> 
>  diff --git a/src/hotspot/share/runtime/threads.cpp b/src/hotspot/share/runtime/threads.cpp
> index 1cab9bc5d53..191409c22e3 100644
> --- a/src/hotspot/share/runtime/threads.cpp
> +++ b/src/hotspot/share/runtime/threads.cpp
> @@ -806,12 +806,6 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
>    }
>  #endif
>  
> -#if INCLUDE_JVMCI
> - if (force_JVMCI_initialization) {
> - JVMCI::initialize_compiler(CHECK_JNI_ERR);
> - }
> -#endif
> -
>    if (NativeHeapTrimmer::enabled()) {
>      NativeHeapTrimmer::initialize();
>    }
> @@ -826,6 +820,12 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
>    // Notify JVMTI agents that VM initialization is complete - nop if no agents.
>    JvmtiExport::post_vm_initialized();
>  
> +#if INCLUDE_JVMCI
> + if (force_JVMCI_initialization) {
> + JVMCI::initialize_compiler(CHECK_JNI_ERR);
> + }
> +#endif
> +
>    JFR_ONLY(Jfr::on_create_vm_3();)
>  
>  #if INCLUDE_MANAGEMENT

It is not at all obvious what other impacts moving this could have. Is it really appropriate to enter the live phase and claim the VM is initialized if we may error out if JVMCI initialization fails after that point.

What prevents you from doing the debugging you want to do? And why are you "debugging" Graal compiler initialization anyway?

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

PR Review: https://git.openjdk.org/jdk/pull/23219#pullrequestreview-2565944946


More information about the compiler-dev mailing list