diff options
author | 2023-03-21 17:00:46 +0000 | |
---|---|---|
committer | 2023-03-27 08:59:07 +0000 | |
commit | 4efc53d64dd5a04fcb9203bee756ae462c6da9f9 (patch) | |
tree | 2d07b8b73d81664213dec5d36acb58a99be8d171 /runtime/native/java_lang_Class.cc | |
parent | 456ea95d710b05659a87b5f348f523493a7718c6 (diff) |
Set Record flag during class linking
It's needed for adding new record-specific behavior in ART.
For example, fields are still immutable and un-modifiable
via java.lang.reflect.Field#set*() API. See http://b/272698028
Bug: 272698028
Test: atest CtsLibcoreTestCases:RecordTest
Change-Id: I6805fc4a8b8966b913eaba9f7c4dfdd1ab5886c4
Diffstat (limited to 'runtime/native/java_lang_Class.cc')
-rw-r--r-- | runtime/native/java_lang_Class.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/runtime/native/java_lang_Class.cc b/runtime/native/java_lang_Class.cc index 593a454d37..7cd1dc081f 100644 --- a/runtime/native/java_lang_Class.cc +++ b/runtime/native/java_lang_Class.cc @@ -732,6 +732,13 @@ static jboolean Class_isAnonymousClass(JNIEnv* env, jobject javaThis) { return class_name == nullptr; } +static jboolean Class_isRecord0(JNIEnv* env, jobject javaThis) { + ScopedFastNativeObjectAccess soa(env); + StackHandleScope<1> hs(soa.Self()); + Handle<mirror::Class> klass(hs.NewHandle(DecodeClass(soa, javaThis))); + return klass->IsRecordClass(); +} + static jboolean Class_isDeclaredAnnotationPresent(JNIEnv* env, jobject javaThis, jclass annotationType) { ScopedFastNativeObjectAccess soa(env); @@ -954,6 +961,7 @@ static JNINativeMethod gMethods[] = { FAST_NATIVE_METHOD(Class, getSignatureAnnotation, "()[Ljava/lang/String;"), FAST_NATIVE_METHOD(Class, isAnonymousClass, "()Z"), FAST_NATIVE_METHOD(Class, isDeclaredAnnotationPresent, "(Ljava/lang/Class;)Z"), + FAST_NATIVE_METHOD(Class, isRecord0, "()Z"), FAST_NATIVE_METHOD(Class, newInstance, "()Ljava/lang/Object;"), }; |