Numerous fixes to compiler and verifier for cts vm-tests.

ClassNotFoundExceptions in ResolveType are converted to
NoClassDefFoundErrors.

Compiler checks for puts into final fields.

Method resolution searches direct methods if an appropriate virtual
method can't be found.

Invocations of <clinit> are rejected by the verifier.

Invoke-super and invoke-virtual can't be used on private methods.

Using invoke-interface on non-interface methods and not using
invoke-interface on interface methods leads do an error.

Change-Id: Ia589f1ffccf91b62812ee34c8c5fae1aaf3798c6
diff --git a/src/compiler/codegen/arm/MethodCodegenDriver.cc b/src/compiler/codegen/arm/MethodCodegenDriver.cc
index a1793e0..3e844fd 100644
--- a/src/compiler/codegen/arm/MethodCodegenDriver.cc
+++ b/src/compiler/codegen/arm/MethodCodegenDriver.cc
@@ -177,7 +177,7 @@
     bool fastPath =
         cUnit->compiler->ComputeStaticFieldInfo(fieldIdx, cUnit,
                                                 fieldOffset, ssbIndex,
-                                                isReferrersClass, isVolatile);
+                                                isReferrersClass, isVolatile, true);
     if (fastPath && !SLOW_FIELD_PATH) {
         DCHECK_GE(fieldOffset, 0);
         int rBase;
@@ -271,7 +271,7 @@
     bool fastPath =
         cUnit->compiler->ComputeStaticFieldInfo(fieldIdx, cUnit,
                                                 fieldOffset, ssbIndex,
-                                                isReferrersClass, isVolatile);
+                                                isReferrersClass, isVolatile, false);
     if (fastPath && !SLOW_FIELD_PATH) {
         DCHECK_GE(fieldOffset, 0);
         int rBase;