diff --git a/src/hotspot/share/prims/jvmti.xml b/src/hotspot/share/prims/jvmti.xml
index 71d3c06cd79..e062e121680 100644
--- a/src/hotspot/share/prims/jvmti.xml
+++ b/src/hotspot/share/prims/jvmti.xml
@@ -9909,9 +9909,11 @@ myInit() {
there is a jint parameter, the event handler should be
declared:
- void JNICALL myHandler(jvmtiEnv* jvmti_env, jint myInt, ...)
+ void JNICALL myHandler(jvmtiEnv* jvmti_env, ...)
Note the terminal "..." which indicates varargs.
+ The jint argument inside myHandler needs to be extracted using
+ the va_* syntax of the C programming language.
diff --git a/src/hotspot/share/prims/jvmtiExtensions.cpp b/src/hotspot/share/prims/jvmtiExtensions.cpp
index f82b819223e..36bc47ad0b5 100644
--- a/src/hotspot/share/prims/jvmtiExtensions.cpp
+++ b/src/hotspot/share/prims/jvmtiExtensions.cpp
@@ -34,7 +34,14 @@ GrowableArray* JvmtiExtensions::_ext_events;
// extension function
-static jvmtiError JNICALL IsClassUnloadingEnabled(const jvmtiEnv* env, jboolean* enabled, ...) {
+static jvmtiError JNICALL IsClassUnloadingEnabled(const jvmtiEnv* env, ...) {
+ jboolean* enabled = NULL;
+ va_list ap;
+
+ va_start(ap, env);
+ enabled = va_arg(ap, jboolean *);
+ va_end(ap);
+
if (enabled == NULL) {
return JVMTI_ERROR_NULL_POINTER;
}
diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/extension/EX03/ex03t001/ex03t001.c b/test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/extension/EX03/ex03t001/ex03t001.c
index 6329eb8eeaf..3c123154d56 100644
--- a/test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/extension/EX03/ex03t001/ex03t001.c
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/extension/EX03/ex03t001/ex03t001.c
@@ -43,7 +43,15 @@ static jrawMonitorID eventMon;
/* ============================================================================= */
static void JNICALL
-ClassUnload(jvmtiEnv* jvmti_env, JNIEnv* jni_env, const char* name, ...) {
+ClassUnload(jvmtiEnv* jvmti_env, ...) {
+ JNIEnv *jni_env = NULL;
+ va_list ap;
+
+ va_start(ap, jvmti_env);
+ jni_env = va_arg(ap, JNIEnv *);
+ const char * name = va_arg(ap, const char *);
+ va_end(ap);
+
// The name argument should never be null
if (name == NULL) {
nsk_jvmti_setFailStatus();