From 6bea1b6cf1f64ce06c2028fe4dbc44f70778168f Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Fri, 29 Nov 2024 12:30:43 +0000 Subject: [PATCH] 8344727: [JVMCI] Export the CompileBroker compilation activity mode for Truffle compiler control Reviewed-by: dnsimon --- src/hotspot/share/jvmci/jvmciCompilerToVM.cpp | 5 +++++ .../share/classes/jdk/vm/ci/hotspot/CompilerToVM.java | 6 ++++++ .../classes/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java | 8 ++++++++ 3 files changed, 19 insertions(+) diff --git a/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp b/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp index aa8ce28b7c5..9052e622894 100644 --- a/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp +++ b/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp @@ -3223,6 +3223,10 @@ C2V_VMENTRY(void, getOopMapAt, (JNIEnv* env, jobject, ARGUMENT_PAIR(method), JVMCIENV->copy_longs_from((jlong*)oop_map_buf, oop_map, 0, nwords); C2V_END +C2V_VMENTRY_0(jint, getCompilationActivityMode, (JNIEnv* env, jobject)) + return CompileBroker::get_compilation_activity_mode(); +} + #define CC (char*) /*cast a literal from (const char*)*/ #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &(c2v_ ## f)) @@ -3385,6 +3389,7 @@ JNINativeMethod CompilerToVM::methods[] = { {CC "notifyCompilerInliningEvent", CC "(I" HS_METHOD2 HS_METHOD2 "ZLjava/lang/String;I)V", FN_PTR(notifyCompilerInliningEvent)}, {CC "getOopMapAt", CC "(" HS_METHOD2 "I[J)V", FN_PTR(getOopMapAt)}, {CC "updateCompilerThreadCanCallJava", CC "(Z)Z", FN_PTR(updateCompilerThreadCanCallJava)}, + {CC "getCompilationActivityMode", CC "()I", FN_PTR(getCompilationActivityMode)}, }; int CompilerToVM::methods_count() { diff --git a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/CompilerToVM.java b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/CompilerToVM.java index 12c6dfd3f9d..894fca94a77 100644 --- a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/CompilerToVM.java +++ b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/CompilerToVM.java @@ -1522,4 +1522,10 @@ final class CompilerToVM { * @returns false if no change was made, otherwise true */ native boolean updateCompilerThreadCanCallJava(boolean newState); + + /** + * Returns the current {@code CompileBroker} compilation activity mode which is one of: + * {@code stop_compilation = 0}, {@code run_compilation = 1} or {@code shutdown_compilation = 2} + */ + native int getCompilationActivityMode(); } diff --git a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java index 616b5a23f64..bc221c46717 100644 --- a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java +++ b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java @@ -1488,4 +1488,12 @@ public final class HotSpotJVMCIRuntime implements JVMCIRuntime { exitHotSpot(status); throw JVMCIError.shouldNotReachHere(); } + + /** + * Returns HotSpot's {@code CompileBroker} compilation activity mode which is one of: + * {@code stop_compilation = 0}, {@code run_compilation = 1} or {@code shutdown_compilation = 2} + */ + public int getCompilationActivityMode() { + return compilerToVm.getCompilationActivityMode(); + } }