@@ -3015,7 +3015,7 @@ C2V_VMENTRY_NULL(jobject, asReflectionField, (JNIEnv* env, jobject, ARGUMENT_PAI
3015
3015
C2V_END
3016
3016
3017
3017
static jbyteArray get_encoded_annotation_values (InstanceKlass* holder, AnnotationArray* annotations_array,
3018
- jboolean is_type_annotations ,
3018
+ jint category ,
3019
3019
jint filter_length, jlong filter_klass_pointers,
3020
3020
JavaThread* THREAD, JVMCI_TRAPS) {
3021
3021
// Get a ConstantPool object for annotation parsing
@@ -3050,7 +3050,7 @@ static jbyteArray get_encoded_annotation_values(InstanceKlass* holder, Annotatio
3050
3050
JavaValue result (T_OBJECT);
3051
3051
JavaCallArguments args;
3052
3052
args.push_oop (annotations);
3053
- args.push_int (is_type_annotations );
3053
+ args.push_int (category );
3054
3054
args.push_oop (Handle (THREAD, holder->java_mirror ()));
3055
3055
args.push_oop (jcp);
3056
3056
args.push_oop (filter_classes);
@@ -3081,29 +3081,54 @@ static jbyteArray get_encoded_annotation_values(InstanceKlass* holder, Annotatio
3081
3081
return JVMCIENV->get_jbyteArray (ba_dest);
3082
3082
}
3083
3083
3084
- C2V_VMENTRY_NULL (jbyteArray, getEncodedClassAnnotationValues, (JNIEnv* env, jobject, ARGUMENT_PAIR(klass), jboolean is_type_annotations ,
3084
+ C2V_VMENTRY_NULL (jbyteArray, getEncodedClassAnnotationValues, (JNIEnv* env, jobject, ARGUMENT_PAIR(klass), jint category ,
3085
3085
jobject filter, jint filter_length, jlong filter_klass_pointers))
3086
3086
CompilerThreadCanCallJava canCallJava(thread, true ); // Requires Java support
3087
3087
InstanceKlass* holder = InstanceKlass::cast(UNPACK_PAIR(Klass, klass));
3088
- AnnotationArray* raw_annotations = is_type_annotations ? holder->class_type_annotations () : holder->class_annotations();
3089
- return get_encoded_annotation_values(holder, raw_annotations, is_type_annotations, filter_length, filter_klass_pointers, THREAD, JVMCIENV);
3088
+ AnnotationArray* raw_annotations;
3089
+ if (category == CompilerToVM::DECLARED_ANNOTATIONS) {
3090
+ raw_annotations = holder->class_annotations ();
3091
+ } else if (category == CompilerToVM::TYPE_ANNOTATIONS) {
3092
+ raw_annotations = holder->class_type_annotations ();
3093
+ } else {
3094
+ THROW_MSG_NULL (vmSymbols::java_lang_IllegalArgumentException (),
3095
+ err_msg (" %d" , category));
3096
+ }
3097
+ return get_encoded_annotation_values(holder, raw_annotations, category, filter_length, filter_klass_pointers, THREAD, JVMCIENV);
3090
3098
C2V_END
3091
3099
3092
- C2V_VMENTRY_NULL (jbyteArray, getEncodedExecutableAnnotationValues, (JNIEnv* env, jobject, ARGUMENT_PAIR(method), jboolean is_type_annotations ,
3100
+ C2V_VMENTRY_NULL (jbyteArray, getEncodedExecutableAnnotationValues, (JNIEnv* env, jobject, ARGUMENT_PAIR(method), jint category ,
3093
3101
jobject filter, jint filter_length, jlong filter_klass_pointers))
3094
3102
CompilerThreadCanCallJava canCallJava(thread, true ); // Requires Java support
3095
3103
methodHandle method (THREAD, UNPACK_PAIR(Method, method));
3096
- AnnotationArray* raw_annotations = is_type_annotations ? method->type_annotations () : method->annotations();
3097
- return get_encoded_annotation_values(method->method_holder (), raw_annotations, is_type_annotations, filter_length, filter_klass_pointers, THREAD, JVMCIENV);
3104
+ AnnotationArray* raw_annotations;
3105
+ if (category == CompilerToVM::DECLARED_ANNOTATIONS) {
3106
+ raw_annotations = method->annotations ();
3107
+ } else if (category == CompilerToVM::PARAMETER_ANNOTATIONS) {
3108
+ raw_annotations = method->parameter_annotations ();
3109
+ } else if (category == CompilerToVM::TYPE_ANNOTATIONS) {
3110
+ raw_annotations = method->type_annotations ();
3111
+ } else {
3112
+ THROW_MSG_NULL (vmSymbols::java_lang_IllegalArgumentException (), err_msg (" %d" , category));
3113
+ }
3114
+ return get_encoded_annotation_values(method->method_holder (), raw_annotations, category, filter_length, filter_klass_pointers, THREAD, JVMCIENV);
3098
3115
C2V_END
3099
3116
3100
- C2V_VMENTRY_NULL (jbyteArray, getEncodedFieldAnnotationValues, (JNIEnv* env, jobject, ARGUMENT_PAIR(klass), jint index, jboolean is_type_annotations ,
3117
+ C2V_VMENTRY_NULL (jbyteArray, getEncodedFieldAnnotationValues, (JNIEnv* env, jobject, ARGUMENT_PAIR(klass), jint index, jint category ,
3101
3118
jobject filter, jint filter_length, jlong filter_klass_pointers))
3102
3119
CompilerThreadCanCallJava canCallJava(thread, true ); // Requires Java support
3103
3120
InstanceKlass* holder = check_field(InstanceKlass::cast(UNPACK_PAIR(Klass, klass)), index, JVMCI_CHECK_NULL);
3104
3121
fieldDescriptor fd (holder, index);
3105
- AnnotationArray* raw_annotations = is_type_annotations ? fd.type_annotations() : fd.annotations();
3106
- return get_encoded_annotation_values(holder, raw_annotations, is_type_annotations, filter_length, filter_klass_pointers, THREAD, JVMCIENV);
3122
+ AnnotationArray* raw_annotations;
3123
+ if (category == CompilerToVM::DECLARED_ANNOTATIONS) {
3124
+ raw_annotations = fd.annotations ();
3125
+ } else if (category == CompilerToVM::TYPE_ANNOTATIONS) {
3126
+ raw_annotations = fd.type_annotations ();
3127
+ } else {
3128
+ THROW_MSG_NULL (vmSymbols::java_lang_IllegalArgumentException (),
3129
+ err_msg (" %d" , category));
3130
+ }
3131
+ return get_encoded_annotation_values(holder, raw_annotations, category, filter_length, filter_klass_pointers, THREAD, JVMCIENV);
3107
3132
C2V_END
3108
3133
3109
3134
C2V_VMENTRY_NULL (jobjectArray, getFailedSpeculations, (JNIEnv* env, jobject, jlong failed_speculations_address, jobjectArray current))
@@ -3447,9 +3472,9 @@ JNINativeMethod CompilerToVM::methods[] = {
3447
3472
{CC " getCode" , CC " (" HS_INSTALLED_CODE " )[B" , FN_PTR (getCode)},
3448
3473
{CC " asReflectionExecutable" , CC " (" HS_METHOD2 " )" REFLECTION_EXECUTABLE, FN_PTR (asReflectionExecutable)},
3449
3474
{CC " asReflectionField" , CC " (" HS_KLASS2 " I)" REFLECTION_FIELD, FN_PTR (asReflectionField)},
3450
- {CC " getEncodedClassAnnotationValues" , CC " (" HS_KLASS2 " Z " OBJECT " IJ)[B" , FN_PTR (getEncodedClassAnnotationValues)},
3451
- {CC " getEncodedExecutableAnnotationValues" , CC " (" HS_METHOD2 " Z " OBJECT " IJ)[B" , FN_PTR (getEncodedExecutableAnnotationValues)},
3452
- {CC " getEncodedFieldAnnotationValues" , CC " (" HS_KLASS2 " IZ " OBJECT " IJ)[B" , FN_PTR (getEncodedFieldAnnotationValues)},
3475
+ {CC " getEncodedClassAnnotationValues" , CC " (" HS_KLASS2 " I " OBJECT " IJ)[B" , FN_PTR (getEncodedClassAnnotationValues)},
3476
+ {CC " getEncodedExecutableAnnotationValues" , CC " (" HS_METHOD2 " I " OBJECT " IJ)[B" , FN_PTR (getEncodedExecutableAnnotationValues)},
3477
+ {CC " getEncodedFieldAnnotationValues" , CC " (" HS_KLASS2 " II " OBJECT " IJ)[B" , FN_PTR (getEncodedFieldAnnotationValues)},
3453
3478
{CC " getFailedSpeculations" , CC " (J[[B)[[B" , FN_PTR (getFailedSpeculations)},
3454
3479
{CC " getFailedSpeculationsAddress" , CC " (" HS_METHOD2 " )J" , FN_PTR (getFailedSpeculationsAddress)},
3455
3480
{CC " releaseFailedSpeculations" , CC " (J)V" , FN_PTR (releaseFailedSpeculations)},
0 commit comments