X86 invocation tidy up.

Change-Id: I5bbea741e6434f9172e4041e562a5b15e2f37f95
diff --git a/src/compiler/codegen/MethodCodegenDriver.cc b/src/compiler/codegen/MethodCodegenDriver.cc
index eff4199..be8f1f9 100644
--- a/src/compiler/codegen/MethodCodegenDriver.cc
+++ b/src/compiler/codegen/MethodCodegenDriver.cc
@@ -54,9 +54,6 @@
 
 void genInvoke(CompilationUnit* cUnit, MIR* mir, InvokeType type, bool isRange)
 {
-#if defined(TARGET_X86)
-    UNIMPLEMENTED(WARNING) << "genInvoke";
-#else
     DecodedInstruction* dInsn = &mir->dalvikInsn;
     int callState = 0;
     LIR* nullCk;
@@ -116,9 +113,18 @@
     if (DISPLAY_MISSING_TARGETS) {
         genShowTarget(cUnit);
     }
+#if !defined(TARGET_X86)
     opReg(cUnit, kOpBlx, rINVOKE_TGT);
-    oatClobberCalleeSave(cUnit);
+#else
+    if (fastPath) {
+      opMem(cUnit, kOpBlx, rARG0, Method::GetCodeOffset().Int32Value());
+    } else {
+      UNIMPLEMENTED(FATAL) << "compute trampoline";
+      opThreadMem(cUnit, kOpBlx, 0);
+    }
 #endif
+
+    oatClobberCalleeSave(cUnit);
 }
 
 /*