8235359: Simplify method Class.getRecordComponents()

Change getRecordComponents0() to return an array of RecordComponent's so no conversion is needed

Reviewed-by: lfoltan, chegar, fparain, vromero, mchung
This commit is contained in:
Harold Seigel 2019-12-06 13:05:25 +00:00
parent 7eadf5b372
commit b8dbdd1232
2 changed files with 8 additions and 10 deletions

View File

@ -2315,15 +2315,11 @@ public final class Class<T> implements java.io.Serializable,
if (isPrimitive() || isArray()) { if (isPrimitive() || isArray()) {
return new RecordComponent[0]; return new RecordComponent[0];
} }
Object[] recordComponents = getRecordComponents0(); RecordComponent[] recordComponents = getRecordComponents0();
if (recordComponents == null || recordComponents.length == 0) { if (recordComponents == null) {
return new RecordComponent[0]; return new RecordComponent[0];
} }
RecordComponent[] result = new RecordComponent[recordComponents.length]; return recordComponents;
for (int i = 0; i < recordComponents.length; i++) {
result[i] = (RecordComponent)recordComponents[i];
}
return result;
} }
/** /**
@ -3483,7 +3479,8 @@ public final class Class<T> implements java.io.Serializable,
private native Method[] getDeclaredMethods0(boolean publicOnly); private native Method[] getDeclaredMethods0(boolean publicOnly);
private native Constructor<T>[] getDeclaredConstructors0(boolean publicOnly); private native Constructor<T>[] getDeclaredConstructors0(boolean publicOnly);
private native Class<?>[] getDeclaredClasses0(); private native Class<?>[] getDeclaredClasses0();
private native Object[] getRecordComponents0(); @SuppressWarnings("preview")
private native RecordComponent[] getRecordComponents0();
private native boolean isRecord0(); private native boolean isRecord0();
/** /**

View File

@ -51,6 +51,7 @@ extern jboolean VerifyFixClassname(char *utf_name);
#define CTR "Ljava/lang/reflect/Constructor;" #define CTR "Ljava/lang/reflect/Constructor;"
#define PD "Ljava/security/ProtectionDomain;" #define PD "Ljava/security/ProtectionDomain;"
#define BA "[B" #define BA "[B"
#define RC "Ljava/lang/reflect/RecordComponent;"
static JNINativeMethod methods[] = { static JNINativeMethod methods[] = {
{"initClassName", "()" STR, (void *)&JVM_InitClassName}, {"initClassName", "()" STR, (void *)&JVM_InitClassName},
@ -77,8 +78,8 @@ static JNINativeMethod methods[] = {
{"getRawTypeAnnotations", "()" BA, (void *)&JVM_GetClassTypeAnnotations}, {"getRawTypeAnnotations", "()" BA, (void *)&JVM_GetClassTypeAnnotations},
{"getNestHost0", "()" CLS, (void *)&JVM_GetNestHost}, {"getNestHost0", "()" CLS, (void *)&JVM_GetNestHost},
{"getNestMembers0", "()[" CLS, (void *)&JVM_GetNestMembers}, {"getNestMembers0", "()[" CLS, (void *)&JVM_GetNestMembers},
{"getRecordComponents0", "()[" OBJ, (void *)&JVM_GetRecordComponents}, {"getRecordComponents0", "()[" RC, (void *)&JVM_GetRecordComponents},
{"isRecord0", "()Z", (void *)&JVM_IsRecord}, {"isRecord0", "()Z", (void *)&JVM_IsRecord},
}; };
#undef OBJ #undef OBJ