From f582258f0e296223a091fd64231a203ad71e9649 Mon Sep 17 00:00:00 2001 From: Brian Carlstrom Date: Mon, 19 Mar 2012 22:34:31 -0700 Subject: oat file patching Change-Id: Idbbdf19f3a77498d79d043fd33ca12ce39cafbb7 --- src/compiler/codegen/MethodCodegenDriver.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/compiler/codegen/MethodCodegenDriver.cc') 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); -- cgit v1.2.3-59-g8ed1b