Complete direct, static & virtual invoke

Reworked direct/static invoke to use code_and_method_ structure.  Removed
slow/fast path distinction for direct/static (because there is only
a single path).  Added fast and reworked slow path for virtual invokes.

Change-Id: I037aee26b63244d03ac2bd8720d8c55e256b9b4d
diff --git a/src/compiler_test.cc b/src/compiler_test.cc
index 305b0d8..b4e43cc 100644
--- a/src/compiler_test.cc
+++ b/src/compiler_test.cc
@@ -170,6 +170,11 @@
                                 "(I)I", 2468, 1234);
 }
 
+TEST_F(CompilerTest, ConstClassTest) {
+  AssertStaticIntMethod(LoadDex("IntMath"), "IntMath", "constClassTest",
+                                "(I)I", 2222, 1111);
+}
+
 TEST_F(CompilerTest, DISABLED_CatchTest) {
   CompileDirectMethod(NULL, "java.lang.Object", "<init>", "()V");
   CompileDirectMethod(NULL, "java.lang.NullPointerException", "<init>", "()V");