diff options
| author | Bill Buzbee <buzbee@google.com> | 2010-03-11 11:12:15 -0800 |
|---|---|---|
| committer | Bill Buzbee <buzbee@google.com> | 2010-03-11 11:12:15 -0800 |
| commit | 4527387dd3b5c4dce7300c764805ffd0f3d22649 (patch) | |
| tree | c0d9d797c0a1fa3bbd121faea440605f566f7260 /vm/compiler/codegen/arm/CodegenDriver.c | |
| parent | dad7a0ef6e5f056f0842f03ff3b8285ef29e6f01 (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.c | 4 |
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); |
