diff options
| author | 2012-03-19 22:34:31 -0700 | |
|---|---|---|
| committer | 2012-03-19 22:59:13 -0700 | |
| commit | f582258f0e296223a091fd64231a203ad71e9649 (patch) | |
| tree | 23049122f075220421803a1745cf634337360a40 /src/compiler/codegen/MethodCodegenDriver.cc | |
| parent | a7c12688da57ea052e127776ad3043ca5079488d (diff) | |
oat file patching
Change-Id: Idbbdf19f3a77498d79d043fd33ca12ce39cafbb7
Diffstat (limited to 'src/compiler/codegen/MethodCodegenDriver.cc')
| -rw-r--r-- | src/compiler/codegen/MethodCodegenDriver.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/compiler/codegen/MethodCodegenDriver.cc b/src/compiler/codegen/MethodCodegenDriver.cc index 59aa4caec4..8f4df4714f 100644 --- a/src/compiler/codegen/MethodCodegenDriver.cc +++ b/src/compiler/codegen/MethodCodegenDriver.cc @@ -55,6 +55,7 @@ RegLocation oatGetReturn(CompilationUnit* cUnit, bool isFloat) void genInvoke(CompilationUnit* cUnit, MIR* mir, InvokeType type, bool isRange) { DecodedInstruction* dInsn = &mir->dalvikInsn; + InvokeType originalType = type; // avoiding mutation by ComputeInvokeInfo int callState = 0; LIR* nullCk; LIR** pNullCk = NULL; @@ -103,16 +104,19 @@ void genInvoke(CompilationUnit* cUnit, MIR* mir, InvokeType type, bool isRange) if (!isRange) { callState = genDalvikArgsNoRange(cUnit, mir, dInsn, callState, pNullCk, nextCallInsn, dexMethodIdx, - vtableIdx, directCode, directMethod, skipThis); + vtableIdx, directCode, directMethod, + originalType, skipThis); } else { callState = genDalvikArgsRange(cUnit, mir, dInsn, callState, pNullCk, nextCallInsn, dexMethodIdx, vtableIdx, - directCode, directMethod, skipThis); + directCode, directMethod, originalType, + skipThis); } // Finish up any of the call sequence not interleaved in arg loading while (callState >= 0) { callState = nextCallInsn(cUnit, mir, callState, dexMethodIdx, - vtableIdx, directCode, directMethod); + vtableIdx, directCode, directMethod, + originalType); } if (DISPLAY_MISSING_TARGETS) { genShowTarget(cUnit); |