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;