diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/localregs/SetLocalTypeIns.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/localregs/SetLocalTypeIns.java index 1717c958a..9b0f296d1 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/localregs/SetLocalTypeIns.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/localregs/SetLocalTypeIns.java @@ -22,7 +22,6 @@ import com.jpexs.decompiler.flash.abc.avm2.AVM2ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.abc.avm2.instructions.InstructionDefinition; import com.jpexs.decompiler.flash.abc.avm2.instructions.SetTypeIns; -import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.DecrementAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.FindPropertyAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.IncrementAVM2Item; @@ -33,14 +32,11 @@ import com.jpexs.decompiler.flash.abc.avm2.model.PostIncrementAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.SetLocalAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.operations.PreDecrementAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.operations.PreIncrementAVM2Item; -import com.jpexs.decompiler.flash.abc.types.MethodBody; -import com.jpexs.decompiler.graph.DottedChain; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.TranslateStack; +import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; import com.jpexs.decompiler.graph.model.PopItem; -import java.util.HashMap; import java.util.List; -import java.util.Stack; /** * @@ -128,10 +124,17 @@ public abstract class SetLocalTypeIns extends InstructionDefinition implements S } } - /*if (localData.getSetLocalUsages(localData.code.adr2pos(ins.getAddress())).isEmpty() && (value instanceof DuplicateItem)) { - return; + SetLocalAVM2Item result = new SetLocalAVM2Item(ins, localData.lineStartInstruction, regId, value); + /*if (value.getNotCoercedNoDup() instanceof CompoundableBinaryOp) { + CompoundableBinaryOp binaryOp = (CompoundableBinaryOp) value.getNotCoercedNoDup(); + if (binaryOp.getLeftSide() instanceof LocalRegAVM2Item) { + LocalRegAVM2Item loc = (LocalRegAVM2Item) binaryOp.getLeftSide(); + if (loc.regIndex == regId) { + result.setCompoundValue(binaryOp.getRightSide()); + result.setCompoundOperator(binaryOp.getOperator()); + } + } }*/ - GraphTargetItem result = new SetLocalAVM2Item(ins, localData.lineStartInstruction, regId, value); SetTypeIns.handleResult(value, stack, output, localData, result, regId); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetPropertyIns.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetPropertyIns.java index ebd677e24..8b22152f6 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetPropertyIns.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetPropertyIns.java @@ -336,10 +336,10 @@ public class SetPropertyIns extends InstructionDefinition implements SetTypeIns } } - SetPropertyAVM2Item result = new SetPropertyAVM2Item(ins, localData.lineStartInstruction, obj, multiname, value); - /*if (value instanceof LocalRegAVM2Item) { + /* + if (value instanceof LocalRegAVM2Item) { LocalRegAVM2Item locVal = (LocalRegAVM2Item) value; if (multiname.name instanceof LocalRegAVM2Item) { LocalRegAVM2Item locName = (LocalRegAVM2Item) multiname.name; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallAVM2Item.java index aa5f1b0f1..d769fddce 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallAVM2Item.java @@ -267,4 +267,9 @@ public class CallAVM2Item extends AVM2Item { return true; } + @Override + public boolean hasSideEffect() { + return true; + } + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java index cd6f19d00..e896b235f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java @@ -109,4 +109,8 @@ public class CallMethodAVM2Item extends AVM2Item { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallPropertyAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallPropertyAVM2Item.java index edd494c92..0e604245f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallPropertyAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallPropertyAVM2Item.java @@ -128,4 +128,8 @@ public class CallPropertyAVM2Item extends AVM2Item { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallStaticAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallStaticAVM2Item.java index 9479f7001..47d0a9e0c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallStaticAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallStaticAVM2Item.java @@ -109,4 +109,8 @@ public class CallStaticAVM2Item extends AVM2Item { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallSuperAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallSuperAVM2Item.java index 1383db090..c9f98ce1d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallSuperAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallSuperAVM2Item.java @@ -120,4 +120,8 @@ public class CallSuperAVM2Item extends AVM2Item { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructAVM2Item.java index 1012a9b6d..4e36ef678 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructAVM2Item.java @@ -116,4 +116,8 @@ public class ConstructAVM2Item extends AVM2Item { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructPropAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructPropAVM2Item.java index e7bee26b8..18ee448cf 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructPropAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructPropAVM2Item.java @@ -113,4 +113,8 @@ public class ConstructPropAVM2Item extends AVM2Item { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructSuperAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructSuperAVM2Item.java index 365a71680..d429fc2d0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructSuperAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructSuperAVM2Item.java @@ -115,4 +115,8 @@ public class ConstructSuperAVM2Item extends AVM2Item { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/DecLocalAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/DecLocalAVM2Item.java index d1c7d4c8a..91021a861 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/DecLocalAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/DecLocalAVM2Item.java @@ -76,4 +76,8 @@ public class DecLocalAVM2Item extends AVM2Item { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/IncLocalAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/IncLocalAVM2Item.java index bcff9c703..1d51e051f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/IncLocalAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/IncLocalAVM2Item.java @@ -76,4 +76,8 @@ public class IncLocalAVM2Item extends AVM2Item { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/InitPropertyAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/InitPropertyAVM2Item.java index dfbaa87e4..7bce03d30 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/InitPropertyAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/InitPropertyAVM2Item.java @@ -38,6 +38,10 @@ public class InitPropertyAVM2Item extends AVM2Item implements SetTypeAVM2Item, A public DeclarationAVM2Item declaration; + public GraphTargetItem compoundValue; + + public String compoundOperator; + @Override public void visit(GraphTargetVisitorInterface visitor) { visitor.visit(object); @@ -64,6 +68,13 @@ public class InitPropertyAVM2Item extends AVM2Item implements SetTypeAVM2Item, A @Override public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { formatProperty(writer, object, propertyName, localData); + + if (compoundOperator != null) { + writer.append(" "); + writer.append(compoundOperator); + writer.append("= "); + return compoundValue.toString(writer, localData); + } writer.append(" = "); return value.toString(writer, localData); } @@ -117,4 +128,23 @@ public class InitPropertyAVM2Item extends AVM2Item implements SetTypeAVM2Item, A return true; } + @Override + public GraphTargetItem getCompoundValue() { + return compoundValue; + } + + @Override + public void setCompoundValue(GraphTargetItem value) { + this.compoundValue = value; + } + + @Override + public void setCompoundOperator(String operator) { + compoundOperator = operator; + } + + @Override + public String getCompoundOperator() { + return compoundOperator; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NameValuePair.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NameValuePair.java index b54e9ba46..e03cdebfd 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NameValuePair.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NameValuePair.java @@ -97,4 +97,8 @@ public class NameValuePair extends AVM2Item { return true; } + @Override + public boolean hasSideEffect() { + return name.hasSideEffect() || value.hasSideEffect(); + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NewArrayAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NewArrayAVM2Item.java index 67d0da2b1..fcefe18c9 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NewArrayAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NewArrayAVM2Item.java @@ -136,4 +136,14 @@ public class NewArrayAVM2Item extends AVM2Item { return true; } + @Override + public boolean hasSideEffect() { + for (GraphTargetItem v : values) { + if (v.hasSideEffect()) { + return true; + } + } + return false; + } + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NewObjectAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NewObjectAVM2Item.java index 11cde00a6..fd1a66bc4 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NewObjectAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NewObjectAVM2Item.java @@ -155,4 +155,14 @@ public class NewObjectAVM2Item extends AVM2Item { return true; } + @Override + public boolean hasSideEffect() { + for (NameValuePair p : pairs) { + if (p.hasSideEffect()) { + return true; + } + } + return false; + } + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnValueAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnValueAVM2Item.java index 2ec0d01c8..bd31f1cca 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnValueAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnValueAVM2Item.java @@ -83,4 +83,9 @@ public class ReturnValueAVM2Item extends AVM2Item implements ExitItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnVoidAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnVoidAVM2Item.java index 1906bac42..cd05ecc3c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnVoidAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnVoidAVM2Item.java @@ -78,4 +78,9 @@ public class ReturnVoidAVM2Item extends AVM2Item implements ExitItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetLocalAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetLocalAVM2Item.java index 9a102c53a..5d62a52b1 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetLocalAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetLocalAVM2Item.java @@ -41,6 +41,10 @@ public class SetLocalAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assig public DeclarationAVM2Item declaration; + public GraphTargetItem compoundValue; + + public String compoundOperator; + @Override public DeclarationAVM2Item getDeclaration() { return declaration; @@ -60,7 +64,14 @@ public class SetLocalAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assig public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { String localName = localRegName(localData.localRegNames, regIndex); getSrcData().localName = localName; - writer.append(localName).append(" = "); + writer.append(localName); + if (compoundOperator != null) { + writer.append(" "); + writer.append(compoundOperator); + writer.append("= "); + return compoundValue.toString(writer, localData); + } + writer.append(" = "); if (declaration != null && !declaration.type.equals(TypeItem.UNBOUNDED) && (value instanceof ConvertAVM2Item)) { return value.value.toString(writer, localData); } @@ -167,4 +178,23 @@ public class SetLocalAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assig return true; } + @Override + public GraphTargetItem getCompoundValue() { + return compoundValue; + } + + @Override + public void setCompoundValue(GraphTargetItem value) { + this.compoundValue = value; + } + + @Override + public void setCompoundOperator(String operator) { + compoundOperator = operator; + } + + @Override + public String getCompoundOperator() { + return compoundOperator; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetPropertyAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetPropertyAVM2Item.java index 08fb04ce1..8bd1733de 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetPropertyAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetPropertyAVM2Item.java @@ -127,4 +127,24 @@ public class SetPropertyAVM2Item extends AVM2Item implements SetTypeAVM2Item, As public boolean hasReturnValue() { return false; } + + @Override + public GraphTargetItem getCompoundValue() { + return compoundValue; + } + + @Override + public void setCompoundValue(GraphTargetItem value) { + this.compoundValue = value; + } + + @Override + public void setCompoundOperator(String operator) { + compoundOperator = operator; + } + + @Override + public String getCompoundOperator() { + return compoundOperator; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSlotAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSlotAVM2Item.java index f993e819a..dc255a2ba 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSlotAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSlotAVM2Item.java @@ -44,6 +44,10 @@ public class SetSlotAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assign public int slotIndex; + public GraphTargetItem compoundValue; + + public String compoundOperator; + @Override public void visit(GraphTargetVisitorInterface visitor) { visitor.visit(scope); @@ -81,6 +85,13 @@ public class SetSlotAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assign return writer; } getName(writer, localData); + + if (compoundOperator != null) { + writer.append(" "); + writer.append(compoundOperator); + writer.append("= "); + return compoundValue.toString(writer, localData); + } writer.append(" = "); if (declaration != null && !declaration.type.equals(TypeItem.UNBOUNDED) && (value instanceof ConvertAVM2Item)) { return value.value.toString(writer, localData); @@ -157,4 +168,23 @@ public class SetSlotAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assign return true; } + @Override + public GraphTargetItem getCompoundValue() { + return compoundValue; + } + + @Override + public void setCompoundValue(GraphTargetItem value) { + this.compoundValue = value; + } + + @Override + public void setCompoundOperator(String operator) { + compoundOperator = operator; + } + + @Override + public String getCompoundOperator() { + return compoundOperator; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSuperAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSuperAVM2Item.java index 82695fc60..b28abab18 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSuperAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSuperAVM2Item.java @@ -38,6 +38,10 @@ public class SetSuperAVM2Item extends AVM2Item implements SetTypeAVM2Item { public DeclarationAVM2Item declaration; + public GraphTargetItem compoundValue; + + public String compoundOperator; + @Override public DeclarationAVM2Item getDeclaration() { return declaration; @@ -78,6 +82,12 @@ public class SetSuperAVM2Item extends AVM2Item implements SetTypeAVM2Item { } writer.append("super."); propertyName.toString(writer, localData); + if (compoundOperator != null) { + writer.append(" "); + writer.append(compoundOperator); + writer.append("= "); + return compoundValue.toString(writer, localData); + } writer.append(" = "); return value.toString(writer, localData); } @@ -139,4 +149,23 @@ public class SetSuperAVM2Item extends AVM2Item implements SetTypeAVM2Item { return true; } + @Override + public GraphTargetItem getCompoundValue() { + return compoundValue; + } + + @Override + public void setCompoundValue(GraphTargetItem value) { + this.compoundValue = value; + } + + @Override + public void setCompoundOperator(String operator) { + compoundOperator = operator; + } + + @Override + public String getCompoundOperator() { + return compoundOperator; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetTypeAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetTypeAVM2Item.java index 11f289452..7f85f8fc4 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetTypeAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetTypeAVM2Item.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.model.clauses.DeclarationAVM2Item; @@ -31,4 +32,12 @@ public interface SetTypeAVM2Item { public DeclarationAVM2Item getDeclaration(); public void setDeclaration(DeclarationAVM2Item dec); + + public GraphTargetItem getCompoundValue(); + + public void setCompoundValue(GraphTargetItem value); + + public void setCompoundOperator(String operator); + + public String getCompoundOperator(); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ThrowAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ThrowAVM2Item.java index 76e5b565b..5b44ad1b6 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ThrowAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ThrowAVM2Item.java @@ -83,4 +83,9 @@ public class ThrowAVM2Item extends AVM2Item implements ExitItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallActionItem.java index 63fe098be..a435574d1 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallActionItem.java @@ -87,4 +87,10 @@ public class CallActionItem extends ActionItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java index 006d921c9..60c7cbaeb 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java @@ -149,4 +149,10 @@ public class CallFunctionActionItem extends ActionItem { public boolean hasReturnValue() { return true; } + + @Override + public boolean hasSideEffect() { + return true; + } + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java index b590a952d..ce4c379a3 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java @@ -170,4 +170,8 @@ public class CallMethodActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CloneSpriteActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CloneSpriteActionItem.java index b64337782..5cee87fc4 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CloneSpriteActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CloneSpriteActionItem.java @@ -85,4 +85,9 @@ public class CloneSpriteActionItem extends ActionItem { public boolean hasReturnValue() { return false; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DefineLocalActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DefineLocalActionItem.java index b34780728..a7ccec9fa 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DefineLocalActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DefineLocalActionItem.java @@ -151,4 +151,9 @@ public class DefineLocalActionItem extends ActionItem implements SetTypeActionIt return true; } + @Override + public boolean hasSideEffect() { + return true; + } + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DeleteActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DeleteActionItem.java index 4e0ff8210..b76bb3826 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DeleteActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DeleteActionItem.java @@ -127,4 +127,10 @@ public class DeleteActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } + + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/EnumerateActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/EnumerateActionItem.java index b90368d52..be9e84eec 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/EnumerateActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/EnumerateActionItem.java @@ -100,4 +100,8 @@ public class EnumerateActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommand2ActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommand2ActionItem.java index 82038588d..cc4e118c2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommand2ActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommand2ActionItem.java @@ -122,4 +122,8 @@ public class FSCommand2ActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java index a43a49dbc..0dd55f846 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java @@ -91,4 +91,8 @@ public class FSCommandActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java index f19c2adbb..95a4c9de8 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java @@ -411,5 +411,9 @@ public class FunctionActionItem extends ActionItem { return false; //function actually returns itself, but here is false for generator to not add Pop } + @Override + public boolean hasSideEffect() { + return true; //?? + } //What about hashcode and equals? Probably not. } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetURL2ActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetURL2ActionItem.java index 983bd0230..e95e24ff4 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetURL2ActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetURL2ActionItem.java @@ -124,4 +124,8 @@ public class GetURL2ActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetURLActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetURLActionItem.java index 5ffa9f8f4..f099805d2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetURLActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetURLActionItem.java @@ -93,4 +93,8 @@ public class GetURLActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GotoFrame2ActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GotoFrame2ActionItem.java index d4a3f8565..4d535a3c9 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GotoFrame2ActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GotoFrame2ActionItem.java @@ -130,4 +130,8 @@ public class GotoFrame2ActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GotoFrameActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GotoFrameActionItem.java index 4e923905c..9f8658a2c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GotoFrameActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GotoFrameActionItem.java @@ -82,4 +82,8 @@ public class GotoFrameActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GotoLabelActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GotoLabelActionItem.java index 29459bd85..4a477b338 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GotoLabelActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GotoLabelActionItem.java @@ -84,4 +84,8 @@ public class GotoLabelActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/InitArrayActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/InitArrayActionItem.java index ab435b3e3..7670b9444 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/InitArrayActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/InitArrayActionItem.java @@ -103,4 +103,15 @@ public class InitArrayActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + for (GraphTargetItem v : values) { + if (v.hasSideEffect()) { + return true; + } + } + return false; + } + + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/InitObjectActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/InitObjectActionItem.java index 36dea6e7c..0d42a6e8f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/InitObjectActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/InitObjectActionItem.java @@ -132,4 +132,19 @@ public class InitObjectActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + for (GraphTargetItem n : names) { + if (n.hasSideEffect()) { + return true; + } + } + for (GraphTargetItem v : values) { + if (v.hasSideEffect()) { + return true; + } + } + return false; + } + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieActionItem.java index 30bc8ad7d..415a71eaa 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieActionItem.java @@ -114,4 +114,8 @@ public class LoadMovieActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java index 5dd1a578a..708367de9 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java @@ -123,4 +123,8 @@ public class LoadMovieNumActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesActionItem.java index 36f8d3d08..a474f600a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesActionItem.java @@ -114,4 +114,8 @@ public class LoadVariablesActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java index 56b3ec19a..704cb327e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java @@ -123,4 +123,8 @@ public class LoadVariablesNumActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/NewMethodActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/NewMethodActionItem.java index bb9761910..cee03fc60 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/NewMethodActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/NewMethodActionItem.java @@ -149,4 +149,9 @@ public class NewMethodActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/NewObjectActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/NewObjectActionItem.java index 5f0776098..fcb9df4a3 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/NewObjectActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/NewObjectActionItem.java @@ -115,4 +115,9 @@ public class NewObjectActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/NextFrameActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/NextFrameActionItem.java index a7b70c61d..3e065e76f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/NextFrameActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/NextFrameActionItem.java @@ -71,4 +71,9 @@ public class NextFrameActionItem extends ActionItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PlayActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PlayActionItem.java index 59756eabe..78170b639 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PlayActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PlayActionItem.java @@ -71,4 +71,9 @@ public class PlayActionItem extends ActionItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrevFrameActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrevFrameActionItem.java index f17e17d6f..58cc3f9ea 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrevFrameActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrevFrameActionItem.java @@ -71,4 +71,9 @@ public class PrevFrameActionItem extends ActionItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintActionItem.java index c117c170d..c0ed8c38e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintActionItem.java @@ -103,4 +103,8 @@ public class PrintActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapActionItem.java index 584d86f4c..8ee7a4f58 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapActionItem.java @@ -103,4 +103,8 @@ public class PrintAsBitmapActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java index 90b68437e..095f8f859 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java @@ -109,4 +109,8 @@ public class PrintAsBitmapNumActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java index 78381e928..17006d219 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java @@ -109,4 +109,8 @@ public class PrintNumActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/RemoveSpriteActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/RemoveSpriteActionItem.java index f604f8899..6c2d54718 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/RemoveSpriteActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/RemoveSpriteActionItem.java @@ -87,4 +87,9 @@ public class RemoveSpriteActionItem extends ActionItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ReturnActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ReturnActionItem.java index 473077804..d321df31c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ReturnActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ReturnActionItem.java @@ -120,4 +120,9 @@ public class ReturnActionItem extends ActionItem implements ExitItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetTarget2ActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetTarget2ActionItem.java index f3c632c09..5ee368784 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetTarget2ActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetTarget2ActionItem.java @@ -91,4 +91,8 @@ public class SetTarget2ActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetTargetActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetTargetActionItem.java index ce6a1562c..0f6204188 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetTargetActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetTargetActionItem.java @@ -81,4 +81,8 @@ public class SetTargetActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StartDragActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StartDragActionItem.java index 772a7242d..bb24739fa 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StartDragActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StartDragActionItem.java @@ -167,4 +167,8 @@ public class StartDragActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StopActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StopActionItem.java index 5b5c6af2f..1f0a3e25a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StopActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StopActionItem.java @@ -71,4 +71,9 @@ public class StopActionItem extends ActionItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StopAllSoundsActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StopAllSoundsActionItem.java index 9106ef3d7..72d1b75dc 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StopAllSoundsActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StopAllSoundsActionItem.java @@ -71,4 +71,9 @@ public class StopAllSoundsActionItem extends ActionItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StopDragActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StopDragActionItem.java index e7802e41f..d66c58f53 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StopDragActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StopDragActionItem.java @@ -71,4 +71,9 @@ public class StopDragActionItem extends ActionItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StoreRegisterActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StoreRegisterActionItem.java index c8455d2b3..bd6d5dd62 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StoreRegisterActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StoreRegisterActionItem.java @@ -162,4 +162,8 @@ public class StoreRegisterActionItem extends ActionItem implements SetTypeAction return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StrictModeActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StrictModeActionItem.java index 1d7728798..33b589423 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StrictModeActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StrictModeActionItem.java @@ -65,4 +65,9 @@ public class StrictModeActionItem extends ActionItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/TargetPathActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/TargetPathActionItem.java index fa484697a..d51aa8365 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/TargetPathActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/TargetPathActionItem.java @@ -87,4 +87,9 @@ public class TargetPathActionItem extends ActionItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ThrowActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ThrowActionItem.java index eceebb696..e710bc04d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ThrowActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ThrowActionItem.java @@ -84,4 +84,9 @@ public class ThrowActionItem extends ActionItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ToggleHighQualityActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ToggleHighQualityActionItem.java index 369352389..f503d897c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ToggleHighQualityActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ToggleHighQualityActionItem.java @@ -71,4 +71,9 @@ public class ToggleHighQualityActionItem extends ActionItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/TraceActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/TraceActionItem.java index 35c116e73..3ac497a65 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/TraceActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/TraceActionItem.java @@ -87,4 +87,9 @@ public class TraceActionItem extends ActionItem { int hash = 3; return hash; } + + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieActionItem.java index 318adae71..244a6a696 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieActionItem.java @@ -91,4 +91,8 @@ public class UnLoadMovieActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java index b2da3ec3c..c21c12df0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java @@ -100,4 +100,8 @@ public class UnLoadMovieNumActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnsupportedActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnsupportedActionItem.java index 002487aae..6261b22ca 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnsupportedActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnsupportedActionItem.java @@ -70,4 +70,8 @@ public class UnsupportedActionItem extends ActionItem { return true; } + @Override + public boolean hasSideEffect() { + return true; //?? + } }