aboutsummaryrefslogtreecommitdiff
path: root/vm/compiler/codegen/arm/CodegenDriver.c
diff options
context:
space:
mode:
authorBill Buzbee <buzbee@google.com>2010-03-11 11:12:15 -0800
committerBill Buzbee <buzbee@google.com>2010-03-11 11:12:15 -0800
commit4527387dd3b5c4dce7300c764805ffd0f3d22649 (patch)
treec0d9d797c0a1fa3bbd121faea440605f566f7260 /vm/compiler/codegen/arm/CodegenDriver.c
parentdad7a0ef6e5f056f0842f03ff3b8285ef29e6f01 (diff)
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
Diffstat (limited to 'vm/compiler/codegen/arm/CodegenDriver.c')
-rw-r--r--vm/compiler/codegen/arm/CodegenDriver.c4
1 files changed, 4 insertions, 0 deletions
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);