Disallow direct subclasses of java.lang.ref.Reference.
More extra-linguistic bullshit.
Change-Id: Ib2c5328e5d934a06d5df8902d4b10ad28c458278
diff --git a/src/class_linker.cc b/src/class_linker.cc
index b6d2357..5159f06 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -1932,6 +1932,12 @@
if (reference_flags != 0) {
klass->SetAccessFlags(klass->GetAccessFlags() | reference_flags);
}
+ // Disallow custom direct subclasses of java.lang.ref.Reference.
+ if (init_done_ && super->GetDescriptor()->Equals("Ljava/lang/ref/Reference;")) {
+ ThrowLinkageError("Class %s attempts to subclass java.lang.ref.Reference, which is not allowed",
+ PrettyDescriptor(klass->GetDescriptor()).c_str());
+ return false;
+ }
#ifndef NDEBUG
// Ensure super classes are fully resolved prior to resolving fields..