From ab2b55dfcf630fdf8d03b5f506386f114fa2874c Mon Sep 17 00:00:00 2001 From: Ian Rogers Date: Sun, 18 Mar 2012 00:06:11 -0700 Subject: Refactor callRuntimeHelper Change-Id: I87c5f592a931c98c4b5b693b72216f4e71990162 --- src/compiler/codegen/GenInvoke.cc | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) (limited to 'src/compiler/codegen/GenInvoke.cc') 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 { -- cgit v1.2.3-59-g8ed1b