diff --git a/jode/jode/expr/Makefile.am b/jode/jode/expr/Makefile.am index b9c03e4..c879a29 100644 --- a/jode/jode/expr/Makefile.am +++ b/jode/jode/expr/Makefile.am @@ -22,7 +22,6 @@ MY_JAVA_FILES = \ CompareUnaryOperator.java \ ConstOperator.java \ ConstantArrayOperator.java \ - ConstructorOperator.java \ ConvertOperator.java \ Expression.java \ GetFieldOperator.java \ diff --git a/jode/jode/flow/SpecialBlock.java b/jode/jode/flow/SpecialBlock.java index 6b24184..67e2c3e 100644 --- a/jode/jode/flow/SpecialBlock.java +++ b/jode/jode/flow/SpecialBlock.java @@ -175,8 +175,7 @@ public class SpecialBlock extends StructuredBlock { if (instr.getType().stackSize() == count) { StructuredBlock newBlock; - if (instr instanceof InvokeOperator - || instr instanceof ConstructorOperator) { + if (instr instanceof InvokeOperator) { Expression newExpr = new PopOperator(instr.getType()).addOperand(instr); prev.setInstruction(newExpr); @@ -206,4 +205,3 @@ public class SpecialBlock extends StructuredBlock { return false; } } - diff --git a/jode/jode/flow/TryBlock.java b/jode/jode/flow/TryBlock.java index 912848c..d8e10f3 100644 --- a/jode/jode/flow/TryBlock.java +++ b/jode/jode/flow/TryBlock.java @@ -22,7 +22,6 @@ import jode.decompiler.TabbedPrintWriter; import jode.type.*; import jode.expr.Expression; import jode.expr.InvokeOperator; -import jode.expr.ConstructorOperator; import jode.expr.LocalLoadOperator; /** @@ -187,17 +186,17 @@ public class TryBlock extends StructuredBlock { ((ThrowBlock) catchBlock.catchBlock).getInstruction(); if (throwExpr.getFreeOperandCount() != 0 - || !(throwExpr instanceof ConstructorOperator)) + || !(throwExpr instanceof InvokeOperator)) return false; - ConstructorOperator throwOp = (ConstructorOperator) throwExpr; - - if (!(throwOp.getClassType() - .equals(Type.tClass("java.lang.InternalError"))) + InvokeOperator throwOp = (InvokeOperator) throwExpr; + if (!throwOp.isConstructor() + || !(throwOp.getClassType() + .equals(Type.tClass("java.lang.InternalError"))) || throwOp.getMethodType().getParameterTypes().length != 1) return false; - Expression getMethodExpr = throwOp.getSubExpressions()[0]; + Expression getMethodExpr = throwOp.getSubExpressions()[1]; if (!(getMethodExpr instanceof InvokeOperator)) return false;