summaryrefslogtreecommitdiff
path: root/src/compiler/codegen/GenInvoke.cc
diff options
context:
space:
mode:
author Ian Rogers <irogers@google.com> 2012-03-18 00:06:11 -0700
committer Ian Rogers <irogers@google.com> 2012-03-18 00:06:11 -0700
commitab2b55dfcf630fdf8d03b5f506386f114fa2874c (patch)
tree288b6e463a5eb13d78bb0a1a511233ddf1259124 /src/compiler/codegen/GenInvoke.cc
parentb2793375d42b5d90d9a0111581c4314abe11ca4c (diff)
Refactor callRuntimeHelper
Change-Id: I87c5f592a931c98c4b5b693b72216f4e71990162
Diffstat (limited to 'src/compiler/codegen/GenInvoke.cc')
-rw-r--r--src/compiler/codegen/GenInvoke.cc20
1 files changed, 5 insertions, 15 deletions
diff --git a/src/compiler/codegen/GenInvoke.cc b/src/compiler/codegen/GenInvoke.cc
index 401eeb6db6..2ded80088f 100644
--- a/src/compiler/codegen/GenInvoke.cc
+++ b/src/compiler/codegen/GenInvoke.cc
@@ -470,21 +470,12 @@ int genDalvikArgsRange(CompilationUnit* cUnit, MIR* mir,
int startOffset = oatSRegOffset(cUnit,
cUnit->regLocation[mir->ssaRep->uses[3]].sRegLow);
int outsOffset = 4 /* Method* */ + (3 * 4);
-#if defined(TARGET_MIPS)
+#if defined(TARGET_MIPS) || defined(TARGET_X86)
// Generate memcpy
opRegRegImm(cUnit, kOpAdd, rARG0, rSP, outsOffset);
opRegRegImm(cUnit, kOpAdd, rARG1, rSP, startOffset);
- int rTgt = loadHelper(cUnit, OFFSETOF_MEMBER(Thread, pMemcpy));
- loadConstant(cUnit, rARG2, (numArgs - 3) * 4);
- callRuntimeHelper(cUnit, rTgt);
- // Restore Method*
- loadCurrMethodDirect(cUnit, rARG0);
-#elif defined(TARGET_X86)
- // Generate memcpy
- opRegRegImm(cUnit, kOpAdd, rARG0, rSP, outsOffset);
- opRegRegImm(cUnit, kOpAdd, rARG1, rSP, startOffset);
- loadConstant(cUnit, rARG2, (numArgs - 3) * 4);
- callRuntimeHelper(cUnit, OFFSETOF_MEMBER(Thread, pMemcpy));
+ callRuntimeHelperRegRegImm(cUnit, OFFSETOF_MEMBER(Thread, pMemcpy),
+ rARG0, rARG1, (numArgs - 3) * 4);
// Restore Method*
loadCurrMethodDirect(cUnit, rARG0);
#else
@@ -492,9 +483,8 @@ int genDalvikArgsRange(CompilationUnit* cUnit, MIR* mir,
// Generate memcpy
opRegRegImm(cUnit, kOpAdd, rARG0, rSP, outsOffset);
opRegRegImm(cUnit, kOpAdd, rARG1, rSP, startOffset);
- int rTgt = loadHelper(cUnit, OFFSETOF_MEMBER(Thread, pMemcpy));
- loadConstant(cUnit, rARG2, (numArgs - 3) * 4);
- callRuntimeHelper(cUnit, rTgt);
+ callRuntimeHelperRegRegImm(cUnit, OFFSETOF_MEMBER(Thread, pMemcpy),
+ rARG0, rARG1, (numArgs - 3) * 4);
// Restore Method*
loadCurrMethodDirect(cUnit, rARG0);
} else {