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..