New StoreInstruction/LValue expressions

remove try {} catch(ClassCastException)


git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@787 379699f6-c40d-0410-875b-85095c16579e
stable
jochen 26 years ago
parent a49faf53f7
commit b856b2484b
  1. 27
      jode/jode/flow/CompleteSynchronized.java

@ -72,24 +72,25 @@ public class CompleteSynchronized {
/* Is there another expression? */
if (!(last.outer instanceof SequentialBlock))
return false;
SequentialBlock sequBlock = (SequentialBlock) last.outer;
Expression object;
try {
SequentialBlock sequBlock = (SequentialBlock) last.outer;
LocalStoreOperator assign = (LocalStoreOperator)
((InstructionBlock) sequBlock.subBlocks[0]).getInstruction();
if (!(sequBlock.subBlocks[0] instanceof InstructionBlock))
return false;
InstructionBlock ib = (InstructionBlock) sequBlock.subBlocks[0];
if (assign.getLocalInfo() != synBlock.local.getLocalInfo())
return false;
if (!(ib.getInstruction() instanceof StoreInstruction))
return false;
StoreInstruction assign = (StoreInstruction) ib.getInstruction();
object = assign.getSubExpressions()[0];
if (!(assign.getLValue() instanceof LocalStoreOperator))
return false;
LocalStoreOperator lvalue = (LocalStoreOperator) assign.getLValue();
} catch (ClassCastException ex) {
return false;
}
if (lvalue.getLocalInfo() != synBlock.local.getLocalInfo()
|| assign.getSubExpressions()[1] == null)
return false;
synBlock.object = object;
synBlock.object = assign.getSubExpressions()[1];
synBlock.moveDefinitions(last.outer,last);
last.replace(last.outer);
return true;

Loading…
Cancel
Save