mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-29 02:36:00 +00:00
AS1/2: Properly handling of Flash7 scripts exported to Flash5/6 - ActionDefineFunction local registers
This commit is contained in:
@@ -2035,7 +2035,7 @@ public final class SWF implements SWFContainerItem, Timelined {
|
||||
ip = code.adr2pos(addr);
|
||||
addr += size;
|
||||
int nextip = code.adr2pos(addr);
|
||||
getVariables(aLocalData.insideDoInitAction, variables, functions, strings, usageTypes, new ActionGraphSource(path, aLocalData.insideDoInitAction, code.getActions().subList(ip, nextip), code.version, new HashMap<>(), new HashMap<>(), new HashMap<>()), 0, path + (cntName == null ? "" : "/" + cntName));
|
||||
getVariables(aLocalData.insideDoInitAction, variables, functions, strings, usageTypes, new ActionGraphSource(path, aLocalData.insideDoInitAction, (ins instanceof ActionDefineFunction), code.getActions().subList(ip, nextip), code.version, new HashMap<>(), new HashMap<>(), new HashMap<>()), 0, path + (cntName == null ? "" : "/" + cntName));
|
||||
ip = nextip;
|
||||
}
|
||||
List<List<GraphTargetItem>> r = new ArrayList<>();
|
||||
@@ -2131,35 +2131,35 @@ public final class SWF implements SWFContainerItem, Timelined {
|
||||
getVariables(null, localData, new TranslateStack(path), new ArrayList<>(), code, code.adr2pos(addr), variables, functions, strings, new ArrayList<>(), usageTypes, path);
|
||||
}
|
||||
|
||||
private List<MyEntry<DirectValueActionItem, ConstantPool>> getVariables(List<MyEntry<DirectValueActionItem, ConstantPool>> variables, HashMap<ASMSource, ActionList> actionsMap, List<GraphSourceItem> functions, HashMap<DirectValueActionItem, ConstantPool> strings, HashMap<DirectValueActionItem, String> usageTypes, ASMSource src, String path) throws InterruptedException {
|
||||
private List<MyEntry<DirectValueActionItem, ConstantPool>> getVariables(boolean insideDefineFunction1, List<MyEntry<DirectValueActionItem, ConstantPool>> variables, HashMap<ASMSource, ActionList> actionsMap, List<GraphSourceItem> functions, HashMap<DirectValueActionItem, ConstantPool> strings, HashMap<DirectValueActionItem, String> usageTypes, ASMSource src, String path) throws InterruptedException {
|
||||
List<MyEntry<DirectValueActionItem, ConstantPool>> ret = new ArrayList<>();
|
||||
ActionList actions = src.getActions();
|
||||
actionsMap.put(src, actions);
|
||||
boolean insideDoInitAction = src instanceof DoInitActionTag;
|
||||
getVariables(insideDoInitAction, variables, functions, strings, usageTypes, new ActionGraphSource(path, insideDoInitAction, actions, version, new HashMap<>(), new HashMap<>(), new HashMap<>()), 0, path);
|
||||
getVariables(insideDoInitAction, variables, functions, strings, usageTypes, new ActionGraphSource(path, insideDoInitAction, insideDefineFunction1, actions, version, new HashMap<>(), new HashMap<>(), new HashMap<>()), 0, path);
|
||||
return ret;
|
||||
}
|
||||
|
||||
private void getVariables(Iterable<Tag> tags, String path, List<MyEntry<DirectValueActionItem, ConstantPool>> variables, HashMap<ASMSource, ActionList> actionsMap, List<GraphSourceItem> functions, HashMap<DirectValueActionItem, ConstantPool> strings, HashMap<DirectValueActionItem, String> usageTypes) throws InterruptedException {
|
||||
private void getVariables(boolean insideDefineFunction1, Iterable<Tag> tags, String path, List<MyEntry<DirectValueActionItem, ConstantPool>> variables, HashMap<ASMSource, ActionList> actionsMap, List<GraphSourceItem> functions, HashMap<DirectValueActionItem, ConstantPool> strings, HashMap<DirectValueActionItem, String> usageTypes) throws InterruptedException {
|
||||
List<String> processed = new ArrayList<>();
|
||||
for (Tag t : tags) {
|
||||
String subPath = path + "/" + t.toString();
|
||||
if (t instanceof ASMSource) {
|
||||
addVariable((ASMSource) t, subPath, processed, variables, actionsMap, functions, strings, usageTypes);
|
||||
addVariable(insideDefineFunction1, (ASMSource) t, subPath, processed, variables, actionsMap, functions, strings, usageTypes);
|
||||
}
|
||||
if (t instanceof ASMSourceContainer) {
|
||||
List<String> processed2 = new ArrayList<>();
|
||||
for (ASMSource asm : ((ASMSourceContainer) t).getSubItems()) {
|
||||
addVariable(asm, subPath + "/" + asm.toString(), processed2, variables, actionsMap, functions, strings, usageTypes);
|
||||
addVariable(insideDefineFunction1, asm, subPath + "/" + asm.toString(), processed2, variables, actionsMap, functions, strings, usageTypes);
|
||||
}
|
||||
}
|
||||
if (t instanceof DefineSpriteTag) {
|
||||
getVariables(((DefineSpriteTag) t).getTags(), path + "/" + t.toString(), variables, actionsMap, functions, strings, usageTypes);
|
||||
getVariables(insideDefineFunction1, ((DefineSpriteTag) t).getTags(), path + "/" + t.toString(), variables, actionsMap, functions, strings, usageTypes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addVariable(ASMSource asm, String path, List<String> processed, List<MyEntry<DirectValueActionItem, ConstantPool>> variables, HashMap<ASMSource, ActionList> actionsMap, List<GraphSourceItem> functions, HashMap<DirectValueActionItem, ConstantPool> strings, HashMap<DirectValueActionItem, String> usageTypes) throws InterruptedException {
|
||||
private void addVariable(boolean insideDefineFunction1, ASMSource asm, String path, List<String> processed, List<MyEntry<DirectValueActionItem, ConstantPool>> variables, HashMap<ASMSource, ActionList> actionsMap, List<GraphSourceItem> functions, HashMap<DirectValueActionItem, ConstantPool> strings, HashMap<DirectValueActionItem, String> usageTypes) throws InterruptedException {
|
||||
int pos = 1;
|
||||
String infPath2 = path;
|
||||
while (processed.contains(infPath2)) {
|
||||
@@ -2168,7 +2168,7 @@ public final class SWF implements SWFContainerItem, Timelined {
|
||||
}
|
||||
processed.add(infPath2);
|
||||
informListeners("getVariables", infPath2);
|
||||
getVariables(variables, actionsMap, functions, strings, usageTypes, asm, path);
|
||||
getVariables(insideDefineFunction1, variables, actionsMap, functions, strings, usageTypes, asm, path);
|
||||
}
|
||||
|
||||
public boolean as3StringConstantExists(String str) {
|
||||
@@ -2257,7 +2257,7 @@ public final class SWF implements SWFContainerItem, Timelined {
|
||||
HashMap<DirectValueActionItem, String> usageTypes = new HashMap<>();
|
||||
|
||||
int ret = 0;
|
||||
getVariables(getTags(), "", allVariableNames, actionsMap, allFunctions, allStrings, usageTypes);
|
||||
getVariables(false, getTags(), "", allVariableNames, actionsMap, allFunctions, allStrings, usageTypes);
|
||||
informListeners("rename", "");
|
||||
int fc = 0;
|
||||
for (MyEntry<DirectValueActionItem, ConstantPool> it : allVariableNames) {
|
||||
@@ -2292,7 +2292,7 @@ public final class SWF implements SWFContainerItem, Timelined {
|
||||
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*/, dia.getActions(), version, staticOperation, ""/*FIXME*/);
|
||||
dec = Action.actionsToTree(true /*Yes, inside doInitAction*/, false, dia.getActions(), version, staticOperation, ""/*FIXME*/);
|
||||
} catch (EmptyStackException ex) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -760,7 +760,7 @@ public abstract class Action implements GraphSourceItem {
|
||||
* @param path the value of path
|
||||
* @throws java.lang.InterruptedException
|
||||
*/
|
||||
public void translate(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(boolean insideDoInitAction, boolean insideDefineFunction1, 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
|
||||
@@ -836,8 +836,8 @@ public abstract class Action implements GraphSourceItem {
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static List<GraphTargetItem> actionsToTree(boolean insideDoInitAction, List<Action> actions, int version, int staticOperation, String path) throws InterruptedException {
|
||||
return actionsToTree(insideDoInitAction, new HashMap<>(), new HashMap<>(), new HashMap<>(), actions, version, staticOperation, path);
|
||||
public static List<GraphTargetItem> actionsToTree(boolean insideDoInitAction, boolean insideDefineFunction1, List<Action> actions, int version, int staticOperation, String path) throws InterruptedException {
|
||||
return actionsToTree(insideDoInitAction, insideDefineFunction1, new HashMap<>(), new HashMap<>(), new HashMap<>(), actions, version, staticOperation, path);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -863,7 +863,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, new HashMap<>(), new HashMap<>(), new HashMap<>(), actions, version, staticOperation, path);
|
||||
List<GraphTargetItem> tree = actionsToTree(insideDoInitAction, false, new HashMap<>(), new HashMap<>(), new HashMap<>(), actions, version, staticOperation, path);
|
||||
SWFDecompilerPlugin.fireActionTreeCreated(tree, swf);
|
||||
if (Configuration.autoDeobfuscate.get()) {
|
||||
new ActionDeobfuscator().actionTreeCreated(tree, swf);
|
||||
@@ -921,8 +921,8 @@ public abstract class Action implements GraphSourceItem {
|
||||
* @return List of treeItems
|
||||
* @throws java.lang.InterruptedException
|
||||
*/
|
||||
public static List<GraphTargetItem> actionsToTree(boolean insideDoInitAction, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, List<Action> actions, int version, int staticOperation, String path) throws InterruptedException {
|
||||
return ActionGraph.translateViaGraph(insideDoInitAction, regNames, variables, functions, actions, version, staticOperation, path);
|
||||
public static List<GraphTargetItem> actionsToTree(boolean insideDoInitAction, boolean insideDefineFunction1, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, List<Action> actions, int version, int staticOperation, String path) throws InterruptedException {
|
||||
return ActionGraph.translateViaGraph(insideDoInitAction, insideDefineFunction1, regNames, variables, functions, actions, version, staticOperation, path);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -934,7 +934,7 @@ public abstract class Action implements GraphSourceItem {
|
||||
}
|
||||
expectedSize += getStackPushCount(localData, stack);*/
|
||||
|
||||
translate(aLocalData.insideDoInitAction, aLocalData.lineStartAction, stack, output, aLocalData.regNames, aLocalData.variables, aLocalData.functions, staticOperation, path);
|
||||
translate(aLocalData.insideDoInitAction, aLocalData.insideDefineFunction1, 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");
|
||||
}*/
|
||||
@@ -970,7 +970,7 @@ public abstract class Action implements GraphSourceItem {
|
||||
this.ignored = ignored;
|
||||
}
|
||||
|
||||
public static List<GraphTargetItem> actionsPartToTree(boolean insideDoInitAction, Reference<GraphSourceItem> fi, HashMap<Integer, String> registerNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, TranslateStack stack, List<Action> actions, int start, int end, int version, int staticOperation, String path) throws InterruptedException {
|
||||
public static List<GraphTargetItem> actionsPartToTree(boolean insideDoInitAction, boolean insideDefineFunction1, Reference<GraphSourceItem> fi, HashMap<Integer, String> registerNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, TranslateStack stack, List<Action> actions, int start, int end, int version, int staticOperation, String path) throws InterruptedException {
|
||||
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) + ")") : ""});
|
||||
}
|
||||
@@ -1044,7 +1044,7 @@ public abstract class Action implements GraphSourceItem {
|
||||
}
|
||||
}
|
||||
}
|
||||
out = ActionGraph.translateViaGraph(insideDoInitAction, regNames, variables2, functions, actions.subList(adr2ip(actions, endAddr), adr2ip(actions, endAddr + size)), version, staticOperation, path + (cntName == null ? "" : "/" + cntName));
|
||||
out = ActionGraph.translateViaGraph(insideDoInitAction, (cnt instanceof ActionDefineFunction), regNames, variables2, functions, actions.subList(adr2ip(actions, endAddr), adr2ip(actions, endAddr + size)), version, staticOperation, path + (cntName == null ? "" : "/" + cntName));
|
||||
} catch (OutOfMemoryError | TranslateException | StackOverflowError ex) {
|
||||
logger.log(Level.SEVERE, "Decompilation error in: " + path, ex);
|
||||
if (ex instanceof OutOfMemoryError) {
|
||||
|
||||
@@ -0,0 +1,225 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2018 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;
|
||||
|
||||
import com.jpexs.decompiler.flash.action.swf4.ActionJump;
|
||||
import com.jpexs.decompiler.flash.action.swf4.ActionPop;
|
||||
import com.jpexs.decompiler.flash.action.swf4.ActionPush;
|
||||
import com.jpexs.decompiler.flash.action.swf4.RegisterNumber;
|
||||
import com.jpexs.decompiler.flash.action.swf5.ActionReturn;
|
||||
import com.jpexs.decompiler.flash.action.swf5.ActionStoreRegister;
|
||||
import com.jpexs.decompiler.flash.ecma.Undefined;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
/**
|
||||
* Cleaner for ActionDefineFunction push registers. From Flash 7 onwards,
|
||||
* functions are stored as ActionDefineFunction2 with use up to 255 local
|
||||
* registers. When exporting SWF to lower formats Flash5-Flash6 in Flash IDE
|
||||
* (for example MX 2004), all ActionDefineFunction2 are replaced with
|
||||
* ActionDefineFunction, and it also use local registers (4 of them are
|
||||
* available). The code of ActionDefineFunction is also modified that it pushes
|
||||
* all previous values of registers on the code start and pops them back on code
|
||||
* exit or when return action shows up. All returns are replaced with jump to
|
||||
* popping part. This makes code flow tangled and the decompiler cannot properly
|
||||
* handle it. The cleaner will fix this mess.
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class ActionDefineFunctionPushRegistersCleaner {
|
||||
|
||||
public List<Action> cleanPushRegisters(List<Action> code) {
|
||||
ActionList actionList = new ActionList(code);
|
||||
|
||||
if (actionList.isEmpty()) {
|
||||
return code;
|
||||
}
|
||||
|
||||
/*
|
||||
ON BEGINNING:
|
||||
Push register1 register2 normalval
|
||||
*/
|
||||
List<Integer> pushedRegisters = new ArrayList<>();
|
||||
int pos = 0;
|
||||
loopregs:
|
||||
while (actionList.get(pos) instanceof ActionPush) {
|
||||
ActionPush ap = (ActionPush) actionList.get(pos);
|
||||
for (int i = 0; i < ap.values.size(); i++) {
|
||||
if (ap.values.get(i) instanceof RegisterNumber) {
|
||||
RegisterNumber rn = (RegisterNumber) ap.values.get(i);
|
||||
pushedRegisters.add(rn.number);
|
||||
} else {
|
||||
break loopregs;
|
||||
}
|
||||
}
|
||||
pos++;
|
||||
}
|
||||
if (pushedRegisters.isEmpty()) {
|
||||
return code;
|
||||
}
|
||||
|
||||
/*
|
||||
ON FINISH:
|
||||
|
||||
when function returns something:
|
||||
StoreRegister 0 ;return value
|
||||
Pop
|
||||
StoreRegister 2
|
||||
Pop
|
||||
StoreRegister 1
|
||||
Pop
|
||||
Push register0
|
||||
Return
|
||||
|
||||
when function does not return anything:
|
||||
StoreRegister 2
|
||||
Pop
|
||||
StoreRegister 1
|
||||
Pop
|
||||
|
||||
|
||||
*/
|
||||
int returnReg = -1;
|
||||
pos = actionList.size() - 1;
|
||||
if (actionList.get(pos) instanceof ActionReturn) {
|
||||
pos--;
|
||||
if (pos == -1) {
|
||||
return code;
|
||||
}
|
||||
if (!(actionList.get(pos) instanceof ActionPush)) {
|
||||
return code;
|
||||
}
|
||||
ActionPush pu = (ActionPush) actionList.get(pos);
|
||||
if (pu.values.size() != 1) {
|
||||
return code;
|
||||
}
|
||||
if (!(pu.values.get(0) instanceof RegisterNumber)) {
|
||||
return code;
|
||||
}
|
||||
RegisterNumber rn = (RegisterNumber) pu.values.get(0);
|
||||
returnReg = rn.number;
|
||||
pos--;
|
||||
if (pos == -1) {
|
||||
return code;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < pushedRegisters.size(); i++) {
|
||||
if (!(actionList.get(pos) instanceof ActionPop)) {
|
||||
return code;
|
||||
}
|
||||
pos--;
|
||||
if (pos == -1) {
|
||||
return code;
|
||||
}
|
||||
if (!(actionList.get(pos) instanceof ActionStoreRegister)) {
|
||||
return code;
|
||||
}
|
||||
ActionStoreRegister asr = (ActionStoreRegister) actionList.get(pos);
|
||||
int expectedReg = pushedRegisters.get(i);
|
||||
if (asr.registerNumber != expectedReg) {
|
||||
return code;
|
||||
}
|
||||
pos--;
|
||||
if (pos == -1) {
|
||||
return code;
|
||||
}
|
||||
}
|
||||
|
||||
Set<Integer> refPos = new TreeSet<>(new Comparator<Integer>() {
|
||||
@Override
|
||||
public int compare(Integer o1, Integer o2) {
|
||||
return o2 - o1; //biggest first
|
||||
}
|
||||
});
|
||||
if (returnReg > -1) {
|
||||
if (!(actionList.get(pos) instanceof ActionPop)) {
|
||||
return code;
|
||||
}
|
||||
pos--;
|
||||
if (pos == -1) {
|
||||
return code;
|
||||
}
|
||||
if (!(actionList.get(pos) instanceof ActionStoreRegister)) {
|
||||
return code;
|
||||
}
|
||||
ActionStoreRegister asr = (ActionStoreRegister) actionList.get(pos);
|
||||
int expectedReg = returnReg;
|
||||
if (asr.registerNumber != expectedReg) {
|
||||
return code;
|
||||
}
|
||||
|
||||
if (!(actionList.get(pos - 1) instanceof ActionJump)) {
|
||||
refPos.add(pos - 1);
|
||||
}
|
||||
Iterator<Action> ait = actionList.getReferencesFor(asr);
|
||||
while (ait.hasNext()) {
|
||||
Action a = ait.next();
|
||||
refPos.add(actionList.indexOf(a));
|
||||
}
|
||||
pos--;
|
||||
}
|
||||
|
||||
//process code...
|
||||
//TODO: make this somehow create new list instead of modifying current one
|
||||
for (Integer jp : refPos) {
|
||||
int index = jp;
|
||||
Action a = actionList.get(index);
|
||||
if (a instanceof ActionJump) {
|
||||
actionList.remove(index);
|
||||
actionList.addAction(index, new ActionReturn());
|
||||
} else if ((a instanceof ActionPush) && ((ActionPush) a).values.size() == 1 && ((ActionPush) a).values.get(0) == Undefined.INSTANCE) {
|
||||
actionList.remove(a);
|
||||
} else {
|
||||
actionList.addAction(index + 1, new ActionReturn());
|
||||
pos++;
|
||||
}
|
||||
}
|
||||
|
||||
int posFromEnd = actionList.size() - pos - 1;
|
||||
|
||||
actionList.removeAction(actionList.size() - posFromEnd, posFromEnd);
|
||||
|
||||
pos = 0;
|
||||
int removedCnt = pushedRegisters.size();
|
||||
loopregs2:
|
||||
while (actionList.get(pos) instanceof ActionPush) {
|
||||
ActionPush ap = (ActionPush) actionList.get(pos);
|
||||
for (int i = 0; i < ap.values.size(); i++) {
|
||||
if (ap.values.get(i) instanceof RegisterNumber) {
|
||||
ap.values.remove(i);
|
||||
i--;
|
||||
removedCnt--;
|
||||
if (ap.values.isEmpty()) {
|
||||
actionList.removeAction(pos);
|
||||
}
|
||||
if (removedCnt == 0) {
|
||||
break loopregs2;
|
||||
}
|
||||
} else {
|
||||
break loopregs2;
|
||||
}
|
||||
}
|
||||
pos++;
|
||||
}
|
||||
|
||||
return actionList;
|
||||
}
|
||||
}
|
||||
@@ -65,8 +65,8 @@ public class ActionGraph extends Graph {
|
||||
|
||||
private boolean insideDoInitAction;
|
||||
|
||||
public ActionGraph(String path, boolean insideDoInitAction, List<Action> code, HashMap<Integer, String> registerNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int version) {
|
||||
super(new ActionGraphSource(path, insideDoInitAction, code, version, registerNames, variables, functions), new ArrayList<>());
|
||||
public ActionGraph(String path, boolean insideDoInitAction, boolean insideDefineFunction1, List<Action> code, HashMap<Integer, String> registerNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int version) {
|
||||
super(new ActionGraphSource(path, insideDoInitAction, insideDefineFunction1, code, version, registerNames, variables, functions), new ArrayList<>());
|
||||
this.insideDoInitAction = insideDoInitAction;
|
||||
}
|
||||
|
||||
@@ -74,9 +74,17 @@ public class ActionGraph extends Graph {
|
||||
return insideDoInitAction;
|
||||
}
|
||||
|
||||
public static List<GraphTargetItem> translateViaGraph(boolean insideDoInitAction, HashMap<Integer, String> registerNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, List<Action> code, int version, int staticOperation, String path) throws InterruptedException {
|
||||
@Override
|
||||
protected void afterPopupateAllParts(Set<GraphPart> allParts) {
|
||||
|
||||
ActionGraph g = new ActionGraph(path, insideDoInitAction, code, registerNames, variables, functions, version);
|
||||
}
|
||||
|
||||
public static List<GraphTargetItem> translateViaGraph(boolean insideDoInitAction, boolean insideDefineFunction1, HashMap<Integer, String> registerNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, List<Action> code, int version, int staticOperation, String path) throws InterruptedException {
|
||||
if (insideDefineFunction1) {
|
||||
ActionDefineFunctionPushRegistersCleaner fixer = new ActionDefineFunctionPushRegistersCleaner();
|
||||
code = fixer.cleanPushRegisters(code);
|
||||
}
|
||||
ActionGraph g = new ActionGraph(path, insideDoInitAction, insideDefineFunction1, code, registerNames, variables, functions, version);
|
||||
ActionLocalData localData = new ActionLocalData(insideDoInitAction, registerNames);
|
||||
g.init(localData);
|
||||
return g.translate(localData, staticOperation, path);
|
||||
|
||||
@@ -48,19 +48,22 @@ public class ActionGraphSource extends GraphSource {
|
||||
|
||||
private final boolean insideDoInitAction;
|
||||
|
||||
private final boolean insideDefineFunction1;
|
||||
|
||||
private final String path;
|
||||
|
||||
public List<Action> getActions() {
|
||||
return actions;
|
||||
}
|
||||
|
||||
public ActionGraphSource(String path, boolean insideDoInitAction, List<Action> actions, int version, HashMap<Integer, String> registerNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions) {
|
||||
public ActionGraphSource(String path, boolean insideDoInitAction, boolean insideDefineFunction1, List<Action> actions, int version, HashMap<Integer, String> registerNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions) {
|
||||
this.actions = actions;
|
||||
this.version = version;
|
||||
this.registerNames = registerNames;
|
||||
this.variables = variables;
|
||||
this.functions = functions;
|
||||
this.insideDoInitAction = insideDoInitAction;
|
||||
this.insideDefineFunction1 = insideDefineFunction1;
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
@@ -87,7 +90,7 @@ public class ActionGraphSource extends GraphSource {
|
||||
public List<GraphTargetItem> translatePart(GraphPart part, BaseLocalData localData, TranslateStack stack, int start, int end, int staticOperation, String path) throws InterruptedException {
|
||||
Reference<GraphSourceItem> fi = new Reference<>(localData.lineStartInstruction);
|
||||
|
||||
List<GraphTargetItem> r = Action.actionsPartToTree(this.insideDoInitAction, fi, registerNames, variables, functions, stack, actions, start, end, version, staticOperation, path);
|
||||
List<GraphTargetItem> r = Action.actionsPartToTree(this.insideDoInitAction, this.insideDefineFunction1, fi, registerNames, variables, functions, stack, actions, start, end, version, staticOperation, path);
|
||||
localData.lineStartInstruction = fi.getVal();
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -37,6 +37,8 @@ public class ActionLocalData extends BaseLocalData {
|
||||
|
||||
public boolean insideDoInitAction;
|
||||
|
||||
public boolean insideDefineFunction1 = false;
|
||||
|
||||
public ActionLocalData(boolean insideDoInitAction) {
|
||||
regNames = new HashMap<>();
|
||||
variables = new HashMap<>();
|
||||
|
||||
@@ -42,7 +42,7 @@ public class ActionFSCommand2 extends Action {
|
||||
return "FSCommand2";
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -73,7 +73,7 @@ public class ActionStrictMode extends Action {
|
||||
return true; //TODO?
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ public class ActionEnd extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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()"));
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ public class ActionNop extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();"));
|
||||
}
|
||||
|
||||
@@ -45,6 +45,6 @@ public class ActionUnknown extends ActionNop {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, GraphSourceItem lineStartItem, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ public class ActionGetURL extends Action {
|
||||
return "GetUrl \"" + Helper.escapeActionScriptString(urlString) + "\" \"" + Helper.escapeActionScriptString(targetString) + "\"";
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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()) {
|
||||
|
||||
@@ -86,7 +86,7 @@ public class ActionGoToLabel extends Action {
|
||||
label = lexString(lexer);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ public class ActionGotoFrame extends Action {
|
||||
frame = (int) lexLong(lexer);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionNextFrame extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ public class ActionPlay extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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);
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionPrevFrame extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ public class ActionSetTarget extends Action {
|
||||
targetName = lexString(lexer);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ public class ActionStop extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ public class ActionStopSounds extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ public class ActionToggleQuality extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
}
|
||||
|
||||
@@ -100,9 +100,9 @@ public class ActionWaitForFrame extends Action implements ActionStore {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(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(boolean insideDoInitAction, boolean insideDefineFunction1, 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, new Long(frame), new ArrayList<>());
|
||||
List<GraphTargetItem> body = ActionGraph.translateViaGraph(insideDoInitAction, regNames, variables, functions, skipped, SWF.DEFAULT_VERSION, staticOperation, path);
|
||||
List<GraphTargetItem> body = ActionGraph.translateViaGraph(insideDoInitAction, insideDefineFunction1, regNames, variables, functions, skipped, SWF.DEFAULT_VERSION, staticOperation, path);
|
||||
output.add(new IfFrameLoadedActionItem(frameTi, body, this, lineStartAction));
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,8 @@
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.swf4;
|
||||
|
||||
import com.jpexs.decompiler.flash.BaseLocalData;
|
||||
@@ -53,7 +54,7 @@ public class ActionAdd extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionAnd extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionAsciiToChar extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -58,7 +58,7 @@ public class ActionCall extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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()));
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionCharToAscii extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -64,7 +64,7 @@ public class ActionCloneSprite extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(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(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionDivide extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -52,7 +52,7 @@ public class ActionEndDrag extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionEquals extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -64,7 +64,7 @@ public class ActionGetProperty extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -49,7 +49,7 @@ public class ActionGetTime extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
}
|
||||
|
||||
@@ -124,7 +124,7 @@ public class ActionGetURL2 extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -64,7 +64,7 @@ public class ActionGetVariable extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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;
|
||||
|
||||
@@ -143,7 +143,7 @@ public class ActionGotoFrame2 extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionLess extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionMBAsciiToChar extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionMBCharToAscii extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionMBStringExtract extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionMBStringLength extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionMultiply extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionNot extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionOr extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -52,7 +52,7 @@ public class ActionPop extends Action {
|
||||
return "Pop";
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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);
|
||||
|
||||
@@ -389,7 +389,7 @@ public class ActionPush extends Action {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(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(boolean insideDoInitAction, boolean insideDefineFunction1, 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) {
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionRandomNumber extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -55,7 +55,7 @@ public class ActionRemoveSprite extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -70,7 +70,7 @@ public class ActionSetProperty extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -54,7 +54,7 @@ public class ActionSetTarget2 extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -68,7 +68,7 @@ public class ActionSetVariable extends Action implements StoreTypeAction {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -54,7 +54,7 @@ public class ActionStartDrag extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionStringAdd extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionStringEquals extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionStringExtract extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionStringLength extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionStringLess extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionSubtract extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionToInteger extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionTrace extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -146,9 +146,9 @@ public class ActionWaitForFrame2 extends Action implements ActionStore {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(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(boolean insideDoInitAction, boolean insideDefineFunction1, 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 = ActionGraph.translateViaGraph(insideDoInitAction, regNames, variables, functions, skipped, SWF.DEFAULT_VERSION, staticOperation, path);
|
||||
List<GraphTargetItem> body = ActionGraph.translateViaGraph(insideDoInitAction, insideDefineFunction1, regNames, variables, functions, skipped, SWF.DEFAULT_VERSION, staticOperation, path);
|
||||
output.add(new IfFrameLoadedActionItem(frame, body, this, lineStartAction));
|
||||
}
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionAdd2 extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionBitAnd extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionBitLShift extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionBitOr extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionBitRShift extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionBitURShift extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionBitXor extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -66,7 +66,7 @@ public class ActionCallFunction extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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);
|
||||
|
||||
@@ -75,7 +75,7 @@ public class ActionCallMethod extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -117,6 +117,6 @@ public class ActionConstantPool extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionDecrement extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -159,7 +159,7 @@ public class ActionDefineFunction extends Action implements GraphSourceItemConta
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, GraphSourceItem lineStartAction, TranslateStack stack, List<GraphTargetItem> output, HashMap<Integer, String> regNames, HashMap<String, GraphTargetItem> variables, HashMap<String, GraphTargetItem> functions, int staticOperation, String path) {
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ public class ActionDefineLocal extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -45,7 +45,7 @@ public class ActionDefineLocal2 extends Action {
|
||||
return "DefineLocal2";
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -54,7 +54,7 @@ public class ActionDelete extends Action {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -60,7 +60,7 @@ public class ActionDelete2 extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ public class ActionEnumerate extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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 DirectValueActionItem(null, 0, new Null(), new ArrayList<String>()));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionEquals2 extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -62,7 +62,7 @@ public class ActionGetMember extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionIncrement extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -60,7 +60,7 @@ public class ActionInitArray extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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<>();
|
||||
|
||||
@@ -67,7 +67,7 @@ public class ActionInitObject extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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<>();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionLess2 extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionModulo extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -71,7 +71,7 @@ public class ActionNewMethod extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -71,7 +71,7 @@ public class ActionNewObject extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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);
|
||||
|
||||
@@ -54,7 +54,7 @@ public class ActionPushDuplicate extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -55,7 +55,7 @@ public class ActionReturn extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -69,7 +69,7 @@ public class ActionSetMember extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -56,7 +56,7 @@ public class ActionStackSwap extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -97,7 +97,7 @@ public class ActionStoreRegister extends Action implements StoreTypeAction {
|
||||
return "StoreRegister " + registerNumber;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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);
|
||||
|
||||
@@ -62,7 +62,7 @@ public class ActionTargetPath extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionToNumber extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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 ToNumberActionItem(this, lineStartAction, object));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionToString extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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 ToStringActionItem(this, lineStartAction, object));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionTypeOf extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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 TypeOfActionItem(this, lineStartAction, object));
|
||||
|
||||
@@ -45,7 +45,7 @@ public class ActionEnumerate2 extends Action {
|
||||
return "Enumerate2";
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
output.add(new EnumerateActionItem(this, lineStartAction, object));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionGreater extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -84,7 +84,7 @@ public class ActionInstanceOf extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ActionStrictEquals extends Action {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void translate(boolean insideDoInitAction, boolean insideDefineFunction1, 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();
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user