Handle VERIFY_ERROR_INSTANTIATION in compiler and nterp.

Nterp always supported it, but the compiler was missing a check.

Test: test.py
Test: 600-verifier-fails
Change-Id: I8675ca6f61c68c4152212c81843da8248781f18a
diff --git a/compiler/optimizing/instruction_builder.cc b/compiler/optimizing/instruction_builder.cc
index 76ee456..3b1086e 100644
--- a/compiler/optimizing/instruction_builder.cc
+++ b/compiler/optimizing/instruction_builder.cc
@@ -1269,6 +1269,7 @@
   if (load_class->NeedsAccessCheck() ||
       klass == nullptr ||  // Finalizable/instantiable is unknown.
       klass->IsFinalizable() ||
+      klass.Get() == klass->GetClass() ||  // Classes cannot be allocated in code
       !klass->IsInstantiable()) {
     entrypoint = kQuickAllocObjectWithChecks;
   }
diff --git a/runtime/verifier/method_verifier.cc b/runtime/verifier/method_verifier.cc
index 4bebbcc..8ab588e 100644
--- a/runtime/verifier/method_verifier.cc
+++ b/runtime/verifier/method_verifier.cc
@@ -5174,6 +5174,7 @@
 static inline bool CanRuntimeHandleVerificationFailure(uint32_t encountered_failure_types) {
   constexpr uint32_t unresolved_mask =
       verifier::VerifyError::VERIFY_ERROR_CLASS_CHANGE |
+      verifier::VerifyError::VERIFY_ERROR_INSTANTIATION |
       verifier::VerifyError::VERIFY_ERROR_ACCESS_CLASS |
       verifier::VerifyError::VERIFY_ERROR_ACCESS_FIELD |
       verifier::VerifyError::VERIFY_ERROR_NO_METHOD |
diff --git a/runtime/verifier/verifier_compiler_binding.h b/runtime/verifier/verifier_compiler_binding.h
index a92a063..1fa02f8 100644
--- a/runtime/verifier/verifier_compiler_binding.h
+++ b/runtime/verifier/verifier_compiler_binding.h
@@ -30,6 +30,7 @@
   constexpr uint32_t unresolved_mask = verifier::VerifyError::VERIFY_ERROR_NO_CLASS
       | verifier::VerifyError::VERIFY_ERROR_CLASS_CHANGE
       | verifier::VerifyError::VERIFY_ERROR_NO_METHOD
+      | verifier::VerifyError::VERIFY_ERROR_INSTANTIATION
       | verifier::VerifyError::VERIFY_ERROR_ACCESS_CLASS
       | verifier::VerifyError::VERIFY_ERROR_ACCESS_FIELD
       | verifier::VerifyError::VERIFY_ERROR_ACCESS_METHOD;