test/hotspot/jtreg/vmTestbase/nsk/jvmti/RedefineClasses/redefclass014/redefclass014.cpp
changeset 51715 13a63d4a3f8d
parent 51551 e409244ce72e
child 52642 9cfc8b0c45fd
equal deleted inserted replaced
51714:975d3636a2f9 51715:13a63d4a3f8d
    25 #include <string.h>
    25 #include <string.h>
    26 #include "jvmti.h"
    26 #include "jvmti.h"
    27 #include "agent_common.h"
    27 #include "agent_common.h"
    28 #include "JVMTITools.h"
    28 #include "JVMTITools.h"
    29 
    29 
    30 #ifdef __cplusplus
       
    31 extern "C" {
    30 extern "C" {
    32 #endif
       
    33 
    31 
    34 #ifndef JNI_ENV_ARG
       
    35 
       
    36 #ifdef __cplusplus
       
    37 #define JNI_ENV_ARG(x, y) y
       
    38 #define JNI_ENV_PTR(x) x
       
    39 #else
       
    40 #define JNI_ENV_ARG(x,y) x, y
       
    41 #define JNI_ENV_PTR(x) (*x)
       
    42 #endif
       
    43 
       
    44 #endif
       
    45 
    32 
    46 #define PASSED 0
    33 #define PASSED 0
    47 #define STATUS_FAILED 2
    34 #define STATUS_FAILED 2
    48 
    35 
    49 static jvmtiEnv *jvmti = NULL;
    36 static jvmtiEnv *jvmti = NULL;
    68 
    55 
    69     if (options != NULL && strcmp(options, "printdump") == 0) {
    56     if (options != NULL && strcmp(options, "printdump") == 0) {
    70         printdump = JNI_TRUE;
    57         printdump = JNI_TRUE;
    71     }
    58     }
    72 
    59 
    73     res = JNI_ENV_PTR(jvm)->GetEnv(JNI_ENV_ARG(jvm, (void **) &jvmti),
    60     res = jvm->GetEnv((void **) &jvmti, JVMTI_VERSION_1_1);
    74         JVMTI_VERSION_1_1);
       
    75     if (res != JNI_OK || jvmti == NULL) {
    61     if (res != JNI_OK || jvmti == NULL) {
    76         printf("Wrong result of a valid call to GetEnv!\n");
    62         printf("Wrong result of a valid call to GetEnv!\n");
    77         return JNI_ERR;
    63         return JNI_ERR;
    78     }
    64     }
    79 
    65 
   121                TranslateError(err), err);
   107                TranslateError(err), err);
   122         return STATUS_FAILED;
   108         return STATUS_FAILED;
   123     }
   109     }
   124 
   110 
   125     classDef.klass = cls;
   111     classDef.klass = cls;
   126     classDef.class_byte_count =
   112     classDef.class_byte_count = env->GetArrayLength(bytes);
   127         JNI_ENV_PTR(env)->GetArrayLength(JNI_ENV_ARG(env, bytes));
   113     classDef.class_bytes = (unsigned char *) env->GetByteArrayElements(bytes, NULL);
   128     classDef.class_bytes = (unsigned char *)
       
   129         JNI_ENV_PTR(env)->GetByteArrayElements(JNI_ENV_ARG(env, bytes), NULL);
       
   130 
   114 
   131     if (printdump == JNI_TRUE) {
   115     if (printdump == JNI_TRUE) {
   132         printf(">>> circularity error check ...\n");
   116         printf(">>> circularity error check ...\n");
   133     }
   117     }
   134     err = jvmti->RedefineClasses(1, &classDef);
   118     err = jvmti->RedefineClasses(1, &classDef);
   148     }
   132     }
   149 
   133 
   150     return result;
   134     return result;
   151 }
   135 }
   152 
   136 
   153 #ifdef __cplusplus
       
   154 }
   137 }
   155 #endif