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/IntMath/IntMath.java b/test/IntMath/IntMath.java
index 2c4510a..f437f99 100644
--- a/test/IntMath/IntMath.java
+++ b/test/IntMath/IntMath.java
@@ -828,6 +828,27 @@
             System.out.println("intOperTest FAILED: " + res);
             failure = true;
         }
+        res = lit16Test(77777);
+        if (res == 0) {
+            System.out.println("lit16Test PASSED");
+        } else {
+            System.out.println("lit16Test FAILED: " + res);
+            failure = true;
+        }
+        res = lit8Test(-55555);
+        if (res == 0) {
+            System.out.println("lit8Test PASSED");
+        } else {
+            System.out.println("lit8Test FAILED: " + res);
+            failure = true;
+        }
+        res = intShiftTest(0xff00aa01, 8);
+        if (res == 0) {
+            System.out.println("intShiftTest PASSED");
+        } else {
+            System.out.println("intShiftTest FAILED: " + res);
+            failure = true;
+        }
         res = longOperTest(70000000000L, -3L);
         if (res == 0) {
             System.out.println("longOperTest PASSED");
@@ -935,12 +956,20 @@
 
         res = catchBlock(1000);
         if (res == 1579) {
-            System.out.println("catchBlock PASSED");
+            System.out.println("catchBlock(1000) PASSED");
         } else {
-            System.out.println("catchBlock FAILED: " + res);
+            System.out.println("catchBlock(1000) FAILED: " + res);
             failure = true;
         }
-
+if (false) { // TODO: restore when fixed
+        res = catchBlock(7000);
+        if (res == 7777) {
+            System.out.println("catchBlock(7000) PASSED");
+        } else {
+            System.out.println("catchBlock(7000) FAILED: " + res);
+            failure = true;
+        }
+}
         res = catchBlockNoThrow(1000);
         if (res == 1123) {
             System.out.println("catchBlockNoThrow PASSED");
@@ -957,11 +986,19 @@
             failure = true;
         }
 
+        res = constClassTest(1111);
+        if (res == 2222) {
+            System.out.println("constClassTest PASSED");
+        } else {
+            System.out.println("constClassTest FAILED: " + res);
+            failure = true;
+        }
+
         res = constStringTest(10);
         if (res == 22) {
-            System.out.println("stringTest PASSED");
+            System.out.println("constStringTest PASSED");
         } else {
-            System.out.println("stringTest FAILED: " + res);
+            System.out.println("constStringTest FAILED: " + res);
             failure = true;
         }