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);
}
/*