You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
931 B
30 lines
931 B
27 years ago
|
package jode;
|
||
|
import java.util.Enumeration;
|
||
|
|
||
|
public class CreateDoWhileStatements extends FlowTransformation
|
||
|
implements Transformation {
|
||
|
|
||
|
public InstructionHeader transform(InstructionHeader head) {
|
||
|
|
||
|
if (head.predecessors.size() == 0 ||
|
||
|
head.flowType == head.DOWHILESTATEMENT)
|
||
|
return null;
|
||
|
|
||
|
InstructionHeader end = head;
|
||
|
Enumeration enum = head.predecessors.elements();
|
||
|
while (enum.hasMoreElements()) {
|
||
|
InstructionHeader pre = (InstructionHeader) enum.nextElement();
|
||
|
if (pre.outer == head.outer && pre.addr > end.addr)
|
||
|
end = pre;
|
||
|
}
|
||
|
|
||
|
if (end != head)
|
||
|
if (end.flowType == end.IFGOTO || end.flowType == end.GOTO) {
|
||
|
if(Decompiler.isVerbose)
|
||
|
System.err.print("d");
|
||
|
return new DoWhileInstructionHeader(head, end);
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
}
|