mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-26 05:00:49 +00:00
Fixed #223 AS2 Detecting uninitialized class fields
This commit is contained in:
@@ -46,11 +46,13 @@ import com.jpexs.decompiler.flash.action.ActionGraphSource;
|
||||
import com.jpexs.decompiler.flash.action.ActionList;
|
||||
import com.jpexs.decompiler.flash.action.ActionListReader;
|
||||
import com.jpexs.decompiler.flash.action.ActionLocalData;
|
||||
import com.jpexs.decompiler.flash.action.as2.UninitializedClassFieldsDetector;
|
||||
import com.jpexs.decompiler.flash.action.model.ConstantPool;
|
||||
import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.FunctionActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.GetMemberActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.GetVariableActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.SetMemberActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.clauses.ClassActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.clauses.InterfaceActionItem;
|
||||
import com.jpexs.decompiler.flash.action.swf4.ActionEquals;
|
||||
@@ -412,6 +414,8 @@ public final class SWF implements SWFContainerItem, Timelined, Openable {
|
||||
private AbcIndexing abcIndex;
|
||||
|
||||
private int numAbcIndexDependencies = 0;
|
||||
|
||||
private Map<String, Map<String, com.jpexs.decompiler.flash.action.as2.Trait>> uninitializedAs2ClassTraits = null;
|
||||
|
||||
private static AbcIndexing playerGlobalAbcIndex;
|
||||
|
||||
@@ -2750,7 +2754,7 @@ public final class SWF implements SWFContainerItem, Timelined, Openable {
|
||||
}
|
||||
|
||||
private static void getVariables(boolean insideDoInitAction, List<MyEntry<DirectValueActionItem, ConstantPool>> variables, List<GraphSourceItem> functions, HashMap<DirectValueActionItem, ConstantPool> strings, HashMap<DirectValueActionItem, String> usageTypes, ActionGraphSource code, int addr, String path) throws InterruptedException {
|
||||
ActionLocalData localData = new ActionLocalData(null, insideDoInitAction);
|
||||
ActionLocalData localData = new ActionLocalData(null, insideDoInitAction, new HashMap<>() /*??*/);
|
||||
getVariables(null, localData, new TranslateStack(path), new ArrayList<>(), code, code.adr2pos(addr), variables, functions, strings, new ArrayList<>(), usageTypes, path);
|
||||
}
|
||||
|
||||
@@ -2940,7 +2944,7 @@ public final class SWF implements SWFContainerItem, Timelined, Openable {
|
||||
int staticOperation = Graph.SOP_USE_STATIC; //(Boolean) Configuration.getConfig("autoDeobfuscate", true) ? Graph.SOP_SKIP_STATIC : Graph.SOP_USE_STATIC;
|
||||
List<GraphTargetItem> dec;
|
||||
try {
|
||||
dec = Action.actionsToTree(true /*Yes, inside doInitAction*/, false, dia.getActions(), version, staticOperation, ""/*FIXME*/, getCharset());
|
||||
dec = Action.actionsToTree(new HashMap<>() /*??*/, true /*Yes, inside doInitAction*/, false, dia.getActions(), version, staticOperation, ""/*FIXME*/, getCharset());
|
||||
} catch (EmptyStackException ex) {
|
||||
continue;
|
||||
}
|
||||
@@ -3219,6 +3223,7 @@ public final class SWF implements SWFContainerItem, Timelined, Openable {
|
||||
}
|
||||
|
||||
public void clearScriptCache() {
|
||||
uninitializedAs2ClassTraits = null;
|
||||
as2Cache.clear();
|
||||
as3Cache.clear();
|
||||
List<ABCContainerTag> abcList = getAbcList();
|
||||
@@ -4562,4 +4567,17 @@ public final class SWF implements SWFContainerItem, Timelined, Openable {
|
||||
public OpenableList getOpenableList() {
|
||||
return openableList;
|
||||
}
|
||||
|
||||
public void calculateAs2UninitializedClassTraits() {
|
||||
uninitializedAs2ClassTraits = new HashMap<>();
|
||||
UninitializedClassFieldsDetector detector = new UninitializedClassFieldsDetector();
|
||||
uninitializedAs2ClassTraits = detector.calculateAs2UninitializedClassTraits(this);
|
||||
}
|
||||
|
||||
public synchronized Map<String, Map<String, com.jpexs.decompiler.flash.action.as2.Trait>> getUninitializedAs2ClassTraits() {
|
||||
if (uninitializedAs2ClassTraits == null) {
|
||||
calculateAs2UninitializedClassTraits();
|
||||
}
|
||||
return uninitializedAs2ClassTraits;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.BaseLocalData;
|
||||
import com.jpexs.decompiler.flash.DisassemblyListener;
|
||||
import com.jpexs.decompiler.flash.SWF;
|
||||
import com.jpexs.decompiler.flash.SWFOutputStream;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import com.jpexs.decompiler.flash.action.deobfuscation.ActionDeobfuscator;
|
||||
import com.jpexs.decompiler.flash.action.model.ActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.ConstantPool;
|
||||
@@ -765,6 +766,7 @@ public abstract class Action implements GraphSourceItem {
|
||||
/**
|
||||
* Translates this function to stack and output.
|
||||
*
|
||||
* @param uninitializedClassTraits
|
||||
* @param secondPassData
|
||||
* @param insideDoInitAction
|
||||
* @param lineStartIns Line start instruction
|
||||
@@ -777,7 +779,7 @@ public abstract class Action implements GraphSourceItem {
|
||||
* @param path the value of path
|
||||
* @throws java.lang.InterruptedException
|
||||
*/
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartIns, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) throws InterruptedException {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartIns, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) throws InterruptedException {
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -853,12 +855,12 @@ public abstract class Action implements GraphSourceItem {
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static List<GraphTargetItem> actionsToTree(boolean insideDoInitAction, boolean insideFunction, List<Action> actions, int version, int staticOperation, String path, String charset) throws InterruptedException {
|
||||
return actionsToTree(insideDoInitAction, insideFunction, new HashMap<>(), new HashMap<>(), new HashMap<>(), actions, version, staticOperation, path, charset);
|
||||
public static List<GraphTargetItem> actionsToTree(Map<String, Map<String, Trait>> uninitializedClassTraits, boolean insideDoInitAction, boolean insideFunction, List<Action> actions, int version, int staticOperation, String path, String charset) throws InterruptedException {
|
||||
return actionsToTree(uninitializedClassTraits, insideDoInitAction, insideFunction, new HashMap<>(), new HashMap<>(), new HashMap<>(), actions, version, staticOperation, path, charset);
|
||||
}
|
||||
|
||||
public static GraphTextWriter actionsToSource(final ASMSource asm, final List<Action> actions, final String path, GraphTextWriter writer, String charset) throws InterruptedException {
|
||||
return Action.actionsToSource(asm, actions, path, writer, charset, new ArrayList<>());
|
||||
public static GraphTextWriter actionsToSource(Map<String, Map<String, Trait>> uninitializedClassTraits, final ASMSource asm, final List<Action> actions, final String path, GraphTextWriter writer, String charset) throws InterruptedException {
|
||||
return Action.actionsToSource(uninitializedClassTraits, asm, actions, path, writer, charset, new ArrayList<>());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -873,7 +875,7 @@ public abstract class Action implements GraphSourceItem {
|
||||
* @return
|
||||
* @throws java.lang.InterruptedException
|
||||
*/
|
||||
public static GraphTextWriter actionsToSource(final ASMSource asm, final List<Action> actions, final String path, GraphTextWriter writer, String charset, List<ActionTreeOperation> treeOperations) throws InterruptedException {
|
||||
public static GraphTextWriter actionsToSource(Map<String, Map<String, Trait>> uninitializedClassTraits, final ASMSource asm, final List<Action> actions, final String path, GraphTextWriter writer, String charset, List<ActionTreeOperation> treeOperations) throws InterruptedException {
|
||||
writer.suspendMeasure();
|
||||
List<GraphTargetItem> tree = null;
|
||||
Throwable convertException = null;
|
||||
@@ -886,7 +888,7 @@ public abstract class Action implements GraphSourceItem {
|
||||
public List<GraphTargetItem> call() throws Exception {
|
||||
int staticOperation = Graph.SOP_USE_STATIC; //(Boolean) Configuration.getConfig("autoDeobfuscate", true) ? Graph.SOP_SKIP_STATIC : Graph.SOP_USE_STATIC;
|
||||
boolean insideDoInitAction = (asm instanceof DoInitActionTag);
|
||||
List<GraphTargetItem> tree = actionsToTree(insideDoInitAction, false, new HashMap<>(), new HashMap<>(), new HashMap<>(), actions, version, staticOperation, path, charset);
|
||||
List<GraphTargetItem> tree = actionsToTree(uninitializedClassTraits, insideDoInitAction, false, new HashMap<>(), new HashMap<>(), new HashMap<>(), actions, version, staticOperation, path, charset);
|
||||
SWFDecompilerPlugin.fireActionTreeCreated(tree, swf);
|
||||
for (ActionTreeOperation treeOperation:treeOperations) {
|
||||
treeOperation.run(tree);
|
||||
@@ -948,17 +950,17 @@ public abstract class Action implements GraphSourceItem {
|
||||
* @return List of treeItems
|
||||
* @throws java.lang.InterruptedException
|
||||
*/
|
||||
public static List<GraphTargetItem> actionsToTree(boolean insideDoInitAction, boolean insideFunction, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, List<Action> actions, int version, int staticOperation, String path, String charset) throws InterruptedException {
|
||||
public static List<GraphTargetItem> actionsToTree(Map<String, Map<String, Trait>> uninitializedClassTraits, boolean insideDoInitAction, boolean insideFunction, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, List<Action> actions, int version, int staticOperation, String path, String charset) throws InterruptedException {
|
||||
HashMap<String, GraphTargetItem> variablesBackup = new LinkedHashMap<>(variables);
|
||||
HashMap<String, GraphTargetItem> functionsBackup = new LinkedHashMap<>(functions);
|
||||
try {
|
||||
return ActionGraph.translateViaGraph(null, insideDoInitAction, insideFunction, regNames, variables, functions, actions, version, staticOperation, path, charset);
|
||||
return ActionGraph.translateViaGraph(uninitializedClassTraits, null, insideDoInitAction, insideFunction, regNames, variables, functions, actions, version, staticOperation, path, charset);
|
||||
} catch (SecondPassException spe) {
|
||||
variables.clear();
|
||||
variables.putAll(variablesBackup);
|
||||
functions.clear();
|
||||
functions.putAll(functionsBackup);
|
||||
return ActionGraph.translateViaGraph(spe.getData(), insideDoInitAction, insideFunction, regNames, variables, functions, actions, version, staticOperation, path, charset);
|
||||
return ActionGraph.translateViaGraph(uninitializedClassTraits, spe.getData(), insideDoInitAction, insideFunction, regNames, variables, functions, actions, version, staticOperation, path, charset);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -971,7 +973,7 @@ public abstract class Action implements GraphSourceItem {
|
||||
}
|
||||
expectedSize += getStackPushCount(localData, stack);*/
|
||||
|
||||
translate(aLocalData.secondPassData, aLocalData.insideDoInitAction, aLocalData.lineStartAction, stack, output, aLocalData.regNames, aLocalData.variables, aLocalData.functions, staticOperation, path);
|
||||
translate(aLocalData.uninitializedClassTraits, aLocalData.secondPassData, aLocalData.insideDoInitAction, aLocalData.lineStartAction, stack, output, aLocalData.regNames, aLocalData.variables, aLocalData.functions, staticOperation, path);
|
||||
/*if (stack.size() != expectedSize && !(this instanceof ActionPushDuplicate)) {
|
||||
throw new Error("HONFIKA stack size mismatch");
|
||||
}*/
|
||||
@@ -1023,7 +1025,7 @@ public abstract class Action implements GraphSourceItem {
|
||||
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(switchParts, secondPassData, insideDoInitAction, registerNames, variables, functions);
|
||||
ActionLocalData localData = new ActionLocalData(switchParts, secondPassData, insideDoInitAction, registerNames, variables, functions, graph.getUninitializedClassTraits());
|
||||
localData.lineStartAction = fi.getVal();
|
||||
List<GraphTargetItem> output = new ArrayList<>();
|
||||
int ip = start;
|
||||
@@ -1087,10 +1089,10 @@ public abstract class Action implements GraphSourceItem {
|
||||
}
|
||||
}
|
||||
try {
|
||||
out = ActionGraph.translateViaGraph(null, insideDoInitAction, true, regNames, variables2, functions, actions.subList(adr2ip(actions, endAddr), adr2ip(actions, endAddr + size)), version, staticOperation, path + (cntName == null ? "" : "/" + cntName), charset);
|
||||
out = ActionGraph.translateViaGraph(graph.getUninitializedClassTraits(), null, insideDoInitAction, true, regNames, variables2, functions, actions.subList(adr2ip(actions, endAddr), adr2ip(actions, endAddr + size)), version, staticOperation, path + (cntName == null ? "" : "/" + cntName), charset);
|
||||
} catch (SecondPassException spe) {
|
||||
variables2 = prepareVariables(cnt, variables);
|
||||
out = ActionGraph.translateViaGraph(spe.getData(), insideDoInitAction, true, regNames, variables2, functions, actions.subList(adr2ip(actions, endAddr), adr2ip(actions, endAddr + size)), version, staticOperation, path + (cntName == null ? "" : "/" + cntName), charset);
|
||||
out = ActionGraph.translateViaGraph(graph.getUninitializedClassTraits(), spe.getData(), insideDoInitAction, true, regNames, variables2, functions, actions.subList(adr2ip(actions, endAddr), adr2ip(actions, endAddr + size)), version, staticOperation, path + (cntName == null ? "" : "/" + cntName), charset);
|
||||
}
|
||||
} catch (OutOfMemoryError | TranslateException | StackOverflowError ex) {
|
||||
logger.log(Level.SEVERE, "Decompilation error in: " + path, ex);
|
||||
|
||||
@@ -16,10 +16,12 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action;
|
||||
|
||||
import com.jpexs.decompiler.flash.action.as2.ActionScript2ClassDetector;
|
||||
import com.jpexs.decompiler.flash.BaseLocalData;
|
||||
import com.jpexs.decompiler.flash.FinalProcessLocalData;
|
||||
import com.jpexs.decompiler.flash.SWF;
|
||||
import static com.jpexs.decompiler.flash.action.Action.adr2ip;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.EnumerateActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.EnumeratedValueActionItem;
|
||||
@@ -89,13 +91,21 @@ public class ActionGraph extends Graph {
|
||||
private boolean insideDoInitAction;
|
||||
|
||||
private boolean insideFunction;
|
||||
private Map<String, Map<String, Trait>> uninitializedClassTraits;
|
||||
|
||||
public ActionGraph(String path, boolean insideDoInitAction, boolean insideFunction, List<Action> code, HashMap<Integer, String> registerNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int version, String charset) {
|
||||
public ActionGraph(Map<String, Map<String, Trait>> uninitializedClassTraits, String path, boolean insideDoInitAction, boolean insideFunction, List<Action> code, HashMap<Integer, String> registerNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int version, String charset) {
|
||||
super(new ActionGraphSource(path, insideDoInitAction, code, version, registerNames, variables, functions, charset), new ArrayList<>());
|
||||
this.uninitializedClassTraits = uninitializedClassTraits;
|
||||
this.insideDoInitAction = insideDoInitAction;
|
||||
this.insideFunction = insideFunction;
|
||||
}
|
||||
|
||||
public Map<String, Map<String, Trait>> getUninitializedClassTraits() {
|
||||
return uninitializedClassTraits;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public ActionGraphSource getGraphCode() {
|
||||
return (ActionGraphSource) code;
|
||||
@@ -123,7 +133,7 @@ public class ActionGraph extends Graph {
|
||||
|
||||
for (ActionList al : outs) {
|
||||
subgraphs.put("loc" + Helper.formatAddress(code.pos2adr(ip)) + ": function " + functionName,
|
||||
new ActionGraph("", false, false, al, new HashMap<>(), new HashMap<>(), new HashMap<>(), SWF.DEFAULT_VERSION, ((ActionGraphSource) getGraphCode()).getCharset())
|
||||
new ActionGraph(uninitializedClassTraits, "", false, false, al, new HashMap<>(), new HashMap<>(), new HashMap<>(), SWF.DEFAULT_VERSION, ((ActionGraphSource) getGraphCode()).getCharset())
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -141,9 +151,9 @@ public class ActionGraph extends Graph {
|
||||
|
||||
}
|
||||
|
||||
public static List<GraphTargetItem> translateViaGraph(SecondPassData secondPassData, boolean insideDoInitAction, boolean insideFunction, HashMap<Integer, String> registerNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, List<Action> code, int version, int staticOperation, String path, String charset) throws InterruptedException {
|
||||
ActionGraph g = new ActionGraph(path, insideDoInitAction, insideFunction, code, registerNames, variables, functions, version, charset);
|
||||
ActionLocalData localData = new ActionLocalData(secondPassData, insideDoInitAction, registerNames);
|
||||
public static List<GraphTargetItem> translateViaGraph(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, boolean insideFunction, HashMap<Integer, String> registerNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, List<Action> code, int version, int staticOperation, String path, String charset) throws InterruptedException {
|
||||
ActionGraph g = new ActionGraph(uninitializedClassTraits,path, insideDoInitAction, insideFunction, code, registerNames, variables, functions, version, charset);
|
||||
ActionLocalData localData = new ActionLocalData(secondPassData, insideDoInitAction, registerNames, uninitializedClassTraits);
|
||||
g.init(localData);
|
||||
return g.translate(localData, staticOperation, path);
|
||||
}
|
||||
@@ -474,7 +484,7 @@ public class ActionGraph extends Graph {
|
||||
List<GraphTargetItem> ret = super.translate(localData, staticOperation, path);
|
||||
if (insideDoInitAction && !insideFunction) {
|
||||
ActionScript2ClassDetector detector = new ActionScript2ClassDetector();
|
||||
detector.checkClass(ret, ((ActionGraphSource) code).getVariables(), path);
|
||||
detector.checkClass(uninitializedClassTraits,ret, ((ActionGraphSource) code).getVariables(), path);
|
||||
}
|
||||
makeDefineRegistersUp(ret);
|
||||
return ret;
|
||||
|
||||
@@ -562,7 +562,7 @@ public class ActionList extends ArrayList<Action> {
|
||||
return writer.toString();
|
||||
}
|
||||
|
||||
public String toSource() {
|
||||
/*public String toSource() {
|
||||
try {
|
||||
HighlightedTextWriter writer = new HighlightedTextWriter(new CodeFormatting(), false);
|
||||
actionsToSource(null, this, "", writer, charset);
|
||||
@@ -571,5 +571,5 @@ public class ActionList extends ArrayList<Action> {
|
||||
Logger.getLogger(ActionList.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
@@ -17,11 +17,13 @@
|
||||
package com.jpexs.decompiler.flash.action;
|
||||
|
||||
import com.jpexs.decompiler.flash.BaseLocalData;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
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.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
@@ -30,6 +32,8 @@ import java.util.Set;
|
||||
*/
|
||||
public class ActionLocalData extends BaseLocalData {
|
||||
|
||||
public final Map<String, Map<String, Trait>> uninitializedClassTraits;
|
||||
|
||||
public final HashMap<Integer, String> regNames;
|
||||
|
||||
public final HashMap<String, GraphTargetItem> variables;
|
||||
@@ -40,28 +44,31 @@ public class ActionLocalData extends BaseLocalData {
|
||||
|
||||
public boolean insideDoInitAction;
|
||||
|
||||
public ActionLocalData(SecondPassData secondPassData, boolean insideDoInitAction) {
|
||||
public ActionLocalData(SecondPassData secondPassData, boolean insideDoInitAction, Map<String, Map<String, Trait>> uninitializedClassTraits) {
|
||||
this.secondPassData = secondPassData;
|
||||
regNames = new HashMap<>();
|
||||
variables = new HashMap<>();
|
||||
functions = new HashMap<>();
|
||||
this.insideDoInitAction = insideDoInitAction;
|
||||
this.insideDoInitAction = insideDoInitAction;
|
||||
this.uninitializedClassTraits = uninitializedClassTraits;
|
||||
}
|
||||
|
||||
public ActionLocalData(SecondPassData secondPassData, boolean insideDoInitAction, HashMap<Integer, String> regNames) {
|
||||
public ActionLocalData(SecondPassData secondPassData, boolean insideDoInitAction, HashMap<Integer, String> regNames, Map<String, Map<String, Trait>> uninitializedClassTraits) {
|
||||
this.regNames = regNames;
|
||||
this.secondPassData = secondPassData;
|
||||
variables = new HashMap<>();
|
||||
functions = new HashMap<>();
|
||||
this.insideDoInitAction = insideDoInitAction;
|
||||
this.uninitializedClassTraits = uninitializedClassTraits;
|
||||
}
|
||||
|
||||
public ActionLocalData(Set<GraphPart> switchParts, SecondPassData secondPassData, boolean insideDoInitAction, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions) {
|
||||
public ActionLocalData(Set<GraphPart> switchParts, SecondPassData secondPassData, boolean insideDoInitAction, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, Map<String, Map<String, Trait>> uninitializedClassTraits) {
|
||||
this.allSwitchParts = switchParts;
|
||||
this.regNames = regNames;
|
||||
this.variables = variables;
|
||||
this.functions = functions;
|
||||
this.insideDoInitAction = insideDoInitAction;
|
||||
this.secondPassData = secondPassData;
|
||||
this.uninitializedClassTraits = uninitializedClassTraits;
|
||||
}
|
||||
}
|
||||
|
||||
+23
-10
@@ -14,9 +14,10 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action;
|
||||
package com.jpexs.decompiler.flash.action.as2;
|
||||
|
||||
import com.jpexs.decompiler.flash.IdentifiersDeobfuscation;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import com.jpexs.decompiler.flash.action.model.CallFunctionActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.CallMethodActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
|
||||
@@ -51,6 +52,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
@@ -279,7 +281,7 @@ public class ActionScript2ClassDetector {
|
||||
return mnDv.getAsString();
|
||||
}
|
||||
|
||||
private boolean checkClassContent(List<GraphTargetItem> parts, HashMap<String, GraphTargetItem> variables, int partsPos, int commandsStartPos, int commandsEndPos, List<GraphTargetItem> commands, List<String> classNamePath, String scriptPath) {
|
||||
private boolean checkClassContent(Map<String, Map<String, Trait>> uninitializedClassTraits, List<GraphTargetItem> parts, HashMap<String, GraphTargetItem> variables, int partsPos, int commandsStartPos, int commandsEndPos, List<GraphTargetItem> commands, List<String> classNamePath, String scriptPath) {
|
||||
|
||||
try {
|
||||
|
||||
@@ -716,7 +718,17 @@ public class ActionScript2ClassDetector {
|
||||
} else {
|
||||
//throw new AssertException("No constructor found");
|
||||
}
|
||||
|
||||
|
||||
String fullClassName = String.join(".", getMembersPath(classNameTargetPath));
|
||||
if (uninitializedClassTraits.containsKey(fullClassName)) {
|
||||
int t = 0;
|
||||
for (String traitName:uninitializedClassTraits.get(fullClassName).keySet()) {
|
||||
Trait trait = uninitializedClassTraits.get(fullClassName).get(traitName);
|
||||
traitsStatic.add(t, trait.isStatic());
|
||||
traits.add(t, new MyEntry<>(new DirectValueActionItem(trait.getName()), null));
|
||||
t++;
|
||||
}
|
||||
}
|
||||
ClassActionItem clsItem = new ClassActionItem(classNameTargetPath, extendsOp, implementsOp, traits, traitsStatic);
|
||||
for (int k = commandsStartPos; k <= commandsEndPos; k++) {
|
||||
commands.remove(commandsStartPos);
|
||||
@@ -729,7 +741,8 @@ public class ActionScript2ClassDetector {
|
||||
commands.remove(commandsStartPos + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// goto next line and check next classes
|
||||
return true;
|
||||
} catch (AssertException ex) {
|
||||
@@ -762,7 +775,7 @@ public class ActionScript2ClassDetector {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkIfVariants(List<GraphTargetItem> commands, HashMap<String, GraphTargetItem> variables, int pos, String scriptPath) {
|
||||
private boolean checkIfVariants(Map<String, Map<String, Trait>> uninitializedClassTraits, List<GraphTargetItem> commands, HashMap<String, GraphTargetItem> variables, int pos, String scriptPath) {
|
||||
|
||||
expandTernars(commands);
|
||||
|
||||
@@ -820,12 +833,12 @@ public class ActionScript2ClassDetector {
|
||||
List<String> classPath = pathToSearchVariant1;
|
||||
classPath.remove(0); //remove _global
|
||||
if (ifItem.onTrue.isEmpty()) { //if can have zero offset as the code is larger than bytes limit. TODO: make this check also for variant 2 (?)
|
||||
if (this.checkClassContent(commands, variables, checkPos + 1, pos, commands.size() - 1, commands, classPath, scriptPath)) {
|
||||
if (this.checkClassContent(uninitializedClassTraits, commands, variables, checkPos + 1, pos, commands.size() - 1, commands, classPath, scriptPath)) {
|
||||
return true;
|
||||
} else {
|
||||
break check_variant1;
|
||||
}
|
||||
} else if (this.checkClassContent(ifItem.onTrue, variables, 0, pos, checkPos, commands, classPath, scriptPath)) {
|
||||
} else if (this.checkClassContent(uninitializedClassTraits, ifItem.onTrue, variables, 0, pos, checkPos, commands, classPath, scriptPath)) {
|
||||
return true;
|
||||
} else {
|
||||
break check_variant1;
|
||||
@@ -892,7 +905,7 @@ public class ActionScript2ClassDetector {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (checkClassContent(parts, variables, checkPos, pos, pos, commands, memPath, scriptPath)) {
|
||||
if (checkClassContent(uninitializedClassTraits, parts, variables, checkPos, pos, pos, commands, memPath, scriptPath)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -901,11 +914,11 @@ public class ActionScript2ClassDetector {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void checkClass(List<GraphTargetItem> commands, HashMap<String, GraphTargetItem> variables, String scriptPath) {
|
||||
public void checkClass(Map<String, Map<String, Trait>> uninitializedClassTraits, List<GraphTargetItem> commands, HashMap<String, GraphTargetItem> variables, String scriptPath) {
|
||||
List<GraphTargetItem> localCommands = new ArrayList<>(commands);
|
||||
boolean changed = false;
|
||||
for (int pos = 0; pos < localCommands.size(); pos++) {
|
||||
if (checkIfVariants(localCommands, variables, pos, scriptPath)) {
|
||||
if (checkIfVariants(uninitializedClassTraits, localCommands, variables, pos, scriptPath)) {
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,180 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2023 JPEXS, All rights reserved.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3.0 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.as2;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
* Index of ActionScript 2 built in classes.
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class ActionScript2Classes {
|
||||
private static final Map<String, Map<String,Trait>> classToTraits = new HashMap<>();
|
||||
private static final Map<String, List<String>> classInheritance = new HashMap<>();
|
||||
|
||||
private static boolean inited = false;
|
||||
|
||||
private synchronized static void initClasses() {
|
||||
if (inited) {
|
||||
return;
|
||||
}
|
||||
InputStream is = ActionScript2Classes.class.getResourceAsStream("/com/jpexs/decompiler/flash/action/as2/as2_classes.txt");
|
||||
try {
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
|
||||
String line;
|
||||
String clsName = "";
|
||||
while((line = br.readLine()) != null) {
|
||||
line = line.trim();
|
||||
if (line.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
String parts[] = line.split(" ");
|
||||
if (parts[0].equals("class")) {
|
||||
clsName = parts[1];
|
||||
classToTraits.put(clsName, new TreeMap<>());
|
||||
continue;
|
||||
}
|
||||
boolean isStatic = false;
|
||||
int pos = 0;
|
||||
if (parts[pos].equals("static")) {
|
||||
isStatic = true;
|
||||
pos++;
|
||||
}
|
||||
if (parts[pos].equals("extends")) {
|
||||
if (!classInheritance.containsKey(clsName)) {
|
||||
classInheritance.put(clsName, new ArrayList<>());
|
||||
}
|
||||
classInheritance.get(clsName).add(parts[pos + 1]);
|
||||
continue;
|
||||
}
|
||||
|
||||
String traitType = parts[pos];
|
||||
String name = parts[pos + 1];
|
||||
String type = parts[pos + 2];
|
||||
Trait trait;
|
||||
switch(traitType) {
|
||||
case "function":
|
||||
trait = new Method(isStatic, name, type, clsName);
|
||||
break;
|
||||
case "var":
|
||||
trait = new Variable(isStatic, name, type, clsName);
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException("Unknown trait type: "+traitType);
|
||||
}
|
||||
classToTraits.get(clsName).put(name, trait);
|
||||
}
|
||||
} catch (UnsupportedEncodingException ex) {
|
||||
//ignored
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(ActionScript2Classes.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
inited = true;
|
||||
}
|
||||
|
||||
|
||||
public static boolean traitExists(String className, String name, boolean withInheritance) {
|
||||
if (!classToTraits.containsKey(className)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (classToTraits.get(className).containsKey(name)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (withInheritance) {
|
||||
if (classInheritance.containsKey(className)) {
|
||||
for (String parentClassName : classInheritance.get(className)) {
|
||||
if (classToTraits.containsKey(parentClassName)) {
|
||||
if (classToTraits.get(parentClassName).containsKey(name)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get class traits, null when class not exists (or is not built-in)
|
||||
* @param className
|
||||
* @param withInheritance
|
||||
* @return
|
||||
*/
|
||||
public static Map<String, Trait> getClassTraits(String className, boolean withInheritance) {
|
||||
initClasses();
|
||||
|
||||
Map<String, Trait> result = new LinkedHashMap<>();
|
||||
if (!classToTraits.containsKey(className)) {
|
||||
return null;
|
||||
}
|
||||
for (String name: classToTraits.get(className).keySet()) {
|
||||
result.put(name, classToTraits.get(className).get(name));
|
||||
}
|
||||
|
||||
if (withInheritance) {
|
||||
if (classInheritance.containsKey(className)) {
|
||||
for (String parentClassName : classInheritance.get(className)) {
|
||||
if (classToTraits.containsKey(parentClassName)) {
|
||||
for (String name: classToTraits.get(parentClassName).keySet()) {
|
||||
if (!result.containsKey(name)) {
|
||||
result.put(name, classToTraits.get(parentClassName).get(name));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static Map<String, Map<String, Trait>> getClassToTraits() {
|
||||
initClasses();
|
||||
return classToTraits;
|
||||
}
|
||||
|
||||
public static Map<String, List<String>> getClassInheritance() {
|
||||
initClasses();
|
||||
return classInheritance;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Map<String, Trait> traits = getClassTraits("flash.filters.BevelFilter", true);
|
||||
if (traits != null) {
|
||||
for(String name:traits.keySet()) {
|
||||
Trait t = traits.get(name);
|
||||
System.out.println(t.toString() + " (" + t.getClassName() +")");
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("trait exists: "+ traitExists("flash.filters.BevelFilter", "quality", false));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2023 JPEXS, All rights reserved.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3.0 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.as2;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class Method implements Trait {
|
||||
private final boolean isStatic;
|
||||
private final String name;
|
||||
private final String returnType;
|
||||
private final String className;
|
||||
|
||||
public Method(boolean isStatic, String name, String returnType, String className) {
|
||||
this.isStatic = isStatic;
|
||||
this.name = name;
|
||||
this.returnType = returnType;
|
||||
this.className = className;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClassName() {
|
||||
return className;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStatic() {
|
||||
return isStatic;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getReturnType() {
|
||||
return returnType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return (isStatic ? "static " : "") + "function " + name + ": " +returnType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCallType() {
|
||||
return returnType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return "Function";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2023 JPEXS, All rights reserved.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3.0 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.as2;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public interface Trait {
|
||||
public boolean isStatic();
|
||||
public String getName();
|
||||
public String getType();
|
||||
public String getCallType();
|
||||
public String getClassName();
|
||||
}
|
||||
+354
@@ -0,0 +1,354 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2023 JPEXS, All rights reserved.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3.0 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.as2;
|
||||
|
||||
import com.jpexs.decompiler.flash.SWF;
|
||||
import com.jpexs.decompiler.flash.action.model.CallMethodActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.DeleteActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.FunctionActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.GetMemberActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.GetVariableActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.NewMethodActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.SetMemberActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.SetVariableActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.clauses.ClassActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.clauses.InterfaceActionItem;
|
||||
import com.jpexs.decompiler.flash.action.swf4.RegisterNumber;
|
||||
import com.jpexs.decompiler.flash.helpers.collections.MyEntry;
|
||||
import com.jpexs.decompiler.flash.tags.DoInitActionTag;
|
||||
import com.jpexs.decompiler.flash.tags.base.ASMSource;
|
||||
import com.jpexs.decompiler.graph.AbstractGraphTargetVisitor;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetVisitorInterface;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class UninitializedClassFieldsDetector {
|
||||
|
||||
/**
|
||||
* Gets path of variable and its getMembers: a.b.c.d => [a,b,c,d]
|
||||
*
|
||||
* @param item
|
||||
* @return List of path or null if not members path
|
||||
*/
|
||||
private List<String> getMembersPath(GraphTargetItem item) {
|
||||
List<String> ret = new ArrayList<>();
|
||||
while (item instanceof GetMemberActionItem) {
|
||||
GetMemberActionItem mem = (GetMemberActionItem) item;
|
||||
if (!(mem.memberName instanceof DirectValueActionItem)) {
|
||||
return null;
|
||||
}
|
||||
DirectValueActionItem dv = ((DirectValueActionItem) mem.memberName);
|
||||
if (!dv.isString()) {
|
||||
return null;
|
||||
}
|
||||
ret.add(0, dv.getAsString());
|
||||
item = mem.object;
|
||||
}
|
||||
if (item instanceof DirectValueActionItem) {
|
||||
DirectValueActionItem dv1 = (DirectValueActionItem) item;
|
||||
if (dv1.value instanceof RegisterNumber) {
|
||||
RegisterNumber rn = (RegisterNumber)dv1.value;
|
||||
if ("this".equals(rn.name)) {
|
||||
ret.add(0, "this");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!((item instanceof GetVariableActionItem))) {
|
||||
return null;
|
||||
}
|
||||
GetVariableActionItem gv = (GetVariableActionItem) item;
|
||||
if (!(gv.name instanceof DirectValueActionItem)) {
|
||||
return null;
|
||||
}
|
||||
DirectValueActionItem dv = ((DirectValueActionItem) gv.name);
|
||||
if (!dv.isString()) {
|
||||
return null;
|
||||
}
|
||||
String varName = dv.getAsString();
|
||||
ret.add(0, varName);
|
||||
return ret;
|
||||
}
|
||||
|
||||
private List<String> getFullPath(GraphTargetItem item) {
|
||||
if (item instanceof GetMemberActionItem) {
|
||||
return getMembersPath(item);
|
||||
}
|
||||
if (item instanceof SetVariableActionItem) {
|
||||
SetVariableActionItem sv = (SetVariableActionItem) item;
|
||||
if (!(sv.name instanceof DirectValueActionItem)) {
|
||||
return null;
|
||||
}
|
||||
DirectValueActionItem nDv = (DirectValueActionItem) sv.name;
|
||||
if (!nDv.isString()) {
|
||||
return null;
|
||||
}
|
||||
List<String> ret = new ArrayList<>();
|
||||
ret.add(nDv.getAsString());
|
||||
return ret;
|
||||
}
|
||||
|
||||
GraphTargetItem name;
|
||||
GraphTargetItem objectName;
|
||||
|
||||
if (item instanceof SetMemberActionItem) {
|
||||
SetMemberActionItem sm = (SetMemberActionItem) item;
|
||||
name = sm.objectName;
|
||||
objectName = sm.object;
|
||||
} else if (item instanceof CallMethodActionItem) {
|
||||
CallMethodActionItem cm = (CallMethodActionItem) item;
|
||||
name = cm.methodName;
|
||||
objectName = cm.scriptObject;
|
||||
} else if (item instanceof NewMethodActionItem) {
|
||||
NewMethodActionItem nm = (NewMethodActionItem) item;
|
||||
name = nm.methodName;
|
||||
objectName = nm.scriptObject;
|
||||
} else if (item instanceof DeleteActionItem) {
|
||||
DeleteActionItem d = (DeleteActionItem) item;
|
||||
name = d.propertyName;
|
||||
objectName = d.object;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!(name instanceof DirectValueActionItem)) {
|
||||
return null;
|
||||
}
|
||||
DirectValueActionItem onDv = (DirectValueActionItem) name;
|
||||
if (!onDv.isString()) {
|
||||
return null;
|
||||
}
|
||||
String currentMemberName = onDv.getAsString();
|
||||
List<String> path = getMembersPath(objectName);
|
||||
if (path == null) {
|
||||
return null;
|
||||
}
|
||||
path.add(currentMemberName);
|
||||
return path;
|
||||
}
|
||||
|
||||
private boolean containsTrait(Map<String, Map<String, Trait>> classTraits, Map<String, List<String>> classInheritance, String className, String name) {
|
||||
if (!classTraits.containsKey(className)) {
|
||||
return false;
|
||||
}
|
||||
if (classTraits.get(className).containsKey(name)) {
|
||||
return true;
|
||||
}
|
||||
for (String parent:classInheritance.get(className)) {
|
||||
if (classTraits.containsKey(parent) && classTraits.get(parent).containsKey(name)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public Map<String, Map<String, Trait>> calculateAs2UninitializedClassTraits(SWF swf) {
|
||||
if (swf.isAS3()) {
|
||||
return new HashMap<>();
|
||||
}
|
||||
final Map<String, Map<String, Trait>> result = new LinkedHashMap<>();
|
||||
Map<String, ASMSource> asms = swf.getASMs(false);
|
||||
|
||||
List<ASMSource> classesAsms = new ArrayList<>();
|
||||
|
||||
final Map<String, Map<String, Trait>> classTraits = new LinkedHashMap<>(ActionScript2Classes.getClassToTraits());
|
||||
final Map<String, List<String>> classInheritance = new HashMap<>(ActionScript2Classes.getClassInheritance());
|
||||
|
||||
//get all assigned traits and inheritance tree
|
||||
for (String key:asms.keySet()) {
|
||||
ASMSource asm = asms.get(key);
|
||||
if (asm instanceof DoInitActionTag) {
|
||||
DoInitActionTag doi = (DoInitActionTag)asm;
|
||||
String exportName = doi.getSwf().getCharacter(doi.getCharacterId()).getExportName();
|
||||
if (exportName != null && exportName.startsWith("__Packages.")) {
|
||||
List<GraphTargetItem> tree = asm.getActionsToTree();
|
||||
for (GraphTargetItem item:tree) {
|
||||
if (item instanceof InterfaceActionItem) {
|
||||
InterfaceActionItem iai = (InterfaceActionItem) item;
|
||||
String className = String.join(".", getMembersPath(iai.name));
|
||||
if (iai.superInterfaces != null) {
|
||||
for (GraphTargetItem imp: iai.superInterfaces) {
|
||||
String imtName = String.join(".", getMembersPath(imp));
|
||||
classInheritance.get(className).add(imtName);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (item instanceof ClassActionItem) {
|
||||
ClassActionItem cai = (ClassActionItem) item;
|
||||
final String className = String.join(".", getMembersPath(cai.className));
|
||||
classInheritance.put(className, new ArrayList<>());
|
||||
if (!classTraits.containsKey(className)) {
|
||||
classTraits.put(className, new LinkedHashMap<>());
|
||||
}
|
||||
for (int i = 0; i <cai.traits.size(); i++) {
|
||||
MyEntry<GraphTargetItem, GraphTargetItem> en = cai.traits.get(i);
|
||||
if (!(en.getKey() instanceof DirectValueActionItem)) {
|
||||
continue;
|
||||
}
|
||||
DirectValueActionItem dv = (DirectValueActionItem) en.getKey();
|
||||
String name = dv.getAsString();
|
||||
GraphTargetItem value = en.getValue();
|
||||
boolean isStatic = cai.traitsStatic.get(i);
|
||||
if (value instanceof FunctionActionItem) {
|
||||
Method m = new Method(isStatic, name, "Unknown" /*FIXME?*/, className);
|
||||
classTraits.get(className).put(name, m);
|
||||
} else {
|
||||
Variable v = new Variable(isStatic, name, name, className);
|
||||
classTraits.get(className).put(name, v);
|
||||
}
|
||||
}
|
||||
if (cai.extendsOp!=null) {
|
||||
String parentClassName = String.join(".", getMembersPath(cai.extendsOp));
|
||||
classInheritance.get(className).add(parentClassName);
|
||||
} else {
|
||||
classInheritance.get(className).add("Object");
|
||||
}
|
||||
if (cai.implementsOp != null) {
|
||||
for (GraphTargetItem imp: cai.implementsOp) {
|
||||
String imtName = String.join(".", getMembersPath(imp));
|
||||
classInheritance.get(className).add(imtName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
classesAsms.add(doi);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Complete inheritance tree
|
||||
for (String className: classInheritance.keySet()) {
|
||||
for (int i = 0; i < classInheritance.get(className).size(); i++) {
|
||||
String parentClass = classInheritance.get(className).get(i);
|
||||
if (classInheritance.containsKey(parentClass)) {
|
||||
for (String p: classInheritance.get(parentClass)) {
|
||||
if (!classInheritance.get(className).contains(p)) {
|
||||
classInheritance.get(className).add(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Detect this.x assigns
|
||||
for (String key:asms.keySet()) {
|
||||
ASMSource asm = asms.get(key);
|
||||
if (asm instanceof DoInitActionTag) {
|
||||
DoInitActionTag doi = (DoInitActionTag)asm;
|
||||
String exportName = doi.getSwf().getCharacter(doi.getCharacterId()).getExportName();
|
||||
if (exportName != null && exportName.startsWith("__Packages.")) {
|
||||
List<GraphTargetItem> tree = asm.getActionsToTree();
|
||||
for (GraphTargetItem item:tree) {
|
||||
if (item instanceof ClassActionItem) {
|
||||
ClassActionItem cai = (ClassActionItem) item;
|
||||
final String className = String.join(".", getMembersPath(cai.className));
|
||||
for (int i = 0; i <cai.traits.size(); i++) {
|
||||
MyEntry<GraphTargetItem, GraphTargetItem> en = cai.traits.get(i);
|
||||
if (!(en.getKey() instanceof DirectValueActionItem)) {
|
||||
continue;
|
||||
}
|
||||
GraphTargetItem value = en.getValue();
|
||||
if (value instanceof GraphTargetItem) {
|
||||
AbstractGraphTargetVisitor visitor = new AbstractGraphTargetVisitor(){
|
||||
@Override
|
||||
public void visit(GraphTargetItem item) {
|
||||
List<String> path = getFullPath(item);
|
||||
if (path != null) {
|
||||
List<String> parent = new ArrayList<>(path);
|
||||
parent.remove(parent.size() - 1);
|
||||
if (parent.size() == 1) {
|
||||
if (parent.get(0).equals("this")) {
|
||||
String name = path.get(path.size() - 1);
|
||||
if (!containsTrait(classTraits, classInheritance, className, name) && (!result.containsKey(className) || !result.get(className).containsKey(name))) {
|
||||
Variable v = new Variable(false, name, null, className);
|
||||
if (!result.containsKey(className)) {
|
||||
result.put(className, new LinkedHashMap<>());
|
||||
}
|
||||
result.get(className).put(name, v);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
visitor.visit(value);
|
||||
value.visitRecursively(visitor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
classesAsms.add(doi);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//getting static classname.x assigns
|
||||
for (String key:asms.keySet()) {
|
||||
ASMSource asm = asms.get(key);
|
||||
List<GraphTargetItem> tree = asm.getActionsToTree();
|
||||
for (GraphTargetItem item:tree) {
|
||||
AbstractGraphTargetVisitor visitor = new AbstractGraphTargetVisitor(){
|
||||
@Override
|
||||
public void visit(GraphTargetItem item) {
|
||||
if (item instanceof SetMemberActionItem) {
|
||||
if (item instanceof SetMemberActionItem) {
|
||||
List<String> path = getFullPath(item);
|
||||
if (path != null) {
|
||||
List<String> parent = new ArrayList<>(path);
|
||||
parent.remove(parent.size() - 1);
|
||||
String name = path.get(path.size() - 1);
|
||||
|
||||
String className = String.join(".", parent);
|
||||
if (classInheritance.containsKey(className)) {
|
||||
//it's a class
|
||||
if (!containsTrait(classTraits, classInheritance, className, name) && (!result.containsKey(className) || !result.get(className).containsKey(name))) {
|
||||
Variable v = new Variable(true, name, null, className);
|
||||
if (!result.containsKey(className)) {
|
||||
result.put(className, new LinkedHashMap<>());
|
||||
}
|
||||
result.get(className).put(name, v);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
visitor.visit(item);
|
||||
item.visitRecursively(visitor);
|
||||
}
|
||||
}
|
||||
|
||||
/*for (String cls:result.keySet()) {
|
||||
System.err.println("class "+cls);
|
||||
for(String name:result.get(cls).keySet()) {
|
||||
System.err.println("- " +result.get(cls).get(name));
|
||||
}
|
||||
}*/
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2023 JPEXS, All rights reserved.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3.0 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.as2;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class Variable implements Trait {
|
||||
private final boolean isStatic;
|
||||
private final String name;
|
||||
private final String type;
|
||||
private final String className;
|
||||
|
||||
public Variable(boolean isStatic, String name, String type, String className) {
|
||||
this.isStatic = isStatic;
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
this.className = className;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStatic() {
|
||||
return isStatic;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
@Override
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return (isStatic ? "static " : "") + "var " + name + ": " + getType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCallType() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClassName() {
|
||||
return className;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
+3
-1
@@ -27,6 +27,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -44,7 +46,7 @@ public class ActionFSCommand2 extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartItem, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartItem, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
long numArgs = popLong(stack);
|
||||
GraphTargetItem command = stack.pop();
|
||||
List<GraphTargetItem> args = new ArrayList<>();
|
||||
|
||||
+3
-1
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.SWFInputStream;
|
||||
import com.jpexs.decompiler.flash.SWFOutputStream;
|
||||
import com.jpexs.decompiler.flash.action.Action;
|
||||
import com.jpexs.decompiler.flash.action.LocalDataArea;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import com.jpexs.decompiler.flash.action.model.StrictModeActionItem;
|
||||
import com.jpexs.decompiler.flash.action.parser.ActionParseException;
|
||||
import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer;
|
||||
@@ -30,6 +31,7 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -75,7 +77,7 @@ public class ActionStrictMode extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartItem, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartItem, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
output.add(new StrictModeActionItem(this, lineStartItem, mode));
|
||||
}
|
||||
}
|
||||
|
||||
+16
-2
@@ -221,8 +221,10 @@ public class ClassActionItem extends ActionItem implements Block {
|
||||
} else {
|
||||
writer.append("var ");
|
||||
writer.append(IdentifiersDeobfuscation.printIdentifier(false, item.getKey().toStringNoQuotes(localData)));
|
||||
writer.append(" = ");
|
||||
item.getValue().toString(writer, localData);
|
||||
if (item.getValue() != null) {
|
||||
writer.append(" = ");
|
||||
item.getValue().toString(writer, localData);
|
||||
}
|
||||
writer.append(";").newLine();
|
||||
}
|
||||
}
|
||||
@@ -262,4 +264,16 @@ public class ClassActionItem extends ActionItem implements Block {
|
||||
public boolean hasReturnValue() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(GraphTargetVisitorInterface visitor) {
|
||||
for (MyEntry<GraphTargetItem, GraphTargetItem> en: traits) {
|
||||
GraphTargetItem value = en.getValue();
|
||||
if (value != null) {
|
||||
visitor.visit(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.action.special;
|
||||
|
||||
import com.jpexs.decompiler.flash.action.Action;
|
||||
import com.jpexs.decompiler.flash.action.LocalDataArea;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import com.jpexs.decompiler.flash.ecma.Undefined;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
@@ -25,6 +26,7 @@ import com.jpexs.decompiler.graph.SecondPassData;
|
||||
import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -54,7 +56,7 @@ public class ActionEnd extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartItem, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartItem, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
//output.add(new SimpleActionTreeItem(this, "end()"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,12 +18,14 @@ package com.jpexs.decompiler.flash.action.special;
|
||||
|
||||
import com.jpexs.decompiler.flash.action.Action;
|
||||
import com.jpexs.decompiler.flash.action.LocalDataArea;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.SecondPassData;
|
||||
import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -50,7 +52,7 @@ public class ActionNop extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartItem, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartItem, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
//output.add(new SimpleActionTreeItem(this, "nop();"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.jpexs.decompiler.flash.action.special;
|
||||
|
||||
import com.jpexs.decompiler.flash.action.LocalDataArea;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.SecondPassData;
|
||||
@@ -24,6 +25,7 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -47,6 +49,6 @@ public class ActionUnknown extends ActionNop {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartItem, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartItem, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.SWFInputStream;
|
||||
import com.jpexs.decompiler.flash.SWFOutputStream;
|
||||
import com.jpexs.decompiler.flash.action.Action;
|
||||
import com.jpexs.decompiler.flash.action.LocalDataArea;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.FSCommandActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.GetURLActionItem;
|
||||
@@ -39,6 +40,7 @@ import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -99,7 +101,7 @@ public class ActionGetURL extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
String fsCommandPrefix = "FSCommand:";
|
||||
if (urlString.startsWith(fsCommandPrefix) && targetString.isEmpty()) {
|
||||
String command = urlString.substring(fsCommandPrefix.length());
|
||||
|
||||
@@ -34,6 +34,8 @@ import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -88,7 +90,7 @@ public class ActionGoToLabel extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
output.add(new GotoLabelActionItem(this, lineStartAction, label));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -84,7 +86,7 @@ public class ActionGotoFrame extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
output.add(new GotoFrameActionItem(this, lineStartAction, frame));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionNextFrame extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
output.add(new NextFrameActionItem(this, lineStartAction));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -55,7 +57,7 @@ public class ActionPlay extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
if (!output.isEmpty() && (output.get(output.size() - 1) instanceof GotoFrameActionItem)) {
|
||||
GotoFrameActionItem gta = (GotoFrameActionItem) output.remove(output.size() - 1);
|
||||
output.add(new GotoFrame2ActionItem(this, lineStartAction, new DirectValueActionItem(gta.frame + 1), false, true, 0));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionPrevFrame extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
output.add(new PrevFrameActionItem(this, lineStartAction));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,8 @@ import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -92,7 +94,7 @@ public class ActionSetTarget extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
output.add(new SetTargetActionItem(this, lineStartAction, targetName));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -52,7 +54,7 @@ public class ActionStop extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
output.add(new StopActionItem(this, lineStartAction));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -51,7 +53,7 @@ public class ActionStopSounds extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
output.add(new StopAllSoundsActionItem(this, lineStartAction));
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -27,6 +27,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -51,7 +53,7 @@ public class ActionToggleQuality extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
output.add(new ToggleHighQualityActionItem(this, lineStartAction));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,8 @@ import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -103,20 +105,20 @@ public class ActionWaitForFrame extends Action implements ActionStore {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) throws InterruptedException {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) throws InterruptedException {
|
||||
GraphTargetItem frameTi = new DirectValueActionItem(null, null, 0, (Long) ((long) frame), new ArrayList<>());
|
||||
List<GraphTargetItem> body;
|
||||
HashMap<String, GraphTargetItem> variablesBackup = new LinkedHashMap<>(variables);
|
||||
HashMap<String, GraphTargetItem> functionsBackup = new LinkedHashMap<>(functions);
|
||||
|
||||
try {
|
||||
body = ActionGraph.translateViaGraph(null, insideDoInitAction, true, regNames, variables, functions, skipped, SWF.DEFAULT_VERSION, staticOperation, path, getCharset());
|
||||
body = ActionGraph.translateViaGraph(uninitializedClassTraits, null, insideDoInitAction, true, regNames, variables, functions, skipped, SWF.DEFAULT_VERSION, staticOperation, path, getCharset());
|
||||
} catch (SecondPassException spe) {
|
||||
variables.clear();
|
||||
variables.putAll(variablesBackup);
|
||||
functions.clear();
|
||||
functions.putAll(functionsBackup);
|
||||
body = ActionGraph.translateViaGraph(spe.getData(), insideDoInitAction, true, regNames, variables, functions, skipped, SWF.DEFAULT_VERSION, staticOperation, path, getCharset());
|
||||
body = ActionGraph.translateViaGraph(uninitializedClassTraits, spe.getData(), insideDoInitAction, true, regNames, variables, functions, skipped, SWF.DEFAULT_VERSION, staticOperation, path, getCharset());
|
||||
}
|
||||
output.add(new IfFrameLoadedActionItem(frameTi, body, this, lineStartAction));
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionAdd extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new AddActionItem(this, lineStartAction, b, a, false));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionAnd extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new AndActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionAsciiToChar extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
stack.push(new AsciiToCharActionItem(this, lineStartAction, a));
|
||||
}
|
||||
|
||||
@@ -29,6 +29,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -61,7 +63,7 @@ public class ActionCall extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
output.add(new CallActionItem(this, lineStartAction, stack.pop()));
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionCharToAscii extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
stack.push(new CharToAsciiActionItem(this, lineStartAction, a));
|
||||
}
|
||||
|
||||
@@ -31,6 +31,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -66,7 +68,7 @@ public class ActionCloneSprite extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem depth = stack.pop();
|
||||
GraphTargetItem source = stack.pop();
|
||||
GraphTargetItem target = stack.pop();
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionDivide extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new DivideActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -55,7 +57,7 @@ public class ActionEndDrag extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
output.add(new StopDragActionItem(this, lineStartAction));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ import com.jpexs.decompiler.graph.SecondPassData;
|
||||
import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -55,7 +57,7 @@ public class ActionEquals extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new EqActionItem(this, lineStartAction, b, a, false));
|
||||
|
||||
@@ -34,6 +34,8 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -69,7 +71,7 @@ public class ActionGetProperty extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem index = stack.pop();
|
||||
GraphTargetItem target = stack.pop();
|
||||
int indexInt = 0;
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -52,7 +54,7 @@ public class ActionGetTime extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
stack.push(new GetTimeActionItem(this, lineStartAction));
|
||||
}
|
||||
|
||||
|
||||
@@ -46,6 +46,8 @@ import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -126,7 +128,7 @@ public class ActionGetURL2 extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem targetString = stack.pop();
|
||||
GraphTargetItem urlString = stack.pop();
|
||||
Integer num = null;
|
||||
|
||||
@@ -34,6 +34,8 @@ import com.jpexs.decompiler.graph.model.LocalData;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -67,7 +69,7 @@ public class ActionGetVariable extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem name = stack.pop();
|
||||
String nameStr;
|
||||
if (name instanceof DirectValueActionItem) {
|
||||
|
||||
@@ -35,6 +35,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -145,7 +147,7 @@ public class ActionGotoFrame2 extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem frame = stack.pop();
|
||||
output.add(new GotoFrame2ActionItem(this, lineStartAction, frame, sceneBiasFlag, playFlag, sceneBias));
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionLess extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new LtActionItem(this, lineStartAction, b, a, false));
|
||||
|
||||
+3
-1
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionMBAsciiToChar extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
stack.push(new MBAsciiToCharActionItem(this, lineStartAction, a));
|
||||
}
|
||||
|
||||
+3
-1
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionMBCharToAscii extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
stack.push(new MBCharToAsciiActionItem(this, lineStartAction, a));
|
||||
}
|
||||
|
||||
+3
-1
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionMBStringExtract extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem count = stack.pop();
|
||||
GraphTargetItem index = stack.pop();
|
||||
GraphTargetItem value = stack.pop();
|
||||
|
||||
+3
-1
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionMBStringLength extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
stack.push(new MBStringLengthActionItem(this, lineStartAction, a));
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionMultiply extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new MultiplyActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.model.NotItem;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionNot extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
stack.push(a.invert(this));
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionOr extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new OrActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -27,6 +27,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -55,7 +57,7 @@ public class ActionPop extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem val = stack.pop();
|
||||
output.add(val);
|
||||
}
|
||||
|
||||
@@ -53,6 +53,8 @@ import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -403,7 +405,7 @@ public class ActionPush extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
int pos = 0;
|
||||
for (Object o : values) {
|
||||
if (o instanceof ConstantIndex) {
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionRandomNumber extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem maximum = stack.pop();
|
||||
stack.push(new RandomNumberActionItem(this, lineStartAction, maximum));
|
||||
}
|
||||
|
||||
@@ -29,6 +29,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -58,7 +60,7 @@ public class ActionRemoveSprite extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem target = stack.pop();
|
||||
output.add(new RemoveSpriteActionItem(this, lineStartAction, target));
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -76,7 +78,7 @@ public class ActionSetProperty extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem value = stack.pop().getThroughDuplicate();
|
||||
GraphTargetItem index = stack.pop().getThroughDuplicate();
|
||||
GraphTargetItem target = stack.pop().getThroughDuplicate();
|
||||
|
||||
@@ -27,6 +27,8 @@ import com.jpexs.decompiler.graph.SecondPassData;
|
||||
import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionSetTarget2 extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem target = stack.pop();
|
||||
output.add(new SetTarget2ActionItem(this, lineStartAction, target));
|
||||
}
|
||||
|
||||
@@ -45,6 +45,8 @@ import com.jpexs.decompiler.graph.model.LocalData;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -74,7 +76,7 @@ public class ActionSetVariable extends Action implements StoreTypeAction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem value = stack.pop().getThroughDuplicate();
|
||||
GraphTargetItem name = stack.pop();
|
||||
String nameStr;
|
||||
|
||||
@@ -32,6 +32,8 @@ import com.jpexs.decompiler.graph.model.TrueItem;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -59,7 +61,7 @@ public class ActionStartDrag extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem target = stack.pop();
|
||||
GraphTargetItem lockCenter = stack.pop();
|
||||
GraphTargetItem constrain = stack.pop();
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionStringAdd extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new StringAddActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionStringEquals extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new StringEqActionItem(this, lineStartAction, b, a));
|
||||
|
||||
+3
-1
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionStringExtract extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem count = stack.pop();
|
||||
GraphTargetItem index = stack.pop();
|
||||
GraphTargetItem value = stack.pop();
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionStringLength extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
stack.push(new StringLengthActionItem(this, lineStartAction, a));
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionStringLess extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new StringLtActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionSubtract extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new SubtractActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionToInteger extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
stack.push(new ToIntegerActionItem(this, lineStartAction, a));
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionTrace extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem value = stack.pop();
|
||||
output.add(new TraceActionItem(this, lineStartAction, value));
|
||||
}
|
||||
|
||||
+5
-3
@@ -41,6 +41,8 @@ import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -149,19 +151,19 @@ public class ActionWaitForFrame2 extends Action implements ActionStore {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) throws InterruptedException {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) throws InterruptedException {
|
||||
GraphTargetItem frame = stack.pop();
|
||||
List<GraphTargetItem> body;
|
||||
HashMap<String, GraphTargetItem> variablesBackup = new LinkedHashMap<>(variables);
|
||||
HashMap<String, GraphTargetItem> functionsBackup = new LinkedHashMap<>(functions);
|
||||
try {
|
||||
body = ActionGraph.translateViaGraph(null, insideDoInitAction, true, regNames, variables, functions, skipped, SWF.DEFAULT_VERSION, staticOperation, path, getCharset());
|
||||
body = ActionGraph.translateViaGraph(uninitializedClassTraits, null, insideDoInitAction, true, regNames, variables, functions, skipped, SWF.DEFAULT_VERSION, staticOperation, path, getCharset());
|
||||
} catch (SecondPassException spe) {
|
||||
variables.clear();
|
||||
variables.putAll(variablesBackup);
|
||||
functions.clear();
|
||||
functions.putAll(functionsBackup);
|
||||
body = ActionGraph.translateViaGraph(spe.getData(), insideDoInitAction, true, regNames, variables, functions, skipped, SWF.DEFAULT_VERSION, staticOperation, path, getCharset());
|
||||
body = ActionGraph.translateViaGraph(uninitializedClassTraits, spe.getData(), insideDoInitAction, true, regNames, variables, functions, skipped, SWF.DEFAULT_VERSION, staticOperation, path, getCharset());
|
||||
}
|
||||
output.add(new IfFrameLoadedActionItem(frame, body, this, lineStartAction));
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionAdd2 extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new AddActionItem(this, lineStartAction, b, a, true));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionBitAnd extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new BitAndActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionBitLShift extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new LShiftActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionBitOr extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new BitOrActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionBitRShift extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new RShiftActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionBitURShift extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new URShiftActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionBitXor extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new BitXorActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -32,6 +32,8 @@ import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -69,7 +71,7 @@ public class ActionCallFunction extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem functionName = stack.pop();
|
||||
long numArgs = popLong(stack);
|
||||
List<GraphTargetItem> args = new ArrayList<>();
|
||||
|
||||
@@ -31,6 +31,8 @@ import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -78,7 +80,7 @@ public class ActionCallMethod extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem methodName = stack.pop();
|
||||
GraphTargetItem scriptObject = stack.pop();
|
||||
long numArgs = popLong(stack);
|
||||
|
||||
@@ -34,6 +34,8 @@ import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -119,6 +121,6 @@ public class ActionConstantPool extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionDecrement extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
stack.push(new DecrementActionItem(this, lineStartAction, a));
|
||||
}
|
||||
|
||||
+3
-1
@@ -41,6 +41,8 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -161,7 +163,7 @@ public class ActionDefineFunction extends Action implements GraphSourceItemConta
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -31,6 +31,8 @@ import com.jpexs.decompiler.graph.model.LocalData;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -60,7 +62,7 @@ public class ActionDefineLocal extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem value = stack.pop();
|
||||
GraphTargetItem name = stack.pop();
|
||||
String nameStr;
|
||||
|
||||
@@ -30,6 +30,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -48,7 +50,7 @@ public class ActionDefineLocal2 extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem name = stack.pop();
|
||||
output.add(new DefineLocalActionItem(this, lineStartAction, name, null));
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -57,7 +59,7 @@ public class ActionDelete extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem propertyName = stack.pop();
|
||||
GraphTargetItem object = stack.pop();
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -63,7 +65,7 @@ public class ActionDelete2 extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem propertyName = stack.pop();
|
||||
|
||||
stack.push(new DeleteActionItem(this, lineStartAction, null, propertyName));
|
||||
|
||||
@@ -31,6 +31,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -69,7 +71,7 @@ public class ActionEnumerate extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem object = stack.pop();
|
||||
stack.push(new EnumeratedValueActionItem());
|
||||
output.add(new EnumerateActionItem(this, lineStartAction, object));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionEquals2 extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new EqActionItem(this, lineStartAction, b, a, true));
|
||||
|
||||
@@ -30,6 +30,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -65,7 +67,7 @@ public class ActionGetMember extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem memberName = stack.pop();
|
||||
GraphTargetItem object = stack.pop();
|
||||
stack.push(new GetMemberActionItem(this, lineStartAction, object, memberName));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionIncrement extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
stack.push(new IncrementActionItem(this, lineStartAction, a));
|
||||
}
|
||||
|
||||
@@ -30,6 +30,8 @@ import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -63,7 +65,7 @@ public class ActionInitArray extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
long numArgs = popLong(stack);
|
||||
List<GraphTargetItem> args = new ArrayList<>();
|
||||
for (int l = 0; l < numArgs; l++) {
|
||||
|
||||
@@ -30,6 +30,8 @@ import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -70,7 +72,7 @@ public class ActionInitObject extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
long numArgs = popLong(stack);
|
||||
List<GraphTargetItem> values = new ArrayList<>();
|
||||
List<GraphTargetItem> names = new ArrayList<>();
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionLess2 extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new LtActionItem(this, lineStartAction, b, a, true));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionModulo extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(new ModuloActionItem(this, lineStartAction, b, a));
|
||||
|
||||
@@ -31,6 +31,8 @@ import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -74,7 +76,7 @@ public class ActionNewMethod extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem methodName = stack.pop();
|
||||
GraphTargetItem scriptObject = stack.pop();
|
||||
long numArgs = popLong(stack);
|
||||
|
||||
@@ -30,6 +30,8 @@ import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -74,7 +76,7 @@ public class ActionNewObject extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem objectName = stack.pop();
|
||||
long numArgs = popLong(stack);
|
||||
List<GraphTargetItem> args = new ArrayList<>();
|
||||
|
||||
+3
-1
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.decompiler.graph.model.DuplicateItem;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -56,7 +58,7 @@ public class ActionPushDuplicate extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem value = stack.peek();
|
||||
stack.push(new DuplicateItem(this, lineStartAction, value));
|
||||
value.getMoreSrc().add(new GraphSourceItemPos(this, 0));
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -58,7 +60,7 @@ public class ActionReturn extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem value = stack.pop();
|
||||
output.add(new ReturnActionItem(this, lineStartAction, value));
|
||||
}
|
||||
|
||||
@@ -41,6 +41,8 @@ import com.jpexs.decompiler.graph.model.CompoundableBinaryOp;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -75,7 +77,7 @@ public class ActionSetMember extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem value = stack.pop().getThroughDuplicate();
|
||||
GraphTargetItem memberName = stack.pop();
|
||||
GraphTargetItem object = stack.pop();
|
||||
|
||||
@@ -27,6 +27,8 @@ import com.jpexs.decompiler.graph.SecondPassData;
|
||||
import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -58,7 +60,7 @@ public class ActionStackSwap extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem a = stack.pop();
|
||||
GraphTargetItem b = stack.pop();
|
||||
stack.push(a);
|
||||
|
||||
+3
-2
@@ -27,7 +27,6 @@ import com.jpexs.decompiler.flash.action.model.ConstantPool;
|
||||
import com.jpexs.decompiler.flash.action.model.DecrementActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.EnumeratedValueActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.EnumerationAssignmentValueActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.IncrementActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.PostDecrementActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.PostIncrementActionItem;
|
||||
@@ -46,6 +45,8 @@ import com.jpexs.decompiler.graph.model.CompoundableBinaryOp;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -103,7 +104,7 @@ public class ActionStoreRegister extends Action implements StoreTypeAction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem value = stack.pop();
|
||||
RegisterNumber rn = new RegisterNumber(registerNumber);
|
||||
if (regNames.containsKey(registerNumber)) {
|
||||
|
||||
@@ -29,6 +29,8 @@ import com.jpexs.decompiler.graph.TranslateStack;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import com.jpexs.decompiler.flash.action.as2.Trait;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -65,7 +67,7 @@ public class ActionTargetPath extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
public void translate(Map<String, Map<String, Trait>> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
GraphTargetItem object = stack.pop();
|
||||
stack.push(new TargetPathActionItem(this, lineStartAction, object));
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user