|
|
@ -478,13 +478,20 @@ public class MethodAnalyzer implements Scope, ClassDeclarer { |
|
|
|
Opcodes.addOpcode(flows[i], instr, this); |
|
|
|
Opcodes.addOpcode(flows[i], instr, this); |
|
|
|
} |
|
|
|
} |
|
|
|
Block[] succs = blocks[i].getSuccs(); |
|
|
|
Block[] succs = blocks[i].getSuccs(); |
|
|
|
FlowBlock[] flowSuccs = new FlowBlock[succs.length]; |
|
|
|
FlowBlock[] flowSuccs; |
|
|
|
|
|
|
|
int lastOpcode = blocks[i].getInstructions()[last].getOpcode(); |
|
|
|
|
|
|
|
if (lastOpcode >= Opcodes.opc_ireturn |
|
|
|
|
|
|
|
&& lastOpcode <= Opcodes.opc_areturn) { |
|
|
|
|
|
|
|
flowSuccs = new FlowBlock[] { FlowBlock.END_OF_METHOD }; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
flowSuccs = new FlowBlock[succs.length]; |
|
|
|
for (int j=0; j< succs.length; j++) { |
|
|
|
for (int j=0; j< succs.length; j++) { |
|
|
|
if (succs[j] == null) |
|
|
|
if (succs[j] == null) |
|
|
|
flowSuccs[j] = FlowBlock.END_OF_METHOD; |
|
|
|
flowSuccs[j] = FlowBlock.END_OF_METHOD; |
|
|
|
else |
|
|
|
else |
|
|
|
flowSuccs[j] = flows[succs[j].getBlockNr()]; |
|
|
|
flowSuccs[j] = flows[succs[j].getBlockNr()]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
flows[i].setSuccessors(flowSuccs); |
|
|
|
flows[i].setSuccessors(flowSuccs); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|