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;",