Fix compiler class initialization to properly deal with super classes

Also moving active parts of compiler_test to be oat tests including
IntMath and Invoke. Added an interface invocation test case to Invoke
test. Changed Compiler to CHECK that it is not used once the
Runtime::IsStarted, forcing some jni_compiler_test to have two phases,
one for compiling before Runtime::Start and one for JNI operations
after the Runtime::IsStarted.

Finally, fixed Class::CanPutArrayElementFromCode by removing
CanPutArrayElement and calling IsAssignableFrom directly.

Change-Id: I52ca4dbc0e02db65f274ccc3ca7468dce365a44e
diff --git a/test/Invoke/Invoke.java b/test/Invoke/Invoke.java
index 8bb03d3..e8c30ef 100644
--- a/test/Invoke/Invoke.java
+++ b/test/Invoke/Invoke.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-class Invoke {
+class Invoke implements InvokeInterface {
 
     int virI_I(int a) {
         return a + 123;
@@ -64,7 +64,11 @@
         return a + b + c + d + e + f + 2020;
     }
 
-    static int test0(int a) {
+    public int interfaceMethod(int i) {
+        return i + 23;
+    }
+
+    static int invoke(int a) {
         Invoke foo = new Invoke();
 
         return foo.virI_I(a) +
@@ -78,15 +82,23 @@
                statI_III(a, 1, 2) +
                statI_IIII(a, 1, 2, 3) +
                statI_IIIII(a, 1, 2, 3, 4) +
-               statI_IIIIII(a, 1, 2, 3, 4, 5);
+               statI_IIIIII(a, 1, 2, 3, 4, 5) +
+               foo.interfaceMethod(a);
     }
 
     public static void main(String[] args) {
-        int res = test0(912);
-        if (res == 20664) {
-            System.out.println("test0 PASSED");
+        boolean failure = false;
+        int res = invoke(912);
+        if (res == 21599) {
+            System.out.println("invoke PASSED");
         } else {
-            System.out.println("test0 FAILED: " + res);
+            System.out.println("invoke FAILED: " + res);
+            failure = true;
         }
+        System.exit(failure ? 1 : 0);
     }
 }
+
+interface InvokeInterface {
+    int interfaceMethod(int i);
+}