Check instantiability at runtime when inconclusive at compile time

Change-Id: I40e4a3da05936fee77e074d5dc4d0fec1a1c5526
diff --git a/src/runtime_support.cc b/src/runtime_support.cc
index 63efbf7..ff43d1f 100644
--- a/src/runtime_support.cc
+++ b/src/runtime_support.cc
@@ -651,6 +651,11 @@
     }
   }
   if (access_check) {
+    if (UNLIKELY(!klass->IsInstantiable())) {
+      self->ThrowNewException("Ljava/lang/InstantiationError;",
+                              PrettyDescriptor(klass).c_str());
+      return NULL;  // Failure
+    }
     Class* referrer = method->GetDeclaringClass();
     if (UNLIKELY(!referrer->CanAccess(klass))) {
       self->ThrowNewExceptionF("Ljava/lang/IllegalAccessError;",