From a41926a66274153d4df0010e82acf290821819c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Wed, 30 Nov 2022 19:05:36 +0100 Subject: [PATCH] Fixed #1894 Switches vs loops decompilation (now with two passes) --- CHANGELOG.md | 2 + .../jpexs/decompiler/flash/BaseLocalData.java | 7 +- .../decompiler/flash/abc/AVM2LocalData.java | 1 + .../decompiler/flash/abc/avm2/AVM2Code.java | 20 +-- .../flash/abc/avm2/graph/AVM2Graph.java | 10 +- .../flash/abc/avm2/graph/AVM2GraphSource.java | 2 +- .../instructions/InstructionDefinition.java | 4 +- .../jpexs/decompiler/flash/action/Action.java | 5 +- .../flash/action/ActionGraphSource.java | 2 +- .../flash/action/ActionLocalData.java | 7 +- .../flash/action/ActionSecondPassData.java | 2 +- .../src/com/jpexs/decompiler/graph/Graph.java | 129 ++++++++++++++++-- .../com/jpexs/decompiler/graph/GraphPart.java | 12 ++ .../src/com/jpexs/decompiler/graph/Loop.java | 8 +- .../decompiler/graph/SecondPassData.java | 7 +- .../ActionScript3ClassicAirDecompileTest.java | 54 ++++++++ .../ActionScript3ClassicDecompileTest.java | 70 ++++++++-- .../testdata/as3_new/bin/as3_new.air.swf | Bin 22310 -> 22606 bytes .../testdata/as3_new/bin/as3_new.flex.swf | Bin 28925 -> 29259 bytes libsrc/ffdec_lib/testdata/as3_new/src/Main.as | 1 + .../as3_new/src/tests/TestDoWhile4.as | 4 +- .../as3_new/src/tests/TestForEachReturn2.as | 8 +- .../as3_new/src/tests/TestWhileBreak2.as | 58 ++++++++ 23 files changed, 365 insertions(+), 48 deletions(-) create mode 100644 libsrc/ffdec_lib/testdata/as3_new/src/tests/TestWhileBreak2.as diff --git a/CHANGELOG.md b/CHANGELOG.md index 03526bb0c..4cc4e3174 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ All notable changes to this project will be documented in this file. - AS3 - Avoid Error Implicit coercion of a value of type XXX to an unrelated type YYY - AS3 - XML - get descendants operator parenthesis - Switch decompilation in some corner cases +- [#1894] Switches vs loops decompilation (now with two passes) ## [17.0.2] - 2022-11-22 ### Fixed @@ -2669,6 +2670,7 @@ All notable changes to this project will be documented in this file. [#1810]: https://www.free-decompiler.com/flash/issues/1810 [#1891]: https://www.free-decompiler.com/flash/issues/1891 [#1892]: https://www.free-decompiler.com/flash/issues/1892 +[#1894]: https://www.free-decompiler.com/flash/issues/1894 [#1882]: https://www.free-decompiler.com/flash/issues/1882 [#1880]: https://www.free-decompiler.com/flash/issues/1880 [#1881]: https://www.free-decompiler.com/flash/issues/1881 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/BaseLocalData.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/BaseLocalData.java index 506438f43..c5b1a1e75 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/BaseLocalData.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/BaseLocalData.java @@ -16,8 +16,11 @@ */ package com.jpexs.decompiler.flash; +import com.jpexs.decompiler.graph.GraphPart; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.SecondPassData; +import java.util.HashSet; +import java.util.Set; /** * @@ -26,6 +29,8 @@ import com.jpexs.decompiler.graph.SecondPassData; public abstract class BaseLocalData { public GraphSourceItem lineStartInstruction; - + + public Set allSwitchParts = new HashSet<>(); + public SecondPassData secondPassData = null; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/AVM2LocalData.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/AVM2LocalData.java index 428880e9b..066e2aa56 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/AVM2LocalData.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/AVM2LocalData.java @@ -142,6 +142,7 @@ public class AVM2LocalData extends BaseLocalData { } public AVM2LocalData(AVM2LocalData localData) { + allSwitchParts = localData.allSwitchParts; isStatic = localData.isStatic; classIndex = localData.classIndex; localRegs = localData.localRegs; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java index 6d63513db..afc22356a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java @@ -298,6 +298,7 @@ import com.jpexs.decompiler.graph.GraphPart; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.ScopeStack; +import com.jpexs.decompiler.graph.SecondPassException; import com.jpexs.decompiler.graph.SimpleValue; import com.jpexs.decompiler.graph.TranslateStack; import com.jpexs.decompiler.graph.TypeItem; @@ -1589,7 +1590,7 @@ public class AVM2Code implements Cloneable { return pos2adr(getIpThroughJumpAndDebugLine(adr2pos(addr, true))); } - public ConvertOutput toSourceOutput(List callStack, AbcIndexing abcIndex, Map> setLocalPosToGetLocalPos, boolean thisHasDefaultToPrimitive, Reference lineStartItem, String path, GraphPart part, boolean processJumps, boolean isStatic, int scriptIndex, int classIndex, HashMap localRegs, TranslateStack stack, ScopeStack scopeStack, ABC abc, MethodBody body, int start, int end, HashMap localRegNames, HashMap localRegTypes, List fullyQualifiedNames, boolean[] visited, HashMap localRegAssigmentIps, HashMap> refs) throws ConvertException, InterruptedException { + public ConvertOutput toSourceOutput(Set switchParts, List callStack, AbcIndexing abcIndex, Map> setLocalPosToGetLocalPos, boolean thisHasDefaultToPrimitive, Reference lineStartItem, String path, GraphPart part, boolean processJumps, boolean isStatic, int scriptIndex, int classIndex, HashMap localRegs, TranslateStack stack, ScopeStack scopeStack, ABC abc, MethodBody body, int start, int end, HashMap localRegNames, HashMap localRegTypes, List fullyQualifiedNames, boolean[] visited, HashMap localRegAssigmentIps, HashMap> refs) throws ConvertException, InterruptedException { calcKilledStats(body); boolean debugMode = DEBUG_MODE; if (debugMode) { @@ -1664,7 +1665,7 @@ public class AVM2Code implements Cloneable { do { AVM2Instruction insAfter = ip + 1 < code.size() ? code.get(ip + 1) : null; if (insAfter == null) { - ins.definition.translate(callStack, abcIndex, setLocalPosToGetLocalPos, lineStartItem, isStatic, scriptIndex, classIndex, localRegs, stack, scopeStack, ins, output, body, abc, localRegNames, localRegTypes, fullyQualifiedNames, path, localRegAssigmentIps, ip, refs, this, thisHasDefaultToPrimitive); + ins.definition.translate(switchParts, callStack, abcIndex, setLocalPosToGetLocalPos, lineStartItem, isStatic, scriptIndex, classIndex, localRegs, stack, scopeStack, ins, output, body, abc, localRegNames, localRegTypes, fullyQualifiedNames, path, localRegAssigmentIps, ip, refs, this, thisHasDefaultToPrimitive); ip++; break; } @@ -1686,14 +1687,14 @@ public class AVM2Code implements Cloneable { //stack.add("(" + stack.pop() + ")||"); isAnd = false; } else { - ins.definition.translate(callStack, abcIndex, setLocalPosToGetLocalPos, lineStartItem, isStatic, scriptIndex, classIndex, localRegs, stack, scopeStack, ins, output, body, abc, localRegNames, localRegTypes, fullyQualifiedNames, path, localRegAssigmentIps, ip, refs, this, thisHasDefaultToPrimitive); + ins.definition.translate(switchParts, callStack, abcIndex, setLocalPosToGetLocalPos, lineStartItem, isStatic, scriptIndex, classIndex, localRegs, stack, scopeStack, ins, output, body, abc, localRegNames, localRegTypes, fullyQualifiedNames, path, localRegAssigmentIps, ip, refs, this, thisHasDefaultToPrimitive); ip++; break; //throw new ConvertException("Unknown pattern after DUP:" + insComparsion.toString()); } } while (ins.definition instanceof DupIns); } else if ((ins.definition instanceof ReturnValueIns) || (ins.definition instanceof ReturnVoidIns) || (ins.definition instanceof ThrowIns)) { - ins.definition.translate(callStack, abcIndex, setLocalPosToGetLocalPos, lineStartItem, isStatic, scriptIndex, classIndex, localRegs, stack, scopeStack, ins, output, body, abc, localRegNames, localRegTypes, fullyQualifiedNames, path, localRegAssigmentIps, ip, refs, this, thisHasDefaultToPrimitive); + ins.definition.translate(switchParts, callStack, abcIndex, setLocalPosToGetLocalPos, lineStartItem, isStatic, scriptIndex, classIndex, localRegs, stack, scopeStack, ins, output, body, abc, localRegNames, localRegTypes, fullyQualifiedNames, path, localRegAssigmentIps, ip, refs, this, thisHasDefaultToPrimitive); //ip = end + 1; break; } else if (ins.definition instanceof NewFunctionIns) { @@ -1729,13 +1730,13 @@ public class AVM2Code implements Cloneable { } } // What to do when hasDup is false? - ins.definition.translate(callStack, abcIndex, setLocalPosToGetLocalPos, lineStartItem, isStatic, scriptIndex, classIndex, localRegs, stack, scopeStack, ins, output, body, abc, localRegNames, localRegTypes, fullyQualifiedNames, path, localRegAssigmentIps, ip, refs, this, thisHasDefaultToPrimitive); + ins.definition.translate(switchParts, callStack, abcIndex, setLocalPosToGetLocalPos, lineStartItem, isStatic, scriptIndex, classIndex, localRegs, stack, scopeStack, ins, output, body, abc, localRegNames, localRegTypes, fullyQualifiedNames, path, localRegAssigmentIps, ip, refs, this, thisHasDefaultToPrimitive); NewFunctionAVM2Item nft = (NewFunctionAVM2Item) stack.peek(); nft.functionName = functionName; ip++; } else { try { - ins.definition.translate(callStack, abcIndex, setLocalPosToGetLocalPos, lineStartItem, isStatic, scriptIndex, classIndex, localRegs, stack, scopeStack, ins, output, body, abc, localRegNames, localRegTypes, fullyQualifiedNames, path, localRegAssigmentIps, ip, refs, this, thisHasDefaultToPrimitive); + ins.definition.translate(switchParts, callStack, abcIndex, setLocalPosToGetLocalPos, lineStartItem, isStatic, scriptIndex, classIndex, localRegs, stack, scopeStack, ins, output, body, abc, localRegNames, localRegTypes, fullyQualifiedNames, path, localRegAssigmentIps, ip, refs, this, thisHasDefaultToPrimitive); } catch (RuntimeException re) { /*String last=""; int len=5; @@ -2150,8 +2151,11 @@ public class AVM2Code implements Cloneable { } //try { - list = AVM2Graph.translateViaGraph(callStack, abcIndex, path, this, abc, body, isStatic, scriptIndex, classIndex, localRegs, scopeStack, localRegNames, localRegTypes, fullyQualifiedNames, staticOperation, localRegAssigmentIps, refs, thisHasDefaultToPrimitive); - + try{ + list = AVM2Graph.translateViaGraph(null, callStack, abcIndex, path, this, abc, body, isStatic, scriptIndex, classIndex, localRegs, scopeStack, localRegNames, localRegTypes, fullyQualifiedNames, staticOperation, localRegAssigmentIps, refs, thisHasDefaultToPrimitive); + } catch(SecondPassException spe) { + list = AVM2Graph.translateViaGraph(spe.getData(), callStack, abcIndex, path, this, abc, body, isStatic, scriptIndex, classIndex, localRegs, scopeStack, localRegNames, localRegTypes, fullyQualifiedNames, staticOperation, localRegAssigmentIps, refs, thisHasDefaultToPrimitive); + } if (initTraits != null) { loopi: for (int i = 0; i < list.size(); i++) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java index 25fee77bc..637333a29 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java @@ -101,6 +101,7 @@ import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.GraphTargetVisitorInterface; import com.jpexs.decompiler.graph.Loop; import com.jpexs.decompiler.graph.ScopeStack; +import com.jpexs.decompiler.graph.SecondPassData; import com.jpexs.decompiler.graph.StopPartKind; import com.jpexs.decompiler.graph.ThrowState; import com.jpexs.decompiler.graph.TranslateStack; @@ -633,10 +634,11 @@ public class AVM2Graph extends Graph { return setLocalPosToGetLocalPos; } - public static List translateViaGraph(List callStack, AbcIndexing abcIndex, String path, AVM2Code code, ABC abc, MethodBody body, boolean isStatic, int scriptIndex, int classIndex, HashMap localRegs, ScopeStack scopeStack, HashMap localRegNames, HashMap localRegTypes, List fullyQualifiedNames, int staticOperation, HashMap localRegAssigmentIps, HashMap> refs, boolean thisHasDefaultToPrimitive) throws InterruptedException { + public static List translateViaGraph(SecondPassData secondPassData, List callStack, AbcIndexing abcIndex, String path, AVM2Code code, ABC abc, MethodBody body, boolean isStatic, int scriptIndex, int classIndex, HashMap localRegs, ScopeStack scopeStack, HashMap localRegNames, HashMap localRegTypes, List fullyQualifiedNames, int staticOperation, HashMap localRegAssigmentIps, HashMap> refs, boolean thisHasDefaultToPrimitive) throws InterruptedException { AVM2Graph g = new AVM2Graph(abcIndex, code, abc, body, isStatic, scriptIndex, classIndex, localRegs, scopeStack, localRegNames, fullyQualifiedNames, localRegAssigmentIps, refs); AVM2LocalData localData = new AVM2LocalData(); + localData.secondPassData = secondPassData; localData.thisHasDefaultToPrimitive = thisHasDefaultToPrimitive; localData.isStatic = isStatic; localData.classIndex = classIndex; @@ -657,7 +659,7 @@ public class AVM2Graph extends Graph { Set allParts = new HashSet<>(); for (GraphPart head : g.heads) { populateParts(head, allParts); - } + } return g.translate(localData, staticOperation, path); } @@ -2424,4 +2426,8 @@ public class AVM2Graph extends Graph { Graph.makeAllCommands(commands, stack); } + @Override + protected SecondPassData prepareSecondPass(List list) { + return new SecondPassData(); + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2GraphSource.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2GraphSource.java index 94049e433..18506d38c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2GraphSource.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2GraphSource.java @@ -119,7 +119,7 @@ public class AVM2GraphSource extends GraphSource { List ret = new ArrayList<>(); ScopeStack newstack = ((AVM2LocalData) localData).scopeStack; Reference lineStartItem = new Reference<>(localData.lineStartInstruction); - ConvertOutput co = code.toSourceOutput(((AVM2LocalData) localData).callStack, ((AVM2LocalData) localData).abcIndex, ((AVM2LocalData) localData).setLocalPosToGetLocalPos, ((AVM2LocalData) localData).thisHasDefaultToPrimitive, lineStartItem, path, part, false, isStatic, scriptIndex, classIndex, localRegs, stack, newstack, abc, body, start, end, localRegNames, ((AVM2LocalData) localData).localRegTypes, fullyQualifiedNames, new boolean[size()], localRegAssigmentIps, refs); + ConvertOutput co = code.toSourceOutput(localData.allSwitchParts, ((AVM2LocalData) localData).callStack, ((AVM2LocalData) localData).abcIndex, ((AVM2LocalData) localData).setLocalPosToGetLocalPos, ((AVM2LocalData) localData).thisHasDefaultToPrimitive, lineStartItem, path, part, false, isStatic, scriptIndex, classIndex, localRegs, stack, newstack, abc, body, start, end, localRegNames, ((AVM2LocalData) localData).localRegTypes, fullyQualifiedNames, new boolean[size()], localRegAssigmentIps, refs); localData.lineStartInstruction = lineStartItem.getVal(); ret.addAll(co.output); return ret; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/InstructionDefinition.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/InstructionDefinition.java index 088c11742..20305be06 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/InstructionDefinition.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/InstructionDefinition.java @@ -44,6 +44,7 @@ import com.jpexs.decompiler.flash.abc.types.traits.TraitWithSlot; import com.jpexs.decompiler.flash.abc.types.traits.Traits; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; import com.jpexs.decompiler.graph.DottedChain; +import com.jpexs.decompiler.graph.GraphPart; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.ScopeStack; @@ -171,8 +172,9 @@ public abstract class InstructionDefinition implements Serializable { public void translate(AVM2LocalData localData, TranslateStack stack, AVM2Instruction ins, List output, String path) throws InterruptedException { } - public void translate(List callStack, AbcIndexing abcIndex, Map> setLocalPosToGetLocalPos, Reference lineStartItem, boolean isStatic, int scriptIndex, int classIndex, HashMap localRegs, TranslateStack stack, ScopeStack scopeStack, AVM2Instruction ins, List output, MethodBody body, ABC abc, HashMap localRegNames, HashMap localRegTypes, List fullyQualifiedNames, String path, HashMap localRegsAssignmentIps, int ip, HashMap> refs, AVM2Code code, boolean thisHasDefaultToPrimitive) throws InterruptedException { + public void translate(Set switchParts, List callStack, AbcIndexing abcIndex, Map> setLocalPosToGetLocalPos, Reference lineStartItem, boolean isStatic, int scriptIndex, int classIndex, HashMap localRegs, TranslateStack stack, ScopeStack scopeStack, AVM2Instruction ins, List output, MethodBody body, ABC abc, HashMap localRegNames, HashMap localRegTypes, List fullyQualifiedNames, String path, HashMap localRegsAssignmentIps, int ip, HashMap> refs, AVM2Code code, boolean thisHasDefaultToPrimitive) throws InterruptedException { AVM2LocalData localData = new AVM2LocalData(); + localData.allSwitchParts = switchParts; localData.isStatic = isStatic; localData.scriptIndex = scriptIndex; localData.classIndex = classIndex; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/Action.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/Action.java index 3cab5b579..51a5529ac 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/Action.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/Action.java @@ -63,6 +63,7 @@ import com.jpexs.decompiler.flash.helpers.SWFDecompilerPlugin; import com.jpexs.decompiler.flash.tags.DoInitActionTag; import com.jpexs.decompiler.flash.tags.base.ASMSource; import com.jpexs.decompiler.graph.Graph; +import com.jpexs.decompiler.graph.GraphPart; import com.jpexs.decompiler.graph.GraphPartChangeException; import com.jpexs.decompiler.graph.GraphSource; import com.jpexs.decompiler.graph.GraphSourceItem; @@ -1009,11 +1010,11 @@ public abstract class Action implements GraphSourceItem { return variables2; } - public static List actionsPartToTree(SecondPassData secondPassData, boolean insideDoInitAction, Reference fi, HashMap registerNames, HashMap variables, HashMap functions, TranslateStack stack, List actions, int start, int end, int version, int staticOperation, String path, String charset) throws InterruptedException, GraphPartChangeException { + public static List actionsPartToTree(Set switchParts, SecondPassData secondPassData, boolean insideDoInitAction, Reference fi, HashMap registerNames, HashMap variables, HashMap functions, TranslateStack stack, List actions, int start, int end, int version, int staticOperation, String path, String charset) throws InterruptedException, GraphPartChangeException { if (start < actions.size() && (end > 0) && (start > 0)) { logger.log(Level.FINE, "Entering {0}-{1}{2}", new Object[]{start, end, actions.size() > 0 ? (" (" + actions.get(start).toString() + " - " + actions.get(end == actions.size() ? end - 1 : end) + ")") : ""}); } - ActionLocalData localData = new ActionLocalData(secondPassData, insideDoInitAction, registerNames, variables, functions); + ActionLocalData localData = new ActionLocalData(switchParts, secondPassData, insideDoInitAction, registerNames, variables, functions); localData.lineStartAction = fi.getVal(); List output = new ArrayList<>(); int ip = start; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraphSource.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraphSource.java index fb1c2974a..67e8bfb1b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraphSource.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraphSource.java @@ -112,7 +112,7 @@ public class ActionGraphSource extends GraphSource { public List translatePart(GraphPart part, BaseLocalData localData, TranslateStack stack, int start, int end, int staticOperation, String path) throws InterruptedException, GraphPartChangeException { Reference fi = new Reference<>(localData.lineStartInstruction); - List r = Action.actionsPartToTree(localData.secondPassData, this.insideDoInitAction, fi, registerNames, variables, functions, stack, actions, start, end, version, staticOperation, path, charset); + List r = Action.actionsPartToTree(localData.allSwitchParts, localData.secondPassData, this.insideDoInitAction, fi, registerNames, variables, functions, stack, actions, start, end, version, staticOperation, path, charset); localData.lineStartInstruction = fi.getVal(); return r; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionLocalData.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionLocalData.java index b30c91392..2e38c681e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionLocalData.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionLocalData.java @@ -17,10 +17,12 @@ package com.jpexs.decompiler.flash.action; import com.jpexs.decompiler.flash.BaseLocalData; +import com.jpexs.decompiler.graph.GraphPart; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SecondPassData; import java.util.HashMap; +import java.util.Set; /** * @@ -51,10 +53,11 @@ public class ActionLocalData extends BaseLocalData { this.secondPassData = secondPassData; variables = new HashMap<>(); functions = new HashMap<>(); - this.insideDoInitAction = insideDoInitAction; + this.insideDoInitAction = insideDoInitAction; } - public ActionLocalData(SecondPassData secondPassData, boolean insideDoInitAction, HashMap regNames, HashMap variables, HashMap functions) { + public ActionLocalData(Set switchParts, SecondPassData secondPassData, boolean insideDoInitAction, HashMap regNames, HashMap variables, HashMap functions) { + this.allSwitchParts = switchParts; this.regNames = regNames; this.variables = variables; this.functions = functions; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionSecondPassData.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionSecondPassData.java index ba4662c89..afc9d8654 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionSecondPassData.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionSecondPassData.java @@ -29,5 +29,5 @@ import java.util.List; public class ActionSecondPassData extends SecondPassData { List> switchParts = new ArrayList<>(); List> switchOnFalseParts = new ArrayList<>(); - List> switchCaseExpressions = new ArrayList<>(); + List> switchCaseExpressions = new ArrayList<>(); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java index 5809038bb..ad98a3ac1 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java @@ -61,6 +61,7 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.Stack; import java.util.TreeSet; @@ -116,6 +117,7 @@ public class Graph { List visited = new ArrayList<>(); for (GraphPart head : heads) { time = head.setTime(time, ordered, visited); + head.setNumblocks(1); } } @@ -446,23 +448,57 @@ public class Graph { if (stopPart != null) { for (GraphPart p : parts) { for (GraphPart sp : stopPart) { - if (sp == p || p.leadsTo(localData, this, code, sp, loops, throwStates, false)) { + if (sp == p || p.leadsTo(localData, this, code, sp, new ArrayList() /*IGNORE LOOPS*/, throwStates, false)) { partsLeadingToStopPart.add(p); } } } } + if (debugPrintLoopList) { + System.err.println("commonset:"); + for (PartCommon pc : commonSet) { + System.err.println("- " + pc); + } + + System.err.println("parts:"); + for(GraphPart p :parts) { + System.err.println("- "+p); + } + + if (stopPart != null) { + System.err.println("stopparts:"); + for(GraphPart p :stopPart) { + System.err.println("- "+p); + } + } + + System.err.println("partsLeadingToStopPart:"); + for (GraphPart p : partsLeadingToStopPart) { + System.err.println("- " + p); + } + + if (partsLeadingToStopPart.isEmpty()) { + return null; //? + } + } + loopc: for (PartCommon pc : commonSet) { for (GraphPart p : partsLeadingToStopPart) { if (p != pc.part && !p.leadsTo(localData, this, code, pc.part, loops, throwStates, false)) { + if (debugPrintLoopList) { + System.err.println("ignoring " + pc.part + ", " + p + " does not lead to it"); + } continue loopc; } } if (pc.level <= 1) { return null; } + if (debugPrintLoopList) { + System.err.println("selected " + pc.part); + } return pc.part; } @@ -489,6 +525,32 @@ public class Graph { return "" + part.toString() + " (level=" + level; } + @Override + public int hashCode() { + int hash = 5; + hash = 71 * hash + Objects.hashCode(this.part); + hash = 71 * hash + this.level; + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final PartCommon other = (PartCommon) obj; + if (this.level != other.level) { + return false; + } + return Objects.equals(this.part, other.part); + } + } public GraphPart getNextNoJump(GraphPart part, BaseLocalData localData) { @@ -569,6 +631,11 @@ public class Graph { getLoops(localData, heads.get(0), loops, throwStates, null); afterGetLoops(localData, path, allParts); + + //TODO: Make getPrecontinues faster + getBackEdges(localData, loops, throwStates); + + new GraphPrecontinueDetector().detectPrecontinues(heads, allParts, loops, throwStates); if (debugPrintLoopList) { System.err.println(""); for (Loop el : loops) { @@ -576,12 +643,6 @@ public class Graph { } System.err.println(""); } - - //TODO: Make getPrecontinues faster - getBackEdges(localData, loops, throwStates); - - new GraphPrecontinueDetector().detectPrecontinues(heads, allParts, loops, throwStates); - /*System.err.println(""); for (Loop el : loops) { System.err.println(el); @@ -593,8 +654,19 @@ public class Graph { if (localData.secondPassData == null) { SecondPassData secondPassData = prepareSecondPass(ret); - if (secondPassData != null) { - throw new SecondPassException(secondPassData); + if (secondPassData == null) { + if (!localData.allSwitchParts.isEmpty()) { + secondPassData = new SecondPassData(); + secondPassData.allSwitchParts = localData.allSwitchParts; + throw new SecondPassException(secondPassData); + } + } else { + if (secondPassData.getClass() == SecondPassData.class && localData.allSwitchParts.isEmpty()) { + //nothing + } else { + secondPassData.allSwitchParts = localData.allSwitchParts; + throw new SecondPassException(secondPassData); + } } } @@ -1805,8 +1877,28 @@ public class Graph { Map count = new HashMap<>(); GraphPart winner = null; int winnerCount = 0; + int winnerNumBlock = Integer.MAX_VALUE; + + Set bannedCandidates = new HashSet<>(); + if(localData.secondPassData != null) { + bannedCandidates = localData.secondPassData.allSwitchParts; + } + + if (debugPrintLoopList) { + System.err.println("bannedCandidates:"); + for(GraphPart p:bannedCandidates) { + System.err.println("- "+p); + } + + } + for (GraphPart cand : currentLoop.breakCandidates) { - + if (bannedCandidates.contains(cand)) { + if (debugPrintLoopList) { + System.err.println("cand "+cand+" is banned"); + } + continue; + } if (!count.containsKey(cand)) { count.put(cand, 0); } @@ -2690,7 +2782,18 @@ public class Graph { } } - finalComm.addAll(precoCommands); + boolean isAllNotBlock = true; + for (GraphTargetItem ti: precoCommands) { + if (ti instanceof Block) { + isAllNotBlock = false; + break; + } + } + if (isAllNotBlock) { + finalComm.addAll(precoCommands); + } else { + commands.addAll(precoCommands); + } } if (currentLoop.precontinueCommands != null) { finalComm.addAll(currentLoop.precontinueCommands); @@ -3098,7 +3201,7 @@ public class Graph { } } } - + protected SwitchItem handleSwitch(GraphTargetItem switchedObject, GraphSourceItem switchStartItem, List foundGotos, Map> partCodes, Map partCodePos, Set visited, Set allParts, TranslateStack stack, List stopPart, List stopPartKind, List loops, List throwStates, BaseLocalData localData, int staticOperation, String path, List caseValuesMap, GraphPart defaultPart, List caseBodyParts, Reference nextRef, Reference tiRef) throws InterruptedException { @@ -3236,6 +3339,8 @@ public class Graph { } } + localData.allSwitchParts.add(caseBodies.get(i)); + List stopPart2x = new ArrayList<>(stopPart); List stopPartKind2x = new ArrayList<>(stopPartKind); for (GraphPart b : caseBodies) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphPart.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphPart.java index 71646fb5b..bdf849c91 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphPart.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphPart.java @@ -73,6 +73,8 @@ public class GraphPart implements Serializable { public int finishedTime; public int order; + + public int numBlocks = Integer.MAX_VALUE; //public List throwParts = new ArrayList<>(); @@ -123,6 +125,16 @@ public class GraphPart implements Serializable { ordered.add(this); return time; } + + public void setNumblocks(int numBlocks) { + this.numBlocks = numBlocks; + numBlocks++; + for (GraphPart next : nextParts) { + if (next.numBlocks > numBlocks) { + next.setNumblocks(numBlocks); + } + } + } private boolean leadsTo(BaseLocalData localData, Graph gr, GraphSource code, GraphPart prev, GraphPart part, HashSet visited, List loops, List throwStates, boolean useThrow) throws InterruptedException { if (Thread.currentThread().isInterrupted()) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Loop.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Loop.java index 7f8892d76..fc84bba3f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Loop.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Loop.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.graph; import java.io.Serializable; import java.util.ArrayList; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Set; @@ -64,7 +65,12 @@ public class Loop implements Serializable { for (GraphPart p : backEdges) { edgesAsStr.add(p.toString()); } - return "loop(id:" + id + (loopPreContinue != null ? ",precontinue:" + loopPreContinue : "") + ",continue:" + loopContinue + ", break:" + loopBreak + ", phase:" + phase + ", backedges: " + String.join(",", edgesAsStr) + ")"; + Set bcAsStr = new LinkedHashSet<>(); + for (int i = 0; i < breakCandidates.size(); i++) { + bcAsStr.add(breakCandidates.get(i) + " - level " + breakCandidatesLevels.get(i) +" - numblocks " + breakCandidates.get(i).numBlocks); + } + + return "loop(id:" + id + (loopPreContinue != null ? ",precontinue:" + loopPreContinue : "") + ",continue:" + loopContinue + ", break:" + loopBreak + ", phase:" + phase + ", backedges: " + String.join(",", edgesAsStr) + ", breakCandidates: " + String.join(",", bcAsStr) + ")"; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/SecondPassData.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/SecondPassData.java index 47f264ce4..749fa173f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/SecondPassData.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/SecondPassData.java @@ -16,10 +16,13 @@ */ package com.jpexs.decompiler.graph; +import java.util.HashSet; +import java.util.Set; + /** * * @author JPEXS */ -public abstract class SecondPassData { - +public class SecondPassData { + public Set allSwitchParts = new HashSet<>(); } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java index ff0f2e1e1..ab3d56ca8 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java @@ -605,6 +605,8 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "obj = {};\r\n" + "item = {};\r\n" + + "for each(item in obj)\r\n" + + "{\r\n" + "switch(item[\"key\"])\r\n" + "{\r\n" + "case 1:\r\n" @@ -614,6 +616,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "return item;\r\n" + "}\r\n" + "}\r\n" + + "}\r\n" + "return null;\r\n", false); } @@ -1736,6 +1739,57 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile false); } + @Test + public void testWhileBreak2() { + decompileMethod("classic_air", "testWhileBreak2", "var k:int = 8;\r\n" + + "while(true)\r\n" + + "{\r\n" + + "trace(\"X\");\r\n" + + "if(k == 1)\r\n" + + "{\r\n" + + "trace(\"A\");\r\n" + + "return;\r\n" + + "}\r\n" + + "trace(\"Y\");\r\n" + + "if(k < 10)\r\n" + + "{\r\n" + + "trace(\"k1\");\r\n" + + "if(k == 2)\r\n" + + "{\r\n" + + "trace(\"B\");\r\n" + + "if(k > 1)\r\n" + + "{\r\n" + + "trace(\"B1\");\r\n" + + "break;\r\n" + + "}\r\n" + + "trace(\"B2\");\r\n" + + "}\r\n" + + "trace(\"Z\");\r\n" + + "if(k == 3)\r\n" + + "{\r\n" + + "trace(\"C\");\r\n" + + "break;\r\n" + + "}\r\n" + + "trace(\"Z2\");\r\n" + + "if(k == 4)\r\n" + + "{\r\n" + + "trace(\"D\");\r\n" + + "break;\r\n" + + "}\r\n" + + "trace(\"k2\");\r\n" + + "}\r\n" + + "trace(\"E\");\r\n" + + "if(k == 2)\r\n" + + "{\r\n" + + "trace(\"E1\");\r\n" + + "return;\r\n" + + "}\r\n" + + "trace(\"gg\");\r\n" + + "}\r\n" + + "trace(\"ss\");\r\n", + false); + } + @Test public void testWhileContinue() { decompileMethod("classic_air", "testWhileContinue", "var a:int = 5;\r\n" diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java index 2a95225d6..715d233b2 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java @@ -594,20 +594,23 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes @Test public void testForEachReturn2() { - decompileMethod("classic", "testForEachReturn2", "var item:* = undefined;\r\n" - + "var obj:* = null;\r\n" - + "var x:* = 5;\r\n" - + "if(x != null)\r\n" + decompileMethod("classic", "testForEachReturn2", "var _loc3_:* = undefined;\r\n" + + "var _loc1_:* = null;\r\n" + + "var _loc2_:* = 5;\r\n" + + "if(_loc2_ != null)\r\n" + "{\r\n" - + "obj = {};\r\n" - + "item = {};\r\n" - + "switch(item[\"key\"])\r\n" + + "_loc1_ = {};\r\n" + + "_loc3_ = {};\r\n" + + "for each(_loc3_ in _loc1_)\r\n" + + "{\r\n" + + "switch(_loc3_[\"key\"])\r\n" + "{\r\n" + "case 1:\r\n" + "case 2:\r\n" + "case 3:\r\n" + "case 4:\r\n" - + "return item;\r\n" + + "return _loc3_;\r\n" + + "}\r\n" + "}\r\n" + "}\r\n" + "return null;\r\n", @@ -1736,6 +1739,57 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes false); } + @Test + public void testWhileBreak2() { + decompileMethod("classic", "testWhileBreak2", "var k:int = 8;\r\n" + + "while(true)\r\n" + + "{\r\n" + + "trace(\"X\");\r\n" + + "if(k == 1)\r\n" + + "{\r\n" + + "trace(\"A\");\r\n" + + "return;\r\n" + + "}\r\n" + + "trace(\"Y\");\r\n" + + "if(k < 10)\r\n" + + "{\r\n" + + "trace(\"k1\");\r\n" + + "if(k == 2)\r\n" + + "{\r\n" + + "trace(\"B\");\r\n" + + "if(k > 1)\r\n" + + "{\r\n" + + "trace(\"B1\");\r\n" + + "break;\r\n" + + "}\r\n" + + "trace(\"B2\");\r\n" + + "}\r\n" + + "trace(\"Z\");\r\n" + + "if(k == 3)\r\n" + + "{\r\n" + + "trace(\"C\");\r\n" + + "break;\r\n" + + "}\r\n" + + "trace(\"Z2\");\r\n" + + "if(k == 4)\r\n" + + "{\r\n" + + "trace(\"D\");\r\n" + + "break;\r\n" + + "}\r\n" + + "trace(\"k2\");\r\n" + + "}\r\n" + + "trace(\"E\");\r\n" + + "if(k == 2)\r\n" + + "{\r\n" + + "trace(\"E1\");\r\n" + + "return;\r\n" + + "}\r\n" + + "trace(\"gg\");\r\n" + + "}\r\n" + + "trace(\"ss\");\r\n", + false); + } + @Test public void testWhileContinue() { decompileMethod("classic", "testWhileContinue", "var a:* = 5;\r\n" diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf index 665881e6959e8f43bbd842f9860c10d9d66d3902..d9434073b75933dacb20048953905c32572ef475 100644 GIT binary patch literal 22606 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 R@C9Cd&ENoJ001P{HAy^_vV8ym diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf index 56f4bfb485d4f9008232b4efd368718ed04c1eff..110a3d9b008910f2a7bc55032ca81bef2860c251 100644 GIT binary patch delta 29200 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 delta 28790 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 1) + { + trace("B1"); + break; + } + trace("B2"); + } + trace("Z"); + + if (k == 3) + { + trace("C"); + break; + } + + trace("Z2"); + + if (k == 4) + { + trace("D"); + break; + } + trace("k2"); + } + trace("E"); + if (k == 2) { + trace("E1"); + return; + } + trace("gg"); + } + trace("ss"); + } + } +}