From 4527387dd3b5c4dce7300c764805ffd0f3d22649 Mon Sep 17 00:00:00 2001 From: Bill Buzbee Date: Thu, 11 Mar 2010 11:12:15 -0800 Subject: [PATCH] Jit: Make debugging mode aware of inlineExecute/moveResult optimization The Jit has a mode in which selected opcodes can be handled normally or single-stepped in the interpter. This was broken for cases in which the Jit applied an optimization to fold inlineExecute/moveResult intruction pairs into a single operation and the debug mode was set to handle the two opcodes differently. Change-Id: Ifa436d4ba66ba0c13ea366c0956e6cf92ce9cdfd --- vm/compiler/codegen/arm/CodegenDriver.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/vm/compiler/codegen/arm/CodegenDriver.c b/vm/compiler/codegen/arm/CodegenDriver.c index 21a52d839..58c3e794a 100644 --- a/vm/compiler/codegen/arm/CodegenDriver.c +++ b/vm/compiler/codegen/arm/CodegenDriver.c @@ -1226,6 +1226,10 @@ static void genInterpSingleStep(CompilationUnit *cUnit, MIR *mir) int flagsToCheck = kInstrCanBranch | kInstrCanSwitch | kInstrCanReturn | kInstrCanThrow; + //If already optimized out, just ignore + if (mir->dalvikInsn.opCode == OP_NOP) + return; + //Ugly, but necessary. Flush all Dalvik regs so Interp can find them dvmCompilerFlushAllRegs(cUnit); -- 2.11.0