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.h b/src/compiler.h
index 0c6b2bf..ce2d3c2 100644
--- a/src/compiler.h
+++ b/src/compiler.h
@@ -107,13 +107,13 @@
 
   // Can we fast path instance field access? Computes field's offset and volatility
   bool ComputeInstanceFieldInfo(uint32_t field_idx, CompilationUnit* cUnit,
-                                int& field_offset, bool& is_volatile);
+                                int& field_offset, bool& is_volatile, bool is_put);
 
   // Can we fastpath static field access? Computes field's offset, volatility and whether the
   // field is within the referrer (which can avoid checking class initialization)
   bool ComputeStaticFieldInfo(uint32_t field_idx, CompilationUnit* cUnit,
                               int& field_offset, int& ssb_index,
-                              bool& is_referrers_class, bool& is_volatile);
+                              bool& is_referrers_class, bool& is_volatile, bool is_put);
 
   // Can we fastpath a interface, super class or virtual method call? Computes method's vtable index
   bool ComputeInvokeInfo(uint32_t method_idx, CompilationUnit* cUnit, InvokeType type,