From fb5af451e251df1b190c9d9fb8855d36687eee18 Mon Sep 17 00:00:00 2001 From: Honfika Date: Sun, 13 Oct 2013 12:33:15 +0200 Subject: [PATCH] localData class added --- trunk/src/com/jpexs/decompiler/flash/SWF.java | 3 +- .../decompiler/flash/abc/avm2/AVM2Code.java | 3 +- .../construction/NewClassIns.java | 3 +- .../avm2/instructions/other/SetSuperIns.java | 3 +- .../flash/abc/avm2/model/AVM2Item.java | 31 ++++----- .../abc/avm2/model/AlchemyLoadAVM2Item.java | 5 +- .../avm2/model/AlchemySignExtendAVM2Item.java | 5 +- .../abc/avm2/model/AlchemyStoreAVM2Item.java | 7 +- .../abc/avm2/model/ApplyTypeAVM2Item.java | 7 +- .../flash/abc/avm2/model/BooleanAVM2Item.java | 3 +- .../flash/abc/avm2/model/CallAVM2Item.java | 9 +-- .../abc/avm2/model/CallMethodAVM2Item.java | 7 +- .../abc/avm2/model/CallPropertyAVM2Item.java | 7 +- .../abc/avm2/model/CallStaticAVM2Item.java | 7 +- .../abc/avm2/model/CallSuperAVM2Item.java | 11 +-- .../flash/abc/avm2/model/ClassAVM2Item.java | 5 +- .../flash/abc/avm2/model/CoerceAVM2Item.java | 5 +- .../abc/avm2/model/ConstructAVM2Item.java | 9 +-- .../abc/avm2/model/ConstructPropAVM2Item.java | 9 +-- .../avm2/model/ConstructSuperAVM2Item.java | 9 +-- .../flash/abc/avm2/model/ConvertAVM2Item.java | 5 +- .../abc/avm2/model/DecLocalAVM2Item.java | 5 +- .../abc/avm2/model/DecrementAVM2Item.java | 5 +- .../abc/avm2/model/DefaultXMLNamespace.java | 5 +- .../abc/avm2/model/EscapeXAttrAVM2Item.java | 5 +- .../abc/avm2/model/EscapeXElemAVM2Item.java | 5 +- .../abc/avm2/model/FilteredCheckAVM2Item.java | 5 +- .../abc/avm2/model/FindPropertyAVM2Item.java | 3 +- .../abc/avm2/model/FloatValueAVM2Item.java | 3 +- .../abc/avm2/model/FullMultinameAVM2Item.java | 13 ++-- .../avm2/model/GetDescendantsAVM2Item.java | 7 +- .../flash/abc/avm2/model/GetLexAVM2Item.java | 5 +- .../abc/avm2/model/GetPropertyAVM2Item.java | 5 +- .../flash/abc/avm2/model/GetSlotAVM2Item.java | 5 +- .../abc/avm2/model/GetSuperAVM2Item.java | 9 +-- .../flash/abc/avm2/model/HasNextAVM2Item.java | 7 +- .../flash/abc/avm2/model/InAVM2Item.java | 7 +- .../abc/avm2/model/IncLocalAVM2Item.java | 5 +- .../abc/avm2/model/IncrementAVM2Item.java | 5 +- .../abc/avm2/model/InitPropertyAVM2Item.java | 7 +- .../abc/avm2/model/IntegerValueAVM2Item.java | 3 +- .../abc/avm2/model/LocalRegAVM2Item.java | 7 +- .../abc/avm2/model/NameSpaceAVM2Item.java | 4 +- .../flash/abc/avm2/model/NameValuePair.java | 9 +-- .../flash/abc/avm2/model/NanAVM2Item.java | 3 +- .../abc/avm2/model/NewActivationAVM2Item.java | 3 +- .../abc/avm2/model/NewArrayAVM2Item.java | 5 +- .../abc/avm2/model/NewFunctionAVM2Item.java | 3 +- .../abc/avm2/model/NewObjectAVM2Item.java | 5 +- .../abc/avm2/model/NextNameAVM2Item.java | 7 +- .../abc/avm2/model/NextValueAVM2Item.java | 7 +- .../flash/abc/avm2/model/NullAVM2Item.java | 3 +- .../abc/avm2/model/PostDecrementAVM2Item.java | 5 +- .../abc/avm2/model/PostIncrementAVM2Item.java | 5 +- .../abc/avm2/model/ReturnValueAVM2Item.java | 5 +- .../abc/avm2/model/ReturnVoidAVM2Item.java | 3 +- .../flash/abc/avm2/model/ScriptAVM2Item.java | 3 +- .../abc/avm2/model/SetGlobalSlotAVM2Item.java | 5 +- .../abc/avm2/model/SetLocalAVM2Item.java | 7 +- .../abc/avm2/model/SetPropertyAVM2Item.java | 7 +- .../flash/abc/avm2/model/SetSlotAVM2Item.java | 15 ++-- .../abc/avm2/model/SetSuperAVM2Item.java | 11 +-- .../flash/abc/avm2/model/StringAVM2Item.java | 3 +- .../flash/abc/avm2/model/ThisAVM2Item.java | 3 +- .../flash/abc/avm2/model/ThrowAVM2Item.java | 5 +- .../abc/avm2/model/UndefinedAVM2Item.java | 3 +- .../abc/avm2/model/UnparsedAVM2Item.java | 3 +- .../flash/abc/avm2/model/WithAVM2Item.java | 5 +- .../flash/abc/avm2/model/WithEndAVM2Item.java | 3 +- .../abc/avm2/model/WithObjectAVM2Item.java | 3 +- .../flash/abc/avm2/model/XMLAVM2Item.java | 5 +- .../model/clauses/DeclarationAVM2Item.java | 13 ++-- .../avm2/model/clauses/ExceptionAVM2Item.java | 5 +- .../avm2/model/clauses/FilterAVM2Item.java | 7 +- .../avm2/model/clauses/ForEachInAVM2Item.java | 7 +- .../abc/avm2/model/clauses/ForInAVM2Item.java | 7 +- .../abc/avm2/model/clauses/TryAVM2Item.java | 11 +-- .../avm2/model/operations/AddAVM2Item.java | 5 +- .../operations/DeletePropertyAVM2Item.java | 7 +- .../model/operations/SubtractAVM2Item.java | 5 +- .../abc/types/traits/TraitSlotConst.java | 3 +- .../jpexs/decompiler/flash/action/Action.java | 3 +- .../flash/action/ActionListReader.java | 5 +- .../flash/action/model/ActionItem.java | 15 ++-- .../action/model/CallFunctionActionItem.java | 3 +- .../action/model/CallMethodActionItem.java | 3 +- .../flash/action/model/CastOpActionItem.java | 3 +- .../action/model/DirectValueActionItem.java | 2 +- .../action/model/EnumerateActionItem.java | 3 +- .../flash/action/model/ExtendsActionItem.java | 5 +- .../action/model/FunctionActionItem.java | 3 +- .../action/model/ImplementsOpActionItem.java | 5 +- .../flash/action/model/TemporaryRegister.java | 4 +- .../flash/action/model/ThrowActionItem.java | 3 +- .../action/model/ToNumberActionItem.java | 3 +- .../action/model/ToStringActionItem.java | 3 +- .../flash/action/model/TypeOfActionItem.java | 3 +- .../action/model/clauses/ClassActionItem.java | 8 +-- .../clauses/IfFrameLoadedActionItem.java | 3 +- .../action/model/clauses/TryActionItem.java | 10 ++- .../action/model/clauses/WithActionItem.java | 4 +- .../model/operations/AddActionItem.java | 5 +- .../model/operations/SubtractActionItem.java | 5 +- .../flash/action/swf4/ActionPush.java | 6 +- .../src/com/jpexs/decompiler/graph/Graph.java | 14 ++-- .../decompiler/graph/GraphTargetItem.java | 69 +++++-------------- .../com/jpexs/decompiler/graph/MarkItem.java | 5 +- .../decompiler/graph/NotCompileTimeItem.java | 5 +- .../decompiler/graph/model/BinaryOpItem.java | 4 +- .../decompiler/graph/model/BlockItem.java | 4 +- .../decompiler/graph/model/BreakItem.java | 4 +- .../graph/model/CommaExpressionItem.java | 4 +- .../decompiler/graph/model/CommentItem.java | 4 +- .../decompiler/graph/model/ContinueItem.java | 4 +- .../decompiler/graph/model/DoWhileItem.java | 6 +- .../decompiler/graph/model/DuplicateItem.java | 4 +- .../jpexs/decompiler/graph/model/ForItem.java | 6 +- .../jpexs/decompiler/graph/model/IfItem.java | 8 ++- .../graph/model/IntegerValueItem.java | 4 +- .../decompiler/graph/model/LocalData.java | 47 +++++++++++++ .../graph/model/ParenthesisItem.java | 4 +- .../decompiler/graph/model/ScriptEndItem.java | 4 +- .../decompiler/graph/model/SwitchItem.java | 8 ++- .../decompiler/graph/model/TernarOpItem.java | 4 +- .../decompiler/graph/model/TrueItem.java | 4 +- .../decompiler/graph/model/UnaryOpItem.java | 4 +- .../graph/model/UniversalLoopItem.java | 6 +- .../decompiler/graph/model/WhileItem.java | 6 +- trunk/src/com/jpexs/helpers/Helper.java | 3 +- 129 files changed, 494 insertions(+), 340 deletions(-) create mode 100644 trunk/src/com/jpexs/decompiler/graph/model/LocalData.java diff --git a/trunk/src/com/jpexs/decompiler/flash/SWF.java b/trunk/src/com/jpexs/decompiler/flash/SWF.java index 57f73ceaf..56fb76211 100644 --- a/trunk/src/com/jpexs/decompiler/flash/SWF.java +++ b/trunk/src/com/jpexs/decompiler/flash/SWF.java @@ -97,6 +97,7 @@ import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemContainer; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Cache; import com.jpexs.helpers.Helper; import com.jpexs.helpers.ProgressListener; @@ -1585,7 +1586,7 @@ public class SWF { GraphSourceItem ins = code.get(ip); if (debugMode) { - System.err.println("Visit " + ip + ": ofs" + Helper.formatAddress(((Action) ins).getAddress()) + ":" + ((Action) ins).getASMSource(new ArrayList(), new ArrayList(), new ArrayList(), code.version, false) + " stack:" + Helper.stackToString(stack, Helper.toList(new ConstantPool()))); + System.err.println("Visit " + ip + ": ofs" + Helper.formatAddress(((Action) ins).getAddress()) + ":" + ((Action) ins).getASMSource(new ArrayList(), new ArrayList(), new ArrayList(), code.version, false) + " stack:" + Helper.stackToString(stack, LocalData.create(new ConstantPool()))); } if (ins.isExit()) { break; diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java index 5238b3095..25d0654a8 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java @@ -79,6 +79,7 @@ import com.jpexs.decompiler.graph.GraphPart; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.NotCompileTimeItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.decompiler.graph.model.ScriptEndItem; import com.jpexs.helpers.Helper; import java.io.*; @@ -1531,7 +1532,7 @@ public class AVM2Code implements Serializable { list.remove(lastPos); } - s = Graph.graphToString(list, hilighted, replaceIndents, constants, localRegNames, fullyQualifiedNames); + s = Graph.graphToString(list, hilighted, replaceIndents, LocalData.create(constants, localRegNames, fullyQualifiedNames)); return s; } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/instructions/construction/NewClassIns.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/instructions/construction/NewClassIns.java index 5188de740..4591bb05a 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/instructions/construction/NewClassIns.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/instructions/construction/NewClassIns.java @@ -26,6 +26,7 @@ import com.jpexs.decompiler.flash.abc.types.MethodBody; import com.jpexs.decompiler.flash.abc.types.MethodInfo; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -41,7 +42,7 @@ public class NewClassIns extends InstructionDefinition { public void translate(boolean isStatic, int scriptIndex, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, MethodBody body, ABC abc, HashMap localRegNames, List fullyQualifiedNames, String path, HashMap localRegsAssignmentIps, int ip, HashMap> refs, AVM2Code code) { int clsIndex = ins.operands[0]; HilightedTextWriter writer = new HilightedTextWriter(false); - stack.pop().toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + stack.pop().toString(writer, LocalData.create(constants, localRegNames, fullyQualifiedNames)); String baseType = writer.toString(); stack.push(new UnparsedAVM2Item(ins, "new " + abc.constants.constant_multiname[abc.instance_info[clsIndex].name_index].getName(constants, fullyQualifiedNames) + ".class extends " + baseType)); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetSuperIns.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetSuperIns.java index a510a669d..256d1ed9e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetSuperIns.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetSuperIns.java @@ -29,6 +29,7 @@ import com.jpexs.decompiler.flash.abc.types.MethodBody; import com.jpexs.decompiler.flash.abc.types.MethodInfo; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; import java.util.Stack; @@ -54,7 +55,7 @@ public class SetSuperIns extends InstructionDefinition implements SetTypeIns { int multinameIndex = ins.operands[0]; String multiname = resolveMultinameNoPop(1, stack, abc.constants, multinameIndex, ins, fullyQualifiedNames); HilightedTextWriter writer = new HilightedTextWriter(false); - stack.get(1 + resolvedCount(abc.constants, multinameIndex)).toString(writer, abc.constants, localRegNames, fullyQualifiedNames); + stack.get(1 + resolvedCount(abc.constants, multinameIndex)).toString(writer, LocalData.create(abc.constants, localRegNames, fullyQualifiedNames)); String obj = writer.toString(); return obj + ".super." + multiname; } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AVM2Item.java index abc4207f2..720cee522 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AVM2Item.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import static com.jpexs.decompiler.graph.GraphTargetItem.PRECEDENCE_PRIMARY; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -35,22 +36,16 @@ public abstract class AVM2Item extends GraphTargetItem { super(instruction, precedence); } - @Override - @SuppressWarnings("unchecked") - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { - return toString(writer, (ConstantPool) localData.get(0), (HashMap) localData.get(1), (List) localData.get(2)); - } + public abstract HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData); - public abstract HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames); - - public String toStringNoH(ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public String toStringNoH(LocalData localData) { HilightedTextWriter writer = new HilightedTextWriter(false); - toString(writer, constants, localRegNames, fullyQualifiedNames); + toString(writer, localData); return writer.toString(); } - public String toStringSemicoloned(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - return toString(writer, constants, localRegNames, fullyQualifiedNames) + (needsSemicolon() ? ";" : ""); + public String toStringSemicoloned(HilightedTextWriter writer, LocalData localData) { + return toString(writer, localData) + (needsSemicolon() ? ";" : ""); } @Override @@ -58,7 +53,7 @@ public abstract class AVM2Item extends GraphTargetItem { return true; } - protected HilightedTextWriter formatProperty(HilightedTextWriter writer, ConstantPool constants, GraphTargetItem object, GraphTargetItem propertyName, HashMap localRegNames, List fullyQualifiedNames) { + protected HilightedTextWriter formatProperty(HilightedTextWriter writer, GraphTargetItem object, GraphTargetItem propertyName, LocalData localData) { boolean empty = false; if (object instanceof LocalRegAVM2Item) { if (((LocalRegAVM2Item) object).computedValue != null) { @@ -71,12 +66,12 @@ public abstract class AVM2Item extends GraphTargetItem { if (!empty) { if (object.precedence > PRECEDENCE_PRIMARY) { hilight("(", writer); - object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + object.toString(writer, localData); hilight(")", writer); empty = false; } else { int writerLength = writer.getLength(); - object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + object.toString(writer, localData); if (writerLength == writer.getLength()) { empty = true; } @@ -84,18 +79,18 @@ public abstract class AVM2Item extends GraphTargetItem { } if (empty) { - return propertyName.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + return propertyName.toString(writer, localData); } if (propertyName instanceof FullMultinameAVM2Item) { if (((FullMultinameAVM2Item) propertyName).name != null) { - return propertyName.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + return propertyName.toString(writer, localData); } else { hilight(".", writer); - return propertyName.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + return propertyName.toString(writer, localData); } } else { hilight("[", writer); - propertyName.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + propertyName.toString(writer, localData); return hilight("]", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AlchemyLoadAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AlchemyLoadAVM2Item.java index 74f34d560..00bfaf58e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AlchemyLoadAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AlchemyLoadAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -39,9 +40,9 @@ public class AlchemyLoadAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("op_" + name + "(", writer); - ofs.toString(writer, constants, localRegNames, fullyQualifiedNames); + ofs.toString(writer, localData); return hilight(") /*Alchemy*/", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AlchemySignExtendAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AlchemySignExtendAVM2Item.java index 727589b1a..357cd6866 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AlchemySignExtendAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AlchemySignExtendAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -38,9 +39,9 @@ public class AlchemySignExtendAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("op_" + name + "(", writer); - value.toString(writer, constants, localRegNames, fullyQualifiedNames); + value.toString(writer, localData); return hilight(") /*Alchemy*/", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AlchemyStoreAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AlchemyStoreAVM2Item.java index f6c4b60e1..d101f7d19 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AlchemyStoreAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/AlchemyStoreAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -40,11 +41,11 @@ public class AlchemyStoreAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("op_" + name + "(", writer); - ofs.toString(writer, constants, localRegNames, fullyQualifiedNames); + ofs.toString(writer, localData); hilight(",", writer); - value.toString(writer, constants, localRegNames, fullyQualifiedNames); + value.toString(writer, localData); return hilight(") /*Alchemy*/", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ApplyTypeAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ApplyTypeAVM2Item.java index d9c1aa351..a0f0ffcd0 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ApplyTypeAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ApplyTypeAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -36,8 +37,8 @@ public class ApplyTypeAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + object.toString(writer, localData); if (!params.isEmpty()) { hilight(".<", writer); for (int i = 0; i < params.size(); i++) { @@ -48,7 +49,7 @@ public class ApplyTypeAVM2Item extends AVM2Item { if (p instanceof NullAVM2Item) { hilight("*", writer); } else { - p.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + p.toString(writer, localData); } } hilight(">", writer); diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/BooleanAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/BooleanAVM2Item.java index 741677135..9a6811de1 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/BooleanAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/BooleanAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,7 +33,7 @@ public class BooleanAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight(value ? "true" : "false", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallAVM2Item.java index 8e62acdba..deebc5c5a 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -37,7 +38,7 @@ public class CallAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { /*String recPart = ""; receiver.toString(constants, localRegNames) + hilight(".", writer); if (receiver instanceof NewActivationAVM2Item) { recPart = ""; @@ -47,17 +48,17 @@ public class CallAVM2Item extends AVM2Item { }*/ if (function.precedence > precedence) { hilight("(", writer); - function.toString(writer, constants, localRegNames, fullyQualifiedNames); + function.toString(writer, localData); hilight(")", writer); } else { - function.toString(writer, constants, localRegNames, fullyQualifiedNames); + function.toString(writer, localData); } hilight("(", writer); for (int a = 0; a < arguments.size(); a++) { if (a > 0) { hilight(",", writer); } - arguments.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames); + arguments.get(a).toString(writer, localData); } return hilight(")", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java index 700fbf0fd..2017f4177 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -38,8 +39,8 @@ public class CallMethodAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - receiver.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + receiver.toString(writer, localData); hilight(".", writer); hilight(methodName, writer); hilight("(", writer); @@ -47,7 +48,7 @@ public class CallMethodAVM2Item extends AVM2Item { if (a > 0) { hilight(",", writer); } - arguments.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames); + arguments.get(a).toString(writer, localData); } return hilight(")", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallPropertyAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallPropertyAVM2Item.java index 91a54b7f0..6aca6d6f5 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallPropertyAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallPropertyAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -39,14 +40,14 @@ public class CallPropertyAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - formatProperty(writer, constants, receiver, propertyName, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + formatProperty(writer, receiver, propertyName, localData); hilight("(", writer); for (int a = 0; a < arguments.size(); a++) { if (a > 0) { hilight(",", writer); } - arguments.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames); + arguments.get(a).toString(writer, localData); } return hilight(")", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallStaticAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallStaticAVM2Item.java index 5db55706a..fbb6104e8 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallStaticAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallStaticAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -38,8 +39,8 @@ public class CallStaticAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - receiver.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + receiver.toString(writer, localData); hilight(".", writer); hilight(methodName, writer); hilight("(", writer); @@ -47,7 +48,7 @@ public class CallStaticAVM2Item extends AVM2Item { if (a > 0) { hilight(",", writer); } - arguments.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames); + arguments.get(a).toString(writer, localData); } return hilight(")", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallSuperAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallSuperAVM2Item.java index 62bc74b17..d2b801eef 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallSuperAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CallSuperAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.flash.helpers.hilight.Highlighting; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -40,20 +41,20 @@ public class CallSuperAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - if (!receiver.toString(false, constants, localRegNames, fullyQualifiedNames).equals("this")) { - receiver.toString(writer, constants, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + if (!receiver.toString(false, localData).equals("this")) { + receiver.toString(writer, localData); hilight(".", writer); } hilight("super.", writer); - multiname.toString(writer, constants, localRegNames, fullyQualifiedNames); + multiname.toString(writer, localData); hilight("(", writer); String args = ""; for (int a = 0; a < arguments.size(); a++) { if (a > 0) { hilight(",", writer); } - arguments.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames); + arguments.get(a).toString(writer, localData); } return hilight(")", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ClassAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ClassAVM2Item.java index 3ae40bac0..1f6f59447 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ClassAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ClassAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.types.Multiname; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,7 +33,7 @@ public class ClassAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - return hilight(className.getName(constants, fullyQualifiedNames), writer); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + return hilight(className.getName(localData.constantsAvm2, localData.fullyQualifiedNames), writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CoerceAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CoerceAVM2Item.java index 5649c0d22..f5603f4ae 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CoerceAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/CoerceAVM2Item.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.ecma.Null; import com.jpexs.decompiler.flash.ecma.Undefined; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -37,9 +38,9 @@ public class CoerceAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { //return hilight("("+type+")", highlight)+ - return value.toString(writer, constants, localRegNames, fullyQualifiedNames); + return value.toString(writer, localData); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructAVM2Item.java index 97ea2f82e..3047d50eb 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -35,19 +36,19 @@ public class ConstructAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { if (object instanceof NewFunctionAVM2Item) { hilight("new ", writer); - return object.toString(writer, constants, localRegNames, fullyQualifiedNames); + return object.toString(writer, localData); } hilight("new ", writer); - object.toString(writer, constants, localRegNames, fullyQualifiedNames); + object.toString(writer, localData); hilight("(", writer); for (int a = 0; a < args.size(); a++) { if (a > 0) { hilight(",", writer); } - args.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames); + args.get(a).toString(writer, localData); } return hilight(")", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructPropAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructPropAVM2Item.java index bfc963834..1c7d7f471 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructPropAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructPropAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -37,20 +38,20 @@ public class ConstructPropAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("new ", writer); int idx = writer.getLength(); - object.toString(writer, constants, localRegNames, fullyQualifiedNames); + object.toString(writer, localData); if (idx < writer.getLength()) { hilight(".", writer); } - propertyName.toString(writer, constants, localRegNames, fullyQualifiedNames); + propertyName.toString(writer, localData); hilight("(", writer); for (int a = 0; a < args.size(); a++) { if (a > 0) { hilight(",", writer); } - args.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames); + args.get(a).toString(writer, localData); } return hilight(")", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructSuperAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructSuperAVM2Item.java index ad4b4628a..47b12a021 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructSuperAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructSuperAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.flash.helpers.hilight.Highlighting; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -36,9 +37,9 @@ public class ConstructSuperAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - if (!object.toString(false, constants, localRegNames, fullyQualifiedNames).equals("this")) { - object.toString(writer, constants, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + if (!object.toString(false, localData).equals("this")) { + object.toString(writer, localData); hilight(".", writer); } hilight("super(", writer); @@ -46,7 +47,7 @@ public class ConstructSuperAVM2Item extends AVM2Item { if (a > 0) { hilight(",", writer); } - args.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames); + args.get(a).toString(writer, localData); } return hilight(")", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConvertAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConvertAVM2Item.java index a9d594570..48333bc07 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConvertAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ConvertAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.ecma.EcmaScript; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -36,8 +37,8 @@ public class ConvertAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - return value.toString(writer, constants, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + return value.toString(writer, localData); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/DecLocalAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/DecLocalAVM2Item.java index 0e38d7a5e..d59d47ecc 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/DecLocalAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/DecLocalAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,8 +33,8 @@ public class DecLocalAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - hilight(localRegName(localRegNames, regIndex), writer); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + hilight(localRegName(localData.localRegNames, regIndex), writer); return hilight("--", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/DecrementAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/DecrementAVM2Item.java index 9ba0d7e8d..4bcfa1539 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/DecrementAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/DecrementAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.ecma.EcmaScript; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,8 +33,8 @@ public class DecrementAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - value.toString(writer, constants, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + value.toString(writer, localData); return hilight("-1", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/DefaultXMLNamespace.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/DefaultXMLNamespace.java index de9e3286c..33f38aaeb 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/DefaultXMLNamespace.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/DefaultXMLNamespace.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -38,8 +39,8 @@ public class DefaultXMLNamespace extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("default xml namespace = ", writer); - return ns.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + return ns.toString(writer, localData); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/EscapeXAttrAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/EscapeXAttrAVM2Item.java index 9d76c891e..4808fe51c 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/EscapeXAttrAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/EscapeXAttrAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -36,9 +37,9 @@ public class EscapeXAttrAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("{", writer); - value.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + value.toString(writer, localData); return hilight("}", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/EscapeXElemAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/EscapeXElemAVM2Item.java index 7c46d83e4..efa0b577f 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/EscapeXElemAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/EscapeXElemAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -38,9 +39,9 @@ public class EscapeXElemAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("{", writer); - expression.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + expression.toString(writer, localData); return hilight("}", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FilteredCheckAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FilteredCheckAVM2Item.java index 407673058..31c193343 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FilteredCheckAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FilteredCheckAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -38,7 +39,7 @@ public class FilteredCheckAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - return object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + return object.toString(writer, localData); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FindPropertyAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FindPropertyAVM2Item.java index d4b3802d0..a0113cf17 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FindPropertyAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FindPropertyAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,7 +33,7 @@ public class FindPropertyAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return writer; } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FloatValueAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FloatValueAVM2Item.java index 229615e77..7732378a0 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FloatValueAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FloatValueAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,7 +33,7 @@ public class FloatValueAVM2Item extends NumberValueAVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("" + value, writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FullMultinameAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FullMultinameAVM2Item.java index 7715a034b..2f5f643c1 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FullMultinameAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/FullMultinameAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.abc.types.Namespace; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -58,13 +59,13 @@ public class FullMultinameAVM2Item extends AVM2Item { public boolean isXML(ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { String cname; if (name != null) { - cname = name.toString(false, constants, localRegNames, fullyQualifiedNames); + cname = name.toString(false, LocalData.create(constants, localRegNames, fullyQualifiedNames)); } else { cname = (constants.constant_multiname[multinameIndex].getName(constants, fullyQualifiedNames)); } String cns = ""; if (namespace != null) { - cns = namespace.toString(false, constants, localRegNames, fullyQualifiedNames); + cns = namespace.toString(false, LocalData.create(constants, localRegNames, fullyQualifiedNames)); } else { Namespace ns = constants.constant_multiname[multinameIndex].getNamespace(constants); if ((ns != null) && (ns.name_index != 0)) { @@ -75,9 +76,9 @@ public class FullMultinameAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { if (namespace != null) { - namespace.toString(writer, constants, localRegNames, fullyQualifiedNames); + namespace.toString(writer, localData); hilight("::", writer); } else { /*Namespace ns = constants.constant_multiname[multinameIndex].getNamespace(constants); @@ -87,9 +88,11 @@ public class FullMultinameAVM2Item extends AVM2Item { } if (name != null) { hilight("[", writer); - name.toString(writer, constants, localRegNames, fullyQualifiedNames); + name.toString(writer, localData); hilight("]", writer); } else { + ConstantPool constants = localData.constantsAvm2; + List fullyQualifiedNames = localData.fullyQualifiedNames; hilight(constants.constant_multiname[multinameIndex].getName(constants, fullyQualifiedNames), writer); } return writer; diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetDescendantsAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetDescendantsAVM2Item.java index 960809cb8..28af3aeff 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetDescendantsAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetDescendantsAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -35,9 +36,9 @@ public class GetDescendantsAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - object.toString(writer, constants, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + object.toString(writer, localData); hilight("..", writer); - return multiname.toString(writer, constants, localRegNames, fullyQualifiedNames); + return multiname.toString(writer, localData); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetLexAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetLexAVM2Item.java index fe98bf969..125a1b5c9 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetLexAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetLexAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.abc.types.Multiname; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -33,7 +34,7 @@ public class GetLexAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - return hilight(propertyName.getName(constants, fullyQualifiedNames), writer); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + return hilight(propertyName.getName(localData.constantsAvm2, localData.fullyQualifiedNames), writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetPropertyAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetPropertyAVM2Item.java index 1010ce893..cd8bbab37 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetPropertyAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetPropertyAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -35,7 +36,7 @@ public class GetPropertyAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - return formatProperty(writer, constants, object, propertyName, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + return formatProperty(writer, object, propertyName, localData); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetSlotAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetSlotAVM2Item.java index b948947ad..7d0409e10 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetSlotAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetSlotAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.abc.types.Multiname; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -36,10 +37,10 @@ public class GetSlotAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { if (slotName == null) { return hilight("/*UnknownSlot*/", writer); } - return hilight(slotName.getName(constants, fullyQualifiedNames), writer); + return hilight(slotName.getName(localData.constantsAvm2, localData.fullyQualifiedNames), writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetSuperAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetSuperAVM2Item.java index 1e33a839b..8ae5535f6 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetSuperAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/GetSuperAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.flash.helpers.hilight.Highlighting; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -36,12 +37,12 @@ public class GetSuperAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - if (!object.toString(false, constants, localRegNames, fullyQualifiedNames).equals("this")) { - object.toString(writer, constants, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + if (!object.toString(false, localData).equals("this")) { + object.toString(writer, localData); hilight(".", writer); } hilight("super.", writer); - return propertyName.toString(writer, constants, localRegNames, fullyQualifiedNames); + return propertyName.toString(writer, localData); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/HasNextAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/HasNextAVM2Item.java index 40c0afcb1..191854c0e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/HasNextAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/HasNextAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -40,9 +41,9 @@ public class HasNextAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - collection.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + collection.toString(writer, localData); hilight(" hasNext ", writer); - return object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + return object.toString(writer, localData); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/InAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/InAVM2Item.java index cfb86edd9..94fc6e29b 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/InAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/InAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -35,9 +36,9 @@ public class InAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - object.toString(writer, constants, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + object.toString(writer, localData); hilight(" in ", writer); - return collection.toString(writer, constants, localRegNames, fullyQualifiedNames); + return collection.toString(writer, localData); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/IncLocalAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/IncLocalAVM2Item.java index 617780170..1f047bdf2 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/IncLocalAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/IncLocalAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,8 +33,8 @@ public class IncLocalAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - hilight(localRegName(localRegNames, regIndex), writer); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + hilight(localRegName(localData.localRegNames, regIndex), writer); return hilight("++", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/IncrementAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/IncrementAVM2Item.java index 4c1c76ae0..182a053b6 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/IncrementAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/IncrementAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.ecma.EcmaScript; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,8 +33,8 @@ public class IncrementAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - value.toString(writer, constants, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + value.toString(writer, localData); return hilight("+1", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/InitPropertyAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/InitPropertyAVM2Item.java index 8faeab014..03717b364 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/InitPropertyAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/InitPropertyAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.abc.avm2.model.clauses.AssignmentAVM2Item; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -38,10 +39,10 @@ public class InitPropertyAVM2Item extends AVM2Item implements SetTypeAVM2Item, A } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - formatProperty(writer, constants, object, propertyName, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + formatProperty(writer, object, propertyName, localData); hilight(" = ", writer); - return value.toString(writer, constants, localRegNames, fullyQualifiedNames); + return value.toString(writer, localData); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/IntegerValueAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/IntegerValueAVM2Item.java index be77a631c..be4e7d553 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/IntegerValueAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/IntegerValueAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,7 +33,7 @@ public class IntegerValueAVM2Item extends NumberValueAVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("" + value, writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/LocalRegAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/LocalRegAVM2Item.java index fe8e025bc..10abaa09c 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/LocalRegAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/LocalRegAVM2Item.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.clauses.FilterAVM2Item; import com.jpexs.decompiler.flash.ecma.Undefined; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -50,11 +51,11 @@ public class LocalRegAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { if (computedValue instanceof FilterAVM2Item) { - return computedValue.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + return computedValue.toString(writer, localData); } - return hilight(localRegName(localRegNames, regIndex), writer); + return hilight(localRegName(localData.localRegNames, regIndex), writer); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NameSpaceAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NameSpaceAVM2Item.java index 2c3d4e4a9..8f3cb51ba 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NameSpaceAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NameSpaceAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,10 +33,11 @@ public class NameSpaceAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { if (namespaceIndex == 0) { return hilight("*", writer); } + ConstantPool constants = localData.constantsAvm2; return hilight(constants.constant_namespace[namespaceIndex].toString(constants), writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NameValuePair.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NameValuePair.java index bc926bcca..a49d74b6f 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NameValuePair.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NameValuePair.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.decompiler.graph.model.TernarOpItem; import java.util.HashMap; import java.util.List; @@ -35,15 +36,15 @@ public class NameValuePair extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - name.toString(writer, constants, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + name.toString(writer, localData); hilight(":", writer); if (value instanceof TernarOpItem) { //Ternar operator contains ":" hilight("(", writer); - value.toString(writer, constants, localRegNames, fullyQualifiedNames); + value.toString(writer, localData); hilight(")", writer); } else { - value.toString(writer, constants, localRegNames, fullyQualifiedNames); + value.toString(writer, localData); } return writer; } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NanAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NanAVM2Item.java index 2caeb2dc1..56344e06c 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NanAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NanAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -29,7 +30,7 @@ public class NanAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("NaN", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewActivationAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewActivationAVM2Item.java index 6e13fc904..b7e16e0df 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewActivationAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewActivationAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,7 +33,7 @@ public class NewActivationAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("newactivation()", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewArrayAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewArrayAVM2Item.java index f2946a768..b9e812f06 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewArrayAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewArrayAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -33,13 +34,13 @@ public class NewArrayAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("[", writer); for (int a = 0; a < values.size(); a++) { if (a > 0) { hilight(",", writer); } - values.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames); + values.get(a).toString(writer, localData); } return hilight("]", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewFunctionAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewFunctionAVM2Item.java index 02048f565..21d407ae5 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewFunctionAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewFunctionAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.flash.helpers.hilight.Highlighting; import com.jpexs.decompiler.graph.Graph; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -42,7 +43,7 @@ public class NewFunctionAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("function" + (!functionName.equals("") ? " " + functionName : ""), writer); boolean highlight = writer.getIsHighlighted(); String mhead = "(" + (highlight ? paramStr : Highlighting.stripHilights(paramStr)) + "):" + (highlight ? returnStr : Highlighting.stripHilights(returnStr)); diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewObjectAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewObjectAVM2Item.java index 830296d20..4e1db0dc3 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewObjectAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NewObjectAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.Graph; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -33,7 +34,7 @@ public class NewObjectAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { boolean singleLine = pairs.size() < 2; if (!singleLine) { writer.appendNewLine(); @@ -48,7 +49,7 @@ public class NewObjectAVM2Item extends AVM2Item { if (n > 0) { hilight(",", writer).appendNewLine(); } - pairs.get(n).toString(writer, constants, localRegNames, fullyQualifiedNames); + pairs.get(n).toString(writer, localData); } if (!singleLine) { writer.appendNewLine(); diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NextNameAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NextNameAVM2Item.java index d7c593495..7b9d52ef2 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NextNameAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NextNameAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -40,11 +41,11 @@ public class NextNameAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("nextName(", writer); - index.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + index.toString(writer, localData); hilight(",", writer); - obj.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + obj.toString(writer, localData); return hilight(")", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NextValueAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NextValueAVM2Item.java index aa030790b..380e48c3a 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NextValueAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NextValueAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -40,11 +41,11 @@ public class NextValueAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("nextValue(", writer); - index.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + index.toString(writer, localData); hilight(",", writer); - obj.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + obj.toString(writer, localData); return hilight(")", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NullAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NullAVM2Item.java index 5dcedcae5..9bb1276f3 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NullAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NullAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.ecma.Null; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -30,7 +31,7 @@ public class NullAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("null", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/PostDecrementAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/PostDecrementAVM2Item.java index 96deb4a8f..f762fdbbf 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/PostDecrementAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/PostDecrementAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.abc.avm2.model.clauses.AssignmentAVM2Item; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -35,8 +36,8 @@ public class PostDecrementAVM2Item extends AVM2Item implements AssignmentAVM2Ite } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + object.toString(writer, localData); return hilight("--", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/PostIncrementAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/PostIncrementAVM2Item.java index c85520a2c..726462947 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/PostIncrementAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/PostIncrementAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.abc.avm2.model.clauses.AssignmentAVM2Item; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -35,8 +36,8 @@ public class PostIncrementAVM2Item extends AVM2Item implements AssignmentAVM2Ite } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + object.toString(writer, localData); return hilight("++", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnValueAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnValueAVM2Item.java index 81807b36d..c863a49b8 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnValueAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnValueAVM2Item.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.model.ExitItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -34,8 +35,8 @@ public class ReturnValueAVM2Item extends AVM2Item implements ExitItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("return ", writer); - return value.toString(writer, constants, localRegNames, fullyQualifiedNames); + return value.toString(writer, localData); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnVoidAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnVoidAVM2Item.java index 2848e356c..cb7c1bf17 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnVoidAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ReturnVoidAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.model.ExitItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -30,7 +31,7 @@ public class ReturnVoidAVM2Item extends AVM2Item implements ExitItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("return", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ScriptAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ScriptAVM2Item.java index 75465b2e5..652277585 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ScriptAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ScriptAVM2Item.java @@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -35,7 +36,7 @@ public class ScriptAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("script" + scriptIndex, writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetGlobalSlotAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetGlobalSlotAVM2Item.java index 2f1af41fc..86ee9e550 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetGlobalSlotAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetGlobalSlotAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphPart; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -41,9 +42,9 @@ public class SetGlobalSlotAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("setglobalslot(" + slotId + ",", writer); - value.toString(writer, constants, localRegNames, fullyQualifiedNames); + value.toString(writer, localData); return hilight(")", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetLocalAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetLocalAVM2Item.java index 0b4666117..4d496a317 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetLocalAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetLocalAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.abc.avm2.model.clauses.AssignmentAVM2Item; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -36,9 +37,9 @@ public class SetLocalAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assig } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - hilight(localRegName(localRegNames, regIndex) + " = ", writer); - return value.toString(writer, constants, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + hilight(localRegName(localData.localRegNames, regIndex) + " = ", writer); + return value.toString(writer, localData); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetPropertyAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetPropertyAVM2Item.java index b278932c6..a32cfa295 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetPropertyAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetPropertyAVM2Item.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.clauses.AssignmentAVM2Item; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphPart; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -44,10 +45,10 @@ public class SetPropertyAVM2Item extends AVM2Item implements SetTypeAVM2Item, As } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - formatProperty(writer, constants, object, propertyName, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + formatProperty(writer, object, propertyName, localData); hilight(" = ", writer); - return value.toString(writer, constants, localRegNames, fullyQualifiedNames); + return value.toString(writer, localData); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSlotAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSlotAVM2Item.java index 01a46f207..2e1080a4f 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSlotAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSlotAVM2Item.java @@ -23,6 +23,7 @@ import com.jpexs.decompiler.flash.abc.types.Multiname; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphPart; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -45,15 +46,13 @@ public class SetSlotAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assign } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - getName(writer, constants, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + getName(writer, localData); hilight(" = ", writer); - return value.toString(writer, constants, localRegNames, fullyQualifiedNames); + return value.toString(writer, localData); } - public String getName(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - String ret = ""; - + public HilightedTextWriter getName(HilightedTextWriter writer, LocalData localData) { /*ret = scope.toString(constants, localRegNames) + "."; if (!(scope instanceof NewActivationAVM2Item)) { ret = scope.toString(constants, localRegNames) + "."; @@ -66,9 +65,9 @@ public class SetSlotAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assign } }*/ if (slotName == null) { - return ret + hilight("/*UnknownSlot*/", writer); + return hilight("/*UnknownSlot*/", writer); } - return ret + hilight(slotName.getName(constants, fullyQualifiedNames), writer); + return hilight(slotName.getName(localData.constantsAvm2, localData.fullyQualifiedNames), writer); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSuperAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSuperAVM2Item.java index 75959205a..b507cb5c3 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSuperAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/SetSuperAVM2Item.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.flash.helpers.hilight.Highlighting; import com.jpexs.decompiler.graph.GraphPart; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -44,15 +45,15 @@ public class SetSuperAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - if (!object.toString(false, constants, localRegNames, fullyQualifiedNames).equals("this")) { - object.toString(writer, constants, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + if (!object.toString(false, localData).equals("this")) { + object.toString(writer, localData); hilight(".", writer); } hilight("super.", writer); - propertyName.toString(writer, constants, localRegNames, fullyQualifiedNames); + propertyName.toString(writer, localData); hilight(" = ", writer); - return value.toString(writer, constants, localRegNames, fullyQualifiedNames); + return value.toString(writer, localData); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/StringAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/StringAVM2Item.java index 595fe8b81..215f9c6ca 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/StringAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/StringAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -33,7 +34,7 @@ public class StringAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("\"" + Helper.escapeString(value) + "\"", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ThisAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ThisAVM2Item.java index 7b91edc40..2430d56f5 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ThisAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ThisAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.types.Multiname; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,7 +33,7 @@ public class ThisAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("this", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ThrowAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ThrowAVM2Item.java index 253fbd6cd..8cf05c2c7 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ThrowAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/ThrowAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,8 +33,8 @@ public class ThrowAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("throw ", writer); - return value.toString(writer, constants, localRegNames, fullyQualifiedNames); + return value.toString(writer, localData); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/UndefinedAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/UndefinedAVM2Item.java index 0a060bb98..4083ee6ac 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/UndefinedAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/UndefinedAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.ecma.Undefined; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -30,7 +31,7 @@ public class UndefinedAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("undefined", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/UnparsedAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/UnparsedAVM2Item.java index 67897e07c..1723425e0 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/UnparsedAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/UnparsedAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -32,7 +33,7 @@ public class UnparsedAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight(value, writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithAVM2Item.java index 5a1260c37..e31b360fc 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -43,9 +44,9 @@ public class WithAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("with(", writer); - scope.toString(writer, constants, localRegNames, fullyQualifiedNames); + scope.toString(writer, localData); hilight(")", writer).appendNewLine(); hilight("{", writer).appendNewLine(); hilight(Graph.INDENTOPEN, writer).appendNewLine(); diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithEndAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithEndAVM2Item.java index 1d98cde9f..6ead052c2 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithEndAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithEndAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -33,7 +34,7 @@ public class WithEndAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("}", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithObjectAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithObjectAVM2Item.java index 458cde225..666c86d98 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithObjectAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/WithObjectAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -33,7 +34,7 @@ public class WithObjectAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return writer; } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/XMLAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/XMLAVM2Item.java index 1def8117d..c86d1d8c2 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/XMLAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/XMLAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -37,12 +38,12 @@ public class XMLAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { for (GraphTargetItem part : parts) { if (part instanceof StringAVM2Item) { hilight(((StringAVM2Item) part).value, writer); } else { - part.toString(writer, constants, localRegNames, fullyQualifiedNames); + part.toString(writer, localData); } } return writer; diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/DeclarationAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/DeclarationAVM2Item.java index c5894ec71..cfeca9664 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/DeclarationAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/DeclarationAVM2Item.java @@ -24,6 +24,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.SetLocalAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.SetSlotAVM2Item; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -48,7 +49,7 @@ public class DeclarationAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { if (assignment instanceof SetLocalAVM2Item) { SetLocalAVM2Item lti = (SetLocalAVM2Item) assignment; String type = "*"; @@ -59,19 +60,19 @@ public class DeclarationAVM2Item extends AVM2Item { type = ((ConvertAVM2Item) lti.value).type; } hilight("var ", writer); - hilight(localRegName(localRegNames, lti.regIndex) + ":" + type + " = ", writer); - return lti.value.toString(writer, constants, localRegNames, fullyQualifiedNames); + hilight(localRegName(localData.localRegNames, lti.regIndex) + ":" + type + " = ", writer); + return lti.value.toString(writer, localData); } if (assignment instanceof SetSlotAVM2Item) { SetSlotAVM2Item ssti = (SetSlotAVM2Item) assignment; hilight("var ", writer); - ssti.getName(writer, constants, localRegNames, fullyQualifiedNames); + ssti.getName(writer, localData); hilight(":", writer); hilight(type, writer); hilight(" = ", writer); - return ssti.value.toString(writer, constants, localRegNames, fullyQualifiedNames); + return ssti.value.toString(writer, localData); } hilight("var ", writer); - return assignment.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)); + return assignment.toString(writer, localData); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ExceptionAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ExceptionAVM2Item.java index fea296eb1..c43d982ef 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ExceptionAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ExceptionAVM2Item.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item; import com.jpexs.decompiler.flash.abc.types.ABCException; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -33,7 +34,7 @@ public class ExceptionAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - return hilight(exception.getVarName(constants, fullyQualifiedNames), writer); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + return hilight(exception.getVarName(localData.constantsAvm2, localData.fullyQualifiedNames), writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/FilterAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/FilterAVM2Item.java index e1cf67450..c921d5a56 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/FilterAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/FilterAVM2Item.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -40,10 +41,10 @@ public class FilterAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { - collection.toString(writer, constants, localRegNames, fullyQualifiedNames); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + collection.toString(writer, localData); hilight(".(", writer); - expression.toString(writer, constants, localRegNames, fullyQualifiedNames); + expression.toString(writer, localData); return hilight(")", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForEachInAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForEachInAVM2Item.java index 811f5232d..edd6d8d9e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForEachInAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForEachInAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model.clauses; import com.jpexs.decompiler.flash.abc.avm2.model.InAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.LocalRegAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.SetTypeAVM2Item; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.Block; import com.jpexs.decompiler.graph.Graph; @@ -26,8 +27,10 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; import com.jpexs.decompiler.graph.model.ContinueItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.decompiler.graph.model.LoopItem; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public class ForEachInAVM2Item extends LoopItem implements Block { @@ -69,7 +72,7 @@ public class ForEachInAVM2Item extends LoopItem implements Block { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("loop" + loop.id + ":", writer).appendNewLine(); hilight("for each (", writer); expression.toString(writer, localData); @@ -78,7 +81,7 @@ public class ForEachInAVM2Item extends LoopItem implements Block { hilight(Graph.INDENTOPEN, writer).appendNewLine(); for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, localData).appendNewLine(); + ti.toStringSemicoloned(writer, localData.constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForInAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForInAVM2Item.java index 78b4f4735..766cbd929 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForInAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/ForInAVM2Item.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model.clauses; import com.jpexs.decompiler.flash.abc.avm2.model.InAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.LocalRegAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.SetTypeAVM2Item; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.Block; import com.jpexs.decompiler.graph.Graph; @@ -26,8 +27,10 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; import com.jpexs.decompiler.graph.model.ContinueItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.decompiler.graph.model.LoopItem; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public class ForInAVM2Item extends LoopItem implements Block { @@ -69,7 +72,7 @@ public class ForInAVM2Item extends LoopItem implements Block { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("loop" + loop.id + ":", writer).appendNewLine(); hilight("for (", writer); expression.toString(writer, localData); @@ -78,7 +81,7 @@ public class ForInAVM2Item extends LoopItem implements Block { hilight(Graph.INDENTOPEN, writer).appendNewLine(); for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, localData).appendNewLine(); + ti.toStringSemicoloned(writer, localData.constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/TryAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/TryAVM2Item.java index 5751dea8d..12afe358c 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/TryAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/TryAVM2Item.java @@ -24,6 +24,7 @@ import com.jpexs.decompiler.graph.Block; import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.model.ContinueItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.ArrayList; import java.util.HashMap; @@ -54,27 +55,27 @@ public class TryAVM2Item extends AVM2Item implements Block { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("try", writer).appendNewLine(); hilight("{", writer).appendNewLine(); hilight(Graph.INDENTOPEN, writer).appendNewLine(); for (GraphTargetItem ti : tryCommands) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)).appendNewLine(); + ti.toStringSemicoloned(writer, localData.constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); hilight("}", writer); for (int e = 0; e < catchExceptions.size(); e++) { writer.appendNewLine(); - hilight("catch(" + catchExceptions.get(e).getVarName(constants, fullyQualifiedNames) + ":" + catchExceptions.get(e).getTypeName(constants, fullyQualifiedNames) + ")", writer); + hilight("catch(" + catchExceptions.get(e).getVarName(localData.constantsAvm2, localData.fullyQualifiedNames) + ":" + catchExceptions.get(e).getTypeName(localData.constantsAvm2, localData.fullyQualifiedNames) + ")", writer); writer.appendNewLine(); hilight("{", writer).appendNewLine(); hilight(Graph.INDENTOPEN, writer).appendNewLine(); List commands = catchCommands.get(e); for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)).appendNewLine(); + ti.toStringSemicoloned(writer, localData.constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); @@ -87,7 +88,7 @@ public class TryAVM2Item extends AVM2Item implements Block { hilight(Graph.INDENTOPEN, writer).appendNewLine(); for (GraphTargetItem ti : finallyCommands) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)).appendNewLine(); + ti.toStringSemicoloned(writer, localData.constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/AddAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/AddAVM2Item.java index 75fbe10ab..b7743853b 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/AddAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/AddAVM2Item.java @@ -17,11 +17,14 @@ package com.jpexs.decompiler.flash.abc.avm2.model.operations; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.ecma.EcmaScript; import com.jpexs.decompiler.flash.ecma.EcmaType; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; +import com.jpexs.decompiler.graph.model.LocalData; +import java.util.HashMap; import java.util.List; public class AddAVM2Item extends BinaryOpItem { @@ -31,7 +34,7 @@ public class AddAVM2Item extends BinaryOpItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { if (rightSide.precedence >= precedence) { //string + vs number + if (leftSide.precedence > precedence) { hilight("(", writer); diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/DeletePropertyAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/DeletePropertyAVM2Item.java index 16f608d57..95043450f 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/DeletePropertyAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/DeletePropertyAVM2Item.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.FullMultinameAVM2Item; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.HashMap; import java.util.List; @@ -37,11 +38,11 @@ public class DeletePropertyAVM2Item extends AVM2Item { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("delete ", writer); - object.toString(writer, constants, localRegNames, fullyQualifiedNames); + object.toString(writer, localData); hilight("[", writer); - propertyName.toString(writer, constants, localRegNames, fullyQualifiedNames); + propertyName.toString(writer, localData); return hilight("]", writer); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/SubtractAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/SubtractAVM2Item.java index 1d184b311..5d82c9071 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/SubtractAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/SubtractAVM2Item.java @@ -17,10 +17,13 @@ package com.jpexs.decompiler.flash.abc.avm2.model.operations; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.ecma.EcmaScript; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; +import com.jpexs.decompiler.graph.model.LocalData; +import java.util.HashMap; import java.util.List; public class SubtractAVM2Item extends BinaryOpItem { @@ -35,7 +38,7 @@ public class SubtractAVM2Item extends BinaryOpItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { if (rightSide.precedence >= precedence) { // >= add or subtract too if (leftSide.precedence > precedence) { hilight("(", writer); diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/types/traits/TraitSlotConst.java b/trunk/src/com/jpexs/decompiler/flash/abc/types/traits/TraitSlotConst.java index 45edf77bd..0bacd8413 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/types/traits/TraitSlotConst.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/types/traits/TraitSlotConst.java @@ -25,6 +25,7 @@ import com.jpexs.decompiler.flash.helpers.hilight.Highlighting; import com.jpexs.decompiler.flash.tags.ABCContainerTag; import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.HashMap; import java.util.List; @@ -92,7 +93,7 @@ public class TraitSlotConst extends Trait implements TraitWithSlot { } if (assignedValue != null) { - valueStr = Highlighting.trim(assignedValue.toString(highlight, abc.constants, new HashMap(), fullyQualifiedNames)); + valueStr = Highlighting.trim(assignedValue.toString(highlight, LocalData.create(abc.constants, new HashMap(), fullyQualifiedNames))); if (highlight && (parent instanceof TraitClass)) { TraitClass tc = (TraitClass) parent; int traitInitId = abc.class_info[tc.class_info].static_traits.traits.length diff --git a/trunk/src/com/jpexs/decompiler/flash/action/Action.java b/trunk/src/com/jpexs/decompiler/flash/action/Action.java index 988ee3ab7..d6fc9bf70 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/Action.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/Action.java @@ -56,6 +56,7 @@ import com.jpexs.decompiler.graph.GraphSourceItemContainer; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.model.CommentItem; import com.jpexs.decompiler.graph.model.IfItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.decompiler.graph.model.NotItem; import com.jpexs.decompiler.graph.model.ScriptEndItem; import com.jpexs.helpers.Helper; @@ -726,7 +727,7 @@ public class Action implements GraphSourceItem { List tree = actionsToTree(new HashMap(), new HashMap(), new HashMap(), actions, version, staticOperation, path); - return Graph.graphToString(tree, highlight, true); + return Graph.graphToString(tree, highlight, true, new LocalData()); } }, timeout, TimeUnit.SECONDS); } catch (TimeoutException ex) { diff --git a/trunk/src/com/jpexs/decompiler/flash/action/ActionListReader.java b/trunk/src/com/jpexs/decompiler/flash/action/ActionListReader.java index bef9f846d..bd86881d0 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/ActionListReader.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/ActionListReader.java @@ -40,6 +40,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemContainer; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.NotCompileTimeItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import com.jpexs.helpers.ReReadableInputStream; import java.io.ByteArrayInputStream; @@ -667,12 +668,12 @@ public class ActionListReader { if (a instanceof GraphSourceItemContainer) { atos = a.toString(); } - System.err.println("readActionListAtPos ip: " + (ip - startIp) + " (0x" + Helper.formatAddress(ip - startIp) + ") " + " action(len " + a.actionLength + "): " + atos + (a.isIgnored() ? " (ignored)" : "") + " stack:" + Helper.stackToString(stack, Helper.toList(cpool)) + " " + Helper.byteArrToString(a.getBytes(version))); + System.err.println("readActionListAtPos ip: " + (ip - startIp) + " (0x" + Helper.formatAddress(ip - startIp) + ") " + " action(len " + a.actionLength + "): " + atos + (a.isIgnored() ? " (ignored)" : "") + " stack:" + Helper.stackToString(stack, LocalData.create(cpool)) + " " + Helper.byteArrToString(a.getBytes(version))); @SuppressWarnings("unchecked") HashMap vars = (HashMap) localData.get(1); System.err.print("variables: "); for (Map.Entry v : vars.entrySet()) { - System.err.print("'" + v + "' = " + v.getValue().toString(false, cpool) + ", "); + System.err.print("'" + v + "' = " + v.getValue().toString(false, LocalData.create(cpool)) + ", "); } System.err.println(); String add = ""; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/ActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/ActionItem.java index f7594a14b..ace267224 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/ActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/ActionItem.java @@ -22,8 +22,10 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.model.LocalData; import java.io.Serializable; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public abstract class ActionItem extends GraphTargetItem implements Serializable { @@ -38,11 +40,6 @@ public abstract class ActionItem extends GraphTargetItem implements Serializable public abstract HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants); - public HilightedTextWriter toString(HilightedTextWriter writer) { - ConstantPool c = null; - return toString(writer, c); - } - protected boolean isEmptyString(GraphTargetItem target) { if (target instanceof DirectValueActionItem) { if (((DirectValueActionItem) target).value instanceof String) { @@ -69,12 +66,8 @@ public abstract class ActionItem extends GraphTargetItem implements Serializable } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { - if (localData.isEmpty()) { - ConstantPool c = null; - return toString(writer, c); - } - return toString(writer, (ConstantPool) localData.get(0)); + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { + return toString(writer, localData.constants); } protected List toSourceCall(List localData, SourceGenerator gen, List list) { diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java index c3886193f..cee4d0647 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.List; public class CallFunctionActionItem extends ActionItem { @@ -50,7 +51,7 @@ public class CallFunctionActionItem extends ActionItem { if (t > 0) { hilight(",", writer); } - arguments.get(t).toStringNL(writer, constants); + arguments.get(t).toStringNL(writer, LocalData.create(constants)); } return hilight(")", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java index fe58ce8b2..0a250d68c 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java @@ -23,6 +23,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.ArrayList; import java.util.List; @@ -79,7 +80,7 @@ public class CallMethodActionItem extends ActionItem { if (t > 0) { hilight(",", writer); } - arguments.get(t).toStringNL(writer, constants); + arguments.get(t).toStringNL(writer, LocalData.create(constants)); } return hilight(")", writer); diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/CastOpActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/CastOpActionItem.java index ad7d456b5..5354d9340 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/CastOpActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/CastOpActionItem.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.ArrayList; import java.util.List; @@ -50,7 +51,7 @@ public class CastOpActionItem extends ActionItem { hilight("(", writer); stripQuotes(constructor, constants, writer); hilight(")", writer); - return object.toString(writer, Helper.toList(constants)); + return object.toString(writer, LocalData.create(constants)); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java index 96865aa79..16a3b946a 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java @@ -86,7 +86,7 @@ public class DirectValueActionItem extends ActionItem { } @Override - public HilightedTextWriter toStringNoQuotes(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toStringNoQuotes(HilightedTextWriter writer, ConstantPool constants) { if (value instanceof Double) { if (Double.compare((double) (Double) value, 0) == 0) { return hilight("0", writer); diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/EnumerateActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/EnumerateActionItem.java index 17c7f7c42..6edee1e53 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/EnumerateActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/EnumerateActionItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.ArrayList; import java.util.List; @@ -43,7 +44,7 @@ public class EnumerateActionItem extends ActionItem { @Override public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) { hilight("enumerate ", writer); - return object.toString(writer, Helper.toList(constants)); + return object.toString(writer, LocalData.create(constants)); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/ExtendsActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/ExtendsActionItem.java index 57b84c8d6..1830cfe31 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/ExtendsActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/ExtendsActionItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.ArrayList; import java.util.List; @@ -36,9 +37,7 @@ public class ExtendsActionItem extends ActionItem { @Override public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) { - List localData = new ArrayList<>(); - localData.add(constants); - subclass.toString(writer, localData); + subclass.toString(writer, LocalData.create(constants)); hilight(" extends ", writer); return stripQuotes(superclass, constants, writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java index b23a8c4cd..4adbfba0d 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java @@ -30,6 +30,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.ArrayList; import java.util.HashMap; @@ -98,7 +99,7 @@ public class FunctionActionItem extends ActionItem { hilight(")", writer).appendNewLine(); hilight("{", writer).appendNewLine(); hilight(Graph.INDENTOPEN, writer).appendNewLine(); - writer.appendNoHilight(Graph.graphToString(actions, writer.getIsHighlighted(), false, constants)); + writer.appendNoHilight(Graph.graphToString(actions, writer.getIsHighlighted(), false, LocalData.create(constants))); hilight(Graph.INDENTCLOSE, writer).appendNewLine(); return hilight("}", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/ImplementsOpActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/ImplementsOpActionItem.java index f97b8f0f1..eda909e2c 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/ImplementsOpActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/ImplementsOpActionItem.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.List; @@ -36,13 +37,13 @@ public class ImplementsOpActionItem extends ActionItem { @Override public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) { - subclass.toString(writer, Helper.toList(constants)); + subclass.toString(writer, LocalData.create(constants)); hilight(" implements ", writer); for (int i = 0; i < superclasses.size(); i++) { if (i > 0) { hilight(",", writer); } - superclasses.get(i).toString(writer, Helper.toList(constants)); + superclasses.get(i).toString(writer, LocalData.create(constants)); } return writer; } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/TemporaryRegister.java b/trunk/src/com/jpexs/decompiler/flash/action/model/TemporaryRegister.java index f821fb8ca..3a326b5d0 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/TemporaryRegister.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/TemporaryRegister.java @@ -19,6 +19,8 @@ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; +import java.util.HashMap; import java.util.List; /** @@ -45,7 +47,7 @@ public class TemporaryRegister extends GraphTargetItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return value.toString(writer, localData); } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/ThrowActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/ThrowActionItem.java index d36df90ee..9276d38ec 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/ThrowActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/ThrowActionItem.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.List; @@ -35,7 +36,7 @@ public class ThrowActionItem extends ActionItem { @Override public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) { hilight("throw ", writer); - return value.toString(writer, Helper.toList(constants)); + return value.toString(writer, LocalData.create(constants)); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/ToNumberActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/ToNumberActionItem.java index 6a5917a45..03a46b041 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/ToNumberActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/ToNumberActionItem.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.List; @@ -35,7 +36,7 @@ public class ToNumberActionItem extends ActionItem { @Override public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) { hilight("Number(", writer); - value.toString(writer, Helper.toList(constants)); + value.toString(writer, LocalData.create(constants)); return hilight(")", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/ToStringActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/ToStringActionItem.java index 83fac6719..d75839368 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/ToStringActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/ToStringActionItem.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.List; @@ -35,7 +36,7 @@ public class ToStringActionItem extends ActionItem { @Override public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) { hilight("String(", writer); - value.toString(writer, Helper.toList(constants)); + value.toString(writer, LocalData.create(constants)); return hilight(")", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/TypeOfActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/TypeOfActionItem.java index 10ebad22d..a84d7e576 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/TypeOfActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/TypeOfActionItem.java @@ -24,6 +24,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.List; @@ -37,7 +38,7 @@ public class TypeOfActionItem extends ActionItem { @Override public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) { hilight("typeof(", writer); - value.toString(writer, Helper.toList(constants)); + value.toString(writer, LocalData.create(constants)); return hilight(")", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java index 693dd7635..f4c509eda 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java @@ -85,11 +85,11 @@ public class ClassActionItem extends ActionItem implements Block { } Set allMembers = new HashSet<>(); for (GraphTargetItem it : allUsages) { - allMembers.add(it.toStringNoQuotes(false, new ArrayList<>())); + allMembers.add(it.toStringNoQuotes(false, null)); } uninitializedVars.addAll(allMembers); for (MyEntry v : vars) { - String s = v.key.toStringNoQuotes(false, new ArrayList<>()); + String s = v.key.toStringNoQuotes(false, null); if (uninitializedVars.contains(s)) { uninitializedVars.remove(s); } @@ -158,10 +158,10 @@ public class ClassActionItem extends ActionItem implements Block { @Override public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) { hilight("class ", writer); - className.toStringNoQuotes(writer, Helper.toList(constants)); + className.toStringNoQuotes(writer, constants); if (extendsOp != null) { hilight(" extends ", writer); - extendsOp.toStringNoQuotes(writer, Helper.toList(constants)); + extendsOp.toStringNoQuotes(writer, constants); } if (!implementsOp.isEmpty()) { hilight(" implements ", writer); diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/IfFrameLoadedActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/IfFrameLoadedActionItem.java index 618747ae6..a8324c563 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/IfFrameLoadedActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/IfFrameLoadedActionItem.java @@ -26,6 +26,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.model.ContinueItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.ArrayList; import java.util.List; @@ -51,7 +52,7 @@ public class IfFrameLoadedActionItem extends ActionItem implements Block { hilight(")", writer).appendNewLine(); hilight("{", writer).appendNewLine(); hilight(Graph.INDENTOPEN, writer).appendNewLine(); - writer.appendNoHilight(Graph.graphToString(actions, writer.getIsHighlighted(), false, constants)); + writer.appendNoHilight(Graph.graphToString(actions, writer.getIsHighlighted(), false, LocalData.create(constants))); hilight(Graph.INDENTCLOSE, writer).appendNewLine(); return hilight("}", writer); } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TryActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TryActionItem.java index c5cfdad0f..adfc42ce1 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TryActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TryActionItem.java @@ -62,11 +62,9 @@ public class TryActionItem extends ActionItem implements Block { hilight("try", writer).appendNewLine(); hilight("{", writer).appendNewLine(); hilight(Graph.INDENTOPEN, writer).appendNewLine(); - List localData = new ArrayList<>(); - localData.add(constants); for (GraphTargetItem ti : tryCommands) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, localData).appendNewLine(); + ti.toStringSemicoloned(writer, constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); @@ -74,14 +72,14 @@ public class TryActionItem extends ActionItem implements Block { for (int e = 0; e < catchExceptions.size(); e++) { writer.appendNewLine(); hilight("catch(", writer); - catchExceptions.get(e).toStringNoQuotes(writer, localData); + catchExceptions.get(e).toStringNoQuotes(writer, constants); hilight(")", writer).appendNewLine(); hilight("{", writer).appendNewLine(); hilight(Graph.INDENTOPEN, writer).appendNewLine(); List commands = catchCommands.get(e); for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, localData).appendNewLine(); + ti.toStringSemicoloned(writer, constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); @@ -94,7 +92,7 @@ public class TryActionItem extends ActionItem implements Block { hilight(Graph.INDENTOPEN, writer).appendNewLine(); for (GraphTargetItem ti : finallyCommands) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, localData).appendNewLine(); + ti.toStringSemicoloned(writer, constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/WithActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/WithActionItem.java index fd34f81e2..c5f8e0505 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/WithActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/WithActionItem.java @@ -26,6 +26,7 @@ import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.model.LocalData; import java.util.ArrayList; import java.util.List; @@ -49,8 +50,7 @@ public class WithActionItem extends ActionItem { @Override public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) { String ret; - List localData = new ArrayList<>(); - localData.add(constants); + LocalData localData = LocalData.create(constants); hilight("with(", writer); scope.toString(writer, localData); hilight(")", writer).appendNewLine(); diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/operations/AddActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/operations/AddActionItem.java index 6cc3ac73c..235f11bf7 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/operations/AddActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/operations/AddActionItem.java @@ -17,6 +17,7 @@ package com.jpexs.decompiler.flash.action.model.operations; import com.jpexs.decompiler.flash.action.Action; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.action.swf5.ActionAdd2; import com.jpexs.decompiler.flash.ecma.*; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; @@ -24,6 +25,8 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.model.BinaryOpItem; +import com.jpexs.decompiler.graph.model.LocalData; +import java.util.HashMap; import java.util.List; public class AddActionItem extends BinaryOpItem { @@ -36,7 +39,7 @@ public class AddActionItem extends BinaryOpItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { if (rightSide.precedence >= precedence) { //string + vs number + String ret = ""; if (leftSide.precedence > precedence) { diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java index 10afca90d..248961b40 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java @@ -16,6 +16,7 @@ */ package com.jpexs.decompiler.flash.action.model.operations; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.action.swf4.ActionSubtract; import com.jpexs.decompiler.flash.ecma.*; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; @@ -23,6 +24,8 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.model.BinaryOpItem; +import com.jpexs.decompiler.graph.model.LocalData; +import java.util.HashMap; import java.util.List; public class SubtractActionItem extends BinaryOpItem { @@ -37,7 +40,7 @@ public class SubtractActionItem extends BinaryOpItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { if (rightSide.precedence >= precedence) { // >= add or subtract too String ret = ""; if (leftSide.precedence > precedence) { diff --git a/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java b/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java index d66737c6f..72d0a220e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java @@ -179,12 +179,10 @@ public class ActionPush extends Action { return surroundWithAction(baos.toByteArray(), version); } - public ActionPush(Object... values) { + public ActionPush(Object value) { super(0x96, 0); this.values = new ArrayList<>(); - for (Object o : values) { - this.values.add(o); - } + this.values.add(value); } public ActionPush(FlasmLexer lexer, List constantPool) throws IOException, ParseException { diff --git a/trunk/src/com/jpexs/decompiler/graph/Graph.java b/trunk/src/com/jpexs/decompiler/graph/Graph.java index d76c69681..bc4339c5e 100644 --- a/trunk/src/com/jpexs/decompiler/graph/Graph.java +++ b/trunk/src/com/jpexs/decompiler/graph/Graph.java @@ -18,6 +18,7 @@ package com.jpexs.decompiler.graph; import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.ecma.EcmaScript; +import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.flash.helpers.hilight.Highlighting; import com.jpexs.decompiler.graph.model.AndItem; import com.jpexs.decompiler.graph.model.BreakItem; @@ -27,6 +28,7 @@ import com.jpexs.decompiler.graph.model.ExitItem; import com.jpexs.decompiler.graph.model.ForItem; import com.jpexs.decompiler.graph.model.IfItem; import com.jpexs.decompiler.graph.model.IntegerValueItem; +import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.decompiler.graph.model.LogicalOpItem; import com.jpexs.decompiler.graph.model.LoopItem; import com.jpexs.decompiler.graph.model.NotItem; @@ -2155,17 +2157,15 @@ public class Graph { * @param localData * @return String */ - public static String graphToString(List tree, boolean highlight, boolean replaceIndents, Object... localData) { - StringBuilder ret = new StringBuilder(); - List localDataList = Arrays.asList(localData); + public static String graphToString(List tree, boolean highlight, boolean replaceIndents, LocalData localData) { + HilightedTextWriter writer = new HilightedTextWriter(highlight); for (GraphTargetItem ti : tree) { if (!ti.isEmpty()) { - ret.append(ti.toStringSemicoloned(highlight, localDataList)); - ret.append("\r\n"); + ti.toStringSemicoloned(writer, localData.constants).appendNewLine(); } } - String[] parts = ret.toString().split("\r\n"); - ret = new StringBuilder(); + String[] parts = writer.toString().split("\r\n"); + StringBuilder ret = new StringBuilder(); String labelPattern = "loop(switch)?[0-9]*:"; try { diff --git a/trunk/src/com/jpexs/decompiler/graph/GraphTargetItem.java b/trunk/src/com/jpexs/decompiler/graph/GraphTargetItem.java index 0f67cc3e6..172b130c5 100644 --- a/trunk/src/com/jpexs/decompiler/graph/GraphTargetItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/GraphTargetItem.java @@ -16,11 +16,14 @@ */ package com.jpexs.decompiler.graph; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.flash.helpers.hilight.Highlighting; import com.jpexs.decompiler.graph.model.BinaryOp; +import com.jpexs.decompiler.graph.model.LocalData; import java.io.Serializable; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; /** @@ -87,28 +90,14 @@ public abstract class GraphTargetItem implements Serializable { return writer.append(str, src, pos); } - public String toStringSemicoloned(boolean highlight, List localData) { - HilightedTextWriter writer = new HilightedTextWriter(highlight); - toStringSemicoloned(writer, localData); - return writer.toString(); - } - - public HilightedTextWriter toStringSemicoloned(HilightedTextWriter writer, List localData) { - toString(writer, localData); + public HilightedTextWriter toStringSemicoloned(HilightedTextWriter writer, ConstantPool constants) { + toString(writer, constants); if (needsSemicolon()) { hilight(";", writer); } return writer; } - public HilightedTextWriter toStringSemicoloned(HilightedTextWriter writer, Object... localData) { - List localData2 = new ArrayList<>(); - for (Object o : localData) { - localData2.add(o); - } - return toStringSemicoloned(writer, localData2); - } - public boolean needsSemicolon() { return true; } @@ -118,22 +107,20 @@ public abstract class GraphTargetItem implements Serializable { return this.getClass().getName(); } - public abstract HilightedTextWriter toString(HilightedTextWriter writer, List localData); + public abstract HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData); - public String toString(boolean highlight, Object... localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) { + LocalData localData = new LocalData(); + localData.constants = constants; + return toString(writer, localData); + } + + public String toString(boolean highlight, LocalData localData) { HilightedTextWriter writer = new HilightedTextWriter(highlight); toString(writer, localData); return writer.toString(); } - public HilightedTextWriter toString(HilightedTextWriter writer, Object... localData) { - List localData2 = new ArrayList<>(); - for (Object o : localData) { - localData2.add(o); - } - return toString(writer, localData2); - } - public int getPrecedence() { return precedence; } @@ -161,28 +148,14 @@ public abstract class GraphTargetItem implements Serializable { return null; } - public String toStringNoQuotes(boolean highlight, List localData) { + public String toStringNoQuotes(boolean highlight, ConstantPool constants) { HilightedTextWriter writer = new HilightedTextWriter(highlight); - toStringNoQuotes(writer, localData); + toStringNoQuotes(writer, constants); return writer.toString(); } - public HilightedTextWriter toStringNoQuotes(HilightedTextWriter writer, List localData) { - return toString(writer, localData); - } - - public String toStringNoQuotes(boolean highlight, Object... localData) { - HilightedTextWriter writer = new HilightedTextWriter(highlight); - toStringNoQuotes(writer, localData); - return writer.toString(); - } - - public HilightedTextWriter toStringNoQuotes(HilightedTextWriter writer, Object... localData) { - List localData2 = new ArrayList<>(); - for (Object o : localData) { - localData2.add(o); - } - return toStringNoQuotes(writer, localData2); + public HilightedTextWriter toStringNoQuotes(HilightedTextWriter writer, ConstantPool constants) { + return toString(writer, constants); } public GraphTargetItem getNotCoerced() { @@ -197,12 +170,8 @@ public abstract class GraphTargetItem implements Serializable { return false; } - public String toStringNL(HilightedTextWriter writer, Object... localData) { - List localData2 = new ArrayList<>(); - for (Object o : localData) { - localData2.add(o); - } - return toString(writer, localData2) + (needsNewLine() ? "\r\n" : ""); + public String toStringNL(HilightedTextWriter writer, LocalData localData) { + return toString(writer, localData) + (needsNewLine() ? "\r\n" : ""); } public boolean isEmpty() { diff --git a/trunk/src/com/jpexs/decompiler/graph/MarkItem.java b/trunk/src/com/jpexs/decompiler/graph/MarkItem.java index e990462fa..baf1cd0b7 100644 --- a/trunk/src/com/jpexs/decompiler/graph/MarkItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/MarkItem.java @@ -16,7 +16,10 @@ */ package com.jpexs.decompiler.graph; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; +import java.util.HashMap; import java.util.List; /** @@ -33,7 +36,7 @@ public class MarkItem extends GraphTargetItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("//decompiler mark:" + mark, writer); } diff --git a/trunk/src/com/jpexs/decompiler/graph/NotCompileTimeItem.java b/trunk/src/com/jpexs/decompiler/graph/NotCompileTimeItem.java index d48cf0dc9..f219d51f9 100644 --- a/trunk/src/com/jpexs/decompiler/graph/NotCompileTimeItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/NotCompileTimeItem.java @@ -16,7 +16,10 @@ */ package com.jpexs.decompiler.graph; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; +import com.jpexs.decompiler.graph.model.LocalData; +import java.util.HashMap; import java.util.List; /** @@ -46,7 +49,7 @@ public class NotCompileTimeItem extends GraphTargetItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return object.toString(writer, localData); } diff --git a/trunk/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java b/trunk/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java index 83f3008c7..77fd0020c 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java @@ -16,12 +16,14 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphPart; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public abstract class BinaryOpItem extends GraphTargetItem implements BinaryOp { @@ -47,7 +49,7 @@ public abstract class BinaryOpItem extends GraphTargetItem implements BinaryOp { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { if (leftSide.getPrecedence() > precedence) { hilight("(", writer); leftSide.toString(writer, localData); diff --git a/trunk/src/com/jpexs/decompiler/graph/model/BlockItem.java b/trunk/src/com/jpexs/decompiler/graph/model/BlockItem.java index 44e6a713c..9ea39a536 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/BlockItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/BlockItem.java @@ -16,11 +16,13 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.Graph; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.HashMap; import java.util.List; /** @@ -37,7 +39,7 @@ public class BlockItem extends GraphTargetItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("{", writer).appendNewLine(); hilight(Graph.INDENTOPEN, writer).appendNewLine(); writer.appendNoHilight(Graph.graphToString(commands, writer.getIsHighlighted(), false, localData)); diff --git a/trunk/src/com/jpexs/decompiler/graph/model/BreakItem.java b/trunk/src/com/jpexs/decompiler/graph/model/BreakItem.java index cf314a03f..8e980350a 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/BreakItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/BreakItem.java @@ -1,9 +1,11 @@ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.HashMap; import java.util.List; /** @@ -20,7 +22,7 @@ public class BreakItem extends GraphTargetItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("break ", writer); return hilight("loop" + loopId, writer); } diff --git a/trunk/src/com/jpexs/decompiler/graph/model/CommaExpressionItem.java b/trunk/src/com/jpexs/decompiler/graph/model/CommaExpressionItem.java index f82641ade..3c37869b6 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/CommaExpressionItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/CommaExpressionItem.java @@ -16,10 +16,12 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.HashMap; import java.util.List; /** @@ -36,7 +38,7 @@ public class CommaExpressionItem extends GraphTargetItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { boolean first = true; for (GraphTargetItem t : commands) { if (!first) { diff --git a/trunk/src/com/jpexs/decompiler/graph/model/CommentItem.java b/trunk/src/com/jpexs/decompiler/graph/model/CommentItem.java index 05fa576fb..a42865ae8 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/CommentItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/CommentItem.java @@ -16,8 +16,10 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import java.util.HashMap; import java.util.List; /** @@ -34,7 +36,7 @@ public class CommentItem extends GraphTargetItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("/* " + comment + " */", writer); } diff --git a/trunk/src/com/jpexs/decompiler/graph/model/ContinueItem.java b/trunk/src/com/jpexs/decompiler/graph/model/ContinueItem.java index 0aa6f2ff2..cbad16204 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/ContinueItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/ContinueItem.java @@ -1,9 +1,11 @@ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.HashMap; import java.util.List; /** @@ -20,7 +22,7 @@ public class ContinueItem extends GraphTargetItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("continue ", writer); return hilight("loop" + loopId, writer); } diff --git a/trunk/src/com/jpexs/decompiler/graph/model/DoWhileItem.java b/trunk/src/com/jpexs/decompiler/graph/model/DoWhileItem.java index 831444f38..1d7ba016d 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/DoWhileItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/DoWhileItem.java @@ -16,6 +16,7 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.Block; import com.jpexs.decompiler.graph.Graph; @@ -24,6 +25,7 @@ import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; import com.jpexs.decompiler.graph.SourceGenerator; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public class DoWhileItem extends LoopItem implements Block { @@ -50,14 +52,14 @@ public class DoWhileItem extends LoopItem implements Block { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("loop" + loop.id + ":", writer).appendNewLine(); hilight("do", writer).appendNewLine(); hilight("{", writer).appendNewLine(); hilight(Graph.INDENTOPEN, writer).appendNewLine(); for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, localData).appendNewLine(); + ti.toStringSemicoloned(writer, localData.constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); diff --git a/trunk/src/com/jpexs/decompiler/graph/model/DuplicateItem.java b/trunk/src/com/jpexs/decompiler/graph/model/DuplicateItem.java index 791e2976c..576a08959 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/DuplicateItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/DuplicateItem.java @@ -16,10 +16,12 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.HashMap; import java.util.List; /** @@ -39,7 +41,7 @@ public class DuplicateItem extends GraphTargetItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return value.toString(writer, localData); } diff --git a/trunk/src/com/jpexs/decompiler/graph/model/ForItem.java b/trunk/src/com/jpexs/decompiler/graph/model/ForItem.java index 4786ef3e2..154309d1b 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/ForItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/ForItem.java @@ -16,6 +16,7 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.Block; import com.jpexs.decompiler.graph.Graph; @@ -24,6 +25,7 @@ import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; import com.jpexs.decompiler.graph.SourceGenerator; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public class ForItem extends LoopItem implements Block { @@ -51,7 +53,7 @@ public class ForItem extends LoopItem implements Block { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("loop" + loop.id + ":", writer).appendNewLine(); hilight("for(", writer); int p = 0; @@ -87,7 +89,7 @@ public class ForItem extends LoopItem implements Block { hilight(Graph.INDENTOPEN, writer).appendNewLine(); for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, localData).appendNewLine(); + ti.toStringSemicoloned(writer, localData.constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); diff --git a/trunk/src/com/jpexs/decompiler/graph/model/IfItem.java b/trunk/src/com/jpexs/decompiler/graph/model/IfItem.java index 7d699a251..2b5c2159e 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/IfItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/IfItem.java @@ -16,6 +16,7 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.Block; import com.jpexs.decompiler.graph.Graph; @@ -23,6 +24,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public class IfItem extends GraphTargetItem implements Block { @@ -52,7 +54,7 @@ public class IfItem extends GraphTargetItem implements Block { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { GraphTargetItem expr = expression; List ifBranch = onTrue; List elseBranch = onFalse; @@ -78,7 +80,7 @@ public class IfItem extends GraphTargetItem implements Block { hilight(Graph.INDENTOPEN, writer).appendNewLine(); for (GraphTargetItem ti : ifBranch) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, localData).appendNewLine(); + ti.toStringSemicoloned(writer, localData.constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); @@ -90,7 +92,7 @@ public class IfItem extends GraphTargetItem implements Block { hilight(Graph.INDENTOPEN, writer).appendNewLine(); for (GraphTargetItem ti : elseBranch) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, localData).appendNewLine(); + ti.toStringSemicoloned(writer, localData.constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); diff --git a/trunk/src/com/jpexs/decompiler/graph/model/IntegerValueItem.java b/trunk/src/com/jpexs/decompiler/graph/model/IntegerValueItem.java index 2c342f397..819b8d17c 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/IntegerValueItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/IntegerValueItem.java @@ -16,9 +16,11 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; +import java.util.HashMap; import java.util.List; /** @@ -35,7 +37,7 @@ public class IntegerValueItem extends GraphTargetItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("" + intValue, writer); } diff --git a/trunk/src/com/jpexs/decompiler/graph/model/LocalData.java b/trunk/src/com/jpexs/decompiler/graph/model/LocalData.java new file mode 100644 index 000000000..eee920bea --- /dev/null +++ b/trunk/src/com/jpexs/decompiler/graph/model/LocalData.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2013 JPEXS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.jpexs.decompiler.graph.model; + +import com.jpexs.decompiler.flash.action.model.ConstantPool; +import java.util.HashMap; +import java.util.List; + +/** + * + * @author JPEXS + */ +public class LocalData { + + public ConstantPool constants; + public com.jpexs.decompiler.flash.abc.avm2.ConstantPool constantsAvm2; + public HashMap localRegNames; + public List fullyQualifiedNames; + + public static LocalData create(ConstantPool constants) { + LocalData localData = new LocalData(); + localData.constants = constants; + return localData; + } + + public static LocalData create(com.jpexs.decompiler.flash.abc.avm2.ConstantPool constants, HashMap localRegNames, List fullyQualifiedNames) { + LocalData localData = new LocalData(); + localData.constantsAvm2 = constants; + localData.localRegNames = localRegNames; + localData.fullyQualifiedNames = fullyQualifiedNames; + return localData; + } +} diff --git a/trunk/src/com/jpexs/decompiler/graph/model/ParenthesisItem.java b/trunk/src/com/jpexs/decompiler/graph/model/ParenthesisItem.java index 5d4dd0f15..97cf7ec10 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/ParenthesisItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/ParenthesisItem.java @@ -16,10 +16,12 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.HashMap; import java.util.List; /** @@ -34,7 +36,7 @@ public class ParenthesisItem extends GraphTargetItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("(", writer); value.toString(writer, localData); return hilight(")", writer); diff --git a/trunk/src/com/jpexs/decompiler/graph/model/ScriptEndItem.java b/trunk/src/com/jpexs/decompiler/graph/model/ScriptEndItem.java index f322389b7..679546f2c 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/ScriptEndItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/ScriptEndItem.java @@ -16,8 +16,10 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphTargetItem; +import java.util.HashMap; import java.util.List; /** @@ -31,7 +33,7 @@ public class ScriptEndItem extends GraphTargetItem implements ExitItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return writer; } diff --git a/trunk/src/com/jpexs/decompiler/graph/model/SwitchItem.java b/trunk/src/com/jpexs/decompiler/graph/model/SwitchItem.java index 3bc84dd7c..4cdd1dc3f 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/SwitchItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/SwitchItem.java @@ -16,6 +16,7 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.Block; import com.jpexs.decompiler.graph.Graph; @@ -24,6 +25,7 @@ import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; import com.jpexs.decompiler.graph.SourceGenerator; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public class SwitchItem extends LoopItem implements Block { @@ -52,7 +54,7 @@ public class SwitchItem extends LoopItem implements Block { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("loopswitch" + loop.id + ":", writer).appendNewLine(); hilight("switch(", writer); switchedObject.toString(writer, localData); @@ -70,7 +72,7 @@ public class SwitchItem extends LoopItem implements Block { hilight(Graph.INDENTOPEN, writer).appendNewLine(); for (int j = 0; j < caseCommands.get(i).size(); j++) { if (!caseCommands.get(i).get(j).isEmpty()) { - caseCommands.get(i).get(j).toStringSemicoloned(writer, localData).appendNewLine(); + caseCommands.get(i).get(j).toStringSemicoloned(writer, localData.constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); @@ -82,7 +84,7 @@ public class SwitchItem extends LoopItem implements Block { hilight(Graph.INDENTOPEN, writer).appendNewLine(); for (int j = 0; j < defaultCommands.size(); j++) { if (!defaultCommands.get(j).isEmpty()) { - defaultCommands.get(j).toStringSemicoloned(writer, localData).appendNewLine(); + defaultCommands.get(j).toStringSemicoloned(writer, localData.constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); diff --git a/trunk/src/com/jpexs/decompiler/graph/model/TernarOpItem.java b/trunk/src/com/jpexs/decompiler/graph/model/TernarOpItem.java index 6d36a3a45..448bb794f 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/TernarOpItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/TernarOpItem.java @@ -16,10 +16,12 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import java.util.HashMap; import java.util.List; public class TernarOpItem extends GraphTargetItem { @@ -36,7 +38,7 @@ public class TernarOpItem extends GraphTargetItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { expression.toString(writer, localData); hilight("?", writer); onTrue.toString(writer, localData); diff --git a/trunk/src/com/jpexs/decompiler/graph/model/TrueItem.java b/trunk/src/com/jpexs/decompiler/graph/model/TrueItem.java index b30067762..4673f47d7 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/TrueItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/TrueItem.java @@ -1,8 +1,10 @@ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; +import java.util.HashMap; import java.util.List; /** @@ -16,7 +18,7 @@ public class TrueItem extends GraphTargetItem { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { return hilight("true", writer); } diff --git a/trunk/src/com/jpexs/decompiler/graph/model/UnaryOpItem.java b/trunk/src/com/jpexs/decompiler/graph/model/UnaryOpItem.java index cab8df853..04e4aba6e 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/UnaryOpItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/UnaryOpItem.java @@ -16,10 +16,12 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphSourceItemPos; import com.jpexs.decompiler.graph.GraphTargetItem; +import java.util.HashMap; import java.util.List; public abstract class UnaryOpItem extends GraphTargetItem implements UnaryOp { @@ -34,7 +36,7 @@ public abstract class UnaryOpItem extends GraphTargetItem implements UnaryOp { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight(operator, writer); if (value != null) { if (value.precedence > precedence) { diff --git a/trunk/src/com/jpexs/decompiler/graph/model/UniversalLoopItem.java b/trunk/src/com/jpexs/decompiler/graph/model/UniversalLoopItem.java index 88f150143..53865fcca 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/UniversalLoopItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/UniversalLoopItem.java @@ -16,6 +16,7 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.Block; import com.jpexs.decompiler.graph.Graph; @@ -23,6 +24,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; /** @@ -38,14 +40,14 @@ public class UniversalLoopItem extends LoopItem implements Block { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("loop" + loop.id + ":", writer).appendNewLine(); hilight("while(true)", writer).appendNewLine(); hilight("{", writer).appendNewLine(); hilight(Graph.INDENTOPEN, writer).appendNewLine(); for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, localData).appendNewLine(); + ti.toStringSemicoloned(writer, localData.constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); diff --git a/trunk/src/com/jpexs/decompiler/graph/model/WhileItem.java b/trunk/src/com/jpexs/decompiler/graph/model/WhileItem.java index a36d214aa..3c8cfc6f4 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/WhileItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/WhileItem.java @@ -16,6 +16,7 @@ */ package com.jpexs.decompiler.graph.model; +import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.helpers.HilightedTextWriter; import com.jpexs.decompiler.graph.Block; import com.jpexs.decompiler.graph.Graph; @@ -24,6 +25,7 @@ import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.Loop; import com.jpexs.decompiler.graph.SourceGenerator; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public class WhileItem extends LoopItem implements Block { @@ -45,7 +47,7 @@ public class WhileItem extends LoopItem implements Block { } @Override - public HilightedTextWriter toString(HilightedTextWriter writer, List localData) { + public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) { hilight("loop" + loop.id + ":", writer).appendNewLine(); hilight("while(", writer); for (int i = 0; i < expression.size(); i++) { @@ -62,7 +64,7 @@ public class WhileItem extends LoopItem implements Block { hilight(Graph.INDENTOPEN, writer).appendNewLine(); for (GraphTargetItem ti : commands) { if (!ti.isEmpty()) { - ti.toStringSemicoloned(writer, localData).appendNewLine(); + ti.toStringSemicoloned(writer, localData.constants).appendNewLine(); } } hilight(Graph.INDENTCLOSE, writer).appendNewLine(); diff --git a/trunk/src/com/jpexs/helpers/Helper.java b/trunk/src/com/jpexs/helpers/Helper.java index 1e921f578..cba1b433c 100644 --- a/trunk/src/com/jpexs/helpers/Helper.java +++ b/trunk/src/com/jpexs/helpers/Helper.java @@ -18,6 +18,7 @@ package com.jpexs.helpers; import com.jpexs.decompiler.flash.gui.Freed; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.model.LocalData; import java.awt.Component; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -379,7 +380,7 @@ public class Helper { return str.replaceAll("([^\r\n]*)(\r?\n)", "; $1$2"); } - public static String stackToString(Stack stack, List localData) { + public static String stackToString(Stack stack, LocalData localData) { String ret = "["; for (int i = stack.size() - 1; i >= 0; i--) { if (i < stack.size() - 1) {