diff options
| author | 2012-03-18 10:42:53 -0700 | |
|---|---|---|
| committer | 2012-03-18 10:42:53 -0700 | |
| commit | 10fa929276fc069f882783174fda7af8194d41cf (patch) | |
| tree | aefc435bae160b9b0eba036302f2785b356bdda6 /src/compiler/codegen/GenInvoke.cc | |
| parent | 3bbbe82cfec2d3b03b0b560a3978a8231a9a51d3 (diff) | |
| parent | ab2b55dfcf630fdf8d03b5f506386f114fa2874c (diff) | |
Merge "Refactor callRuntimeHelper" into ics-mr1-plus-art
Diffstat (limited to 'src/compiler/codegen/GenInvoke.cc')
| -rw-r--r-- | src/compiler/codegen/GenInvoke.cc | 20 |
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 { |