|
|
@ -249,6 +249,13 @@ public class MethodAnalyzer implements Analyzer, Scope, ClassDeclarer { |
|
|
|
|
|
|
|
|
|
|
|
for (int i=0; i < handlers.length; i++) { |
|
|
|
for (int i=0; i < handlers.length; i++) { |
|
|
|
Instruction instr = handlers[i].start; |
|
|
|
Instruction instr = handlers[i].start; |
|
|
|
|
|
|
|
if (instr.tmpInfo == null) |
|
|
|
|
|
|
|
instr.tmpInfo |
|
|
|
|
|
|
|
= new FlowBlock(this, instr.addr, instr.length); |
|
|
|
|
|
|
|
/* end doesn't have a predecessor, but we must prevent |
|
|
|
|
|
|
|
* it from being merged with the previous instructions. |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
instr = handlers[i].end.nextByAddr; |
|
|
|
if (instr.tmpInfo == null) |
|
|
|
if (instr.tmpInfo == null) |
|
|
|
instr.tmpInfo |
|
|
|
instr.tmpInfo |
|
|
|
= new FlowBlock(this, instr.addr, instr.length); |
|
|
|
= new FlowBlock(this, instr.addr, instr.length); |
|
|
@ -285,7 +292,6 @@ public class MethodAnalyzer implements Analyzer, Scope, ClassDeclarer { |
|
|
|
&& !instr.alwaysJumps && instr.succs == null) { |
|
|
|
&& !instr.alwaysJumps && instr.succs == null) { |
|
|
|
|
|
|
|
|
|
|
|
lastBlock.doSequentialT2(block, instr.length); |
|
|
|
lastBlock.doSequentialT2(block, instr.length); |
|
|
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
} else { |
|
|
|
|
|
|
|
|
|
|
|
if (instr.tmpInfo == null) |
|
|
|
if (instr.tmpInfo == null) |
|
|
|