From 5513956f04437883fc23fcce3ec759a1bc05e221 Mon Sep 17 00:00:00 2001 From: honfika Date: Tue, 5 Aug 2014 21:39:23 +0200 Subject: [PATCH] removed some unnecessarry action reading methods --- .../jpexs/decompiler/flash/action/Action.java | 15 +- .../flash/action/swf4/ActionIf.java | 7 - .../flash/action/swf4/ActionJump.java | 241 +++++++++--------- .../action/swf5/ActionDefineFunction.java | 10 - .../flash/action/swf5/ActionWith.java | 10 - .../action/swf7/ActionDefineFunction2.java | 10 - .../flash/action/swf7/ActionTry.java | 12 - 7 files changed, 120 insertions(+), 185 deletions(-) diff --git a/src/com/jpexs/decompiler/flash/action/Action.java b/src/com/jpexs/decompiler/flash/action/Action.java index 4762d92a6..ea49d292b 100644 --- a/src/com/jpexs/decompiler/flash/action/Action.java +++ b/src/com/jpexs/decompiler/flash/action/Action.java @@ -193,16 +193,6 @@ public class Action implements GraphSourceItem { return ret; } - /** - * Gets all ActionIf or ActionJump actions from subactions - * - * @return List of actions - */ - public List getAllIfsOrJumps() { - List ret = new ArrayList<>(); - return ret; - } - /** * Gets all ActionIf or ActionJump actions from list of actions * @@ -212,8 +202,9 @@ public class Action implements GraphSourceItem { public static List getActionsAllIfsOrJumps(List list) { List ret = new ArrayList<>(); for (Action a : list) { - List part = a.getAllIfsOrJumps(); - ret.addAll(part); + if (a instanceof ActionIf || a instanceof ActionJump) { + ret.add(a); + } } return ret; } diff --git a/src/com/jpexs/decompiler/flash/action/swf4/ActionIf.java b/src/com/jpexs/decompiler/flash/action/swf4/ActionIf.java index 31fb71c8e..b9144dac2 100644 --- a/src/com/jpexs/decompiler/flash/action/swf4/ActionIf.java +++ b/src/com/jpexs/decompiler/flash/action/swf4/ActionIf.java @@ -92,13 +92,6 @@ public class ActionIf extends Action { identifier = lexIdentifier(lexer); } - @Override - public List getAllIfsOrJumps() { - List ret = new ArrayList<>(); - ret.add(this); - return ret; - } - @Override public String toString() { return "ActionIf"; diff --git a/src/com/jpexs/decompiler/flash/action/swf4/ActionJump.java b/src/com/jpexs/decompiler/flash/action/swf4/ActionJump.java index 92a378796..1f4808712 100644 --- a/src/com/jpexs/decompiler/flash/action/swf4/ActionJump.java +++ b/src/com/jpexs/decompiler/flash/action/swf4/ActionJump.java @@ -1,124 +1,117 @@ -/* - * Copyright (C) 2010-2014 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.flash.action.swf4; - -import com.jpexs.decompiler.flash.SWFInputStream; -import com.jpexs.decompiler.flash.SWFOutputStream; -import com.jpexs.decompiler.flash.action.Action; -import com.jpexs.decompiler.flash.action.ActionGraphSource; -import com.jpexs.decompiler.flash.action.parser.ParseException; -import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer; -import com.jpexs.decompiler.flash.exporters.modes.ScriptExportMode; -import com.jpexs.decompiler.graph.GraphSource; -import com.jpexs.decompiler.graph.GraphSourceItem; -import com.jpexs.helpers.Helper; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; - -public class ActionJump extends Action { - - private int offset; - public String identifier; - public boolean isContinue = false; - public boolean isBreak = false; - - public int getJumpOffset() { - return offset; - } - - public final void setJumpOffset(int offset) { - this.offset = offset; - } - - public ActionJump(int offset) { - super(0x99, 2); - setJumpOffset(offset); - } - - public ActionJump(int actionLength, SWFInputStream sis) throws IOException { - super(0x99, actionLength); - setJumpOffset(sis.readSI16("offset")); - } - - @Override - public List getAllRefs(int version) { - List ret = new ArrayList<>(); - ret.add(getRef(version)); - return ret; - } - - public long getRef(int version) { - return getAddress() + getBytes(version).length + offset; - } - - @Override - public byte[] getBytes(int version) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - SWFOutputStream sos = new SWFOutputStream(baos, version); - try { - sos.writeSI16(offset); - sos.close(); - } catch (IOException e) { - } - return surroundWithAction(baos.toByteArray(), version); - } - - @Override - public String getASMSource(List container, List knownAddreses, List constantPool, int version, ScriptExportMode exportMode) { - String ofsStr = Helper.formatAddress(getAddress() + getBytes(version).length + offset); - return "Jump loc" + ofsStr; - } - - public ActionJump(FlasmLexer lexer) throws IOException, ParseException { - super(0x99, 0); - identifier = lexIdentifier(lexer); - } - - @Override - public List getAllIfsOrJumps() { - List ret = new ArrayList<>(); - ret.add(this); - return ret; - } - - @Override - public String toString() { - return "Jump " + offset; - } - - @Override - public boolean isJump() { - return true; - } - - @Override - public List getBranches(GraphSource code) { - List ret = super.getBranches(code); - int ofs = code.adr2pos(getAddress() + getBytes(((ActionGraphSource) code).version).length + offset); - if (ofs == -1) { - ofs = code.adr2pos(getAddress() + getBytes(((ActionGraphSource) code).version).length); - new Exception().printStackTrace(); - Logger.getLogger(ActionJump.class.getName()).log(Level.SEVERE, "Invalid jump to ofs" + Helper.formatAddress(getAddress() + getBytes(((ActionGraphSource) code).version).length + offset) + " from ofs" + Helper.formatAddress(getAddress())); - } - ret.add(ofs); - return ret; - } -} +/* + * Copyright (C) 2010-2014 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.flash.action.swf4; + +import com.jpexs.decompiler.flash.SWFInputStream; +import com.jpexs.decompiler.flash.SWFOutputStream; +import com.jpexs.decompiler.flash.action.Action; +import com.jpexs.decompiler.flash.action.ActionGraphSource; +import com.jpexs.decompiler.flash.action.parser.ParseException; +import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer; +import com.jpexs.decompiler.flash.exporters.modes.ScriptExportMode; +import com.jpexs.decompiler.graph.GraphSource; +import com.jpexs.decompiler.graph.GraphSourceItem; +import com.jpexs.helpers.Helper; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class ActionJump extends Action { + + private int offset; + public String identifier; + public boolean isContinue = false; + public boolean isBreak = false; + + public int getJumpOffset() { + return offset; + } + + public final void setJumpOffset(int offset) { + this.offset = offset; + } + + public ActionJump(int offset) { + super(0x99, 2); + setJumpOffset(offset); + } + + public ActionJump(int actionLength, SWFInputStream sis) throws IOException { + super(0x99, actionLength); + setJumpOffset(sis.readSI16("offset")); + } + + @Override + public List getAllRefs(int version) { + List ret = new ArrayList<>(); + ret.add(getRef(version)); + return ret; + } + + public long getRef(int version) { + return getAddress() + getBytes(version).length + offset; + } + + @Override + public byte[] getBytes(int version) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + SWFOutputStream sos = new SWFOutputStream(baos, version); + try { + sos.writeSI16(offset); + sos.close(); + } catch (IOException e) { + } + return surroundWithAction(baos.toByteArray(), version); + } + + @Override + public String getASMSource(List container, List knownAddreses, List constantPool, int version, ScriptExportMode exportMode) { + String ofsStr = Helper.formatAddress(getAddress() + getBytes(version).length + offset); + return "Jump loc" + ofsStr; + } + + public ActionJump(FlasmLexer lexer) throws IOException, ParseException { + super(0x99, 0); + identifier = lexIdentifier(lexer); + } + + @Override + public String toString() { + return "Jump " + offset; + } + + @Override + public boolean isJump() { + return true; + } + + @Override + public List getBranches(GraphSource code) { + List ret = super.getBranches(code); + int ofs = code.adr2pos(getAddress() + getBytes(((ActionGraphSource) code).version).length + offset); + if (ofs == -1) { + ofs = code.adr2pos(getAddress() + getBytes(((ActionGraphSource) code).version).length); + new Exception().printStackTrace(); + Logger.getLogger(ActionJump.class.getName()).log(Level.SEVERE, "Invalid jump to ofs" + Helper.formatAddress(getAddress() + getBytes(((ActionGraphSource) code).version).length + offset) + " from ofs" + Helper.formatAddress(getAddress())); + } + ret.add(ofs); + return ret; + } +} diff --git a/src/com/jpexs/decompiler/flash/action/swf5/ActionDefineFunction.java b/src/com/jpexs/decompiler/flash/action/swf5/ActionDefineFunction.java index 32b62d0bf..65d708030 100644 --- a/src/com/jpexs/decompiler/flash/action/swf5/ActionDefineFunction.java +++ b/src/com/jpexs/decompiler/flash/action/swf5/ActionDefineFunction.java @@ -182,16 +182,6 @@ public class ActionDefineFunction extends Action implements GraphSourceItemConta } - @Override - public List getAllRefs(int version) { - return super.getAllRefs(version);//Action.getActionsAllRefs(getActions(null), version); - } - - @Override - public List getAllIfsOrJumps() { - return super.getAllIfsOrJumps(); //Action.getActionsAllIfsOrJumps(code); - } - @Override public void translate(Stack stack, List output, HashMap regNames, HashMap variables, HashMap functions, int staticOperation, String path) { } diff --git a/src/com/jpexs/decompiler/flash/action/swf5/ActionWith.java b/src/com/jpexs/decompiler/flash/action/swf5/ActionWith.java index 9ee914ee2..0b38a621d 100644 --- a/src/com/jpexs/decompiler/flash/action/swf5/ActionWith.java +++ b/src/com/jpexs/decompiler/flash/action/swf5/ActionWith.java @@ -84,16 +84,6 @@ public class ActionWith extends Action implements GraphSourceItemContainer { return "With {"; } - @Override - public List getAllRefs(int version) { - return super.getAllRefs(version); - } - - @Override - public List getAllIfsOrJumps() { - return super.getAllIfsOrJumps(); - } - @Override public void translateContainer(List> content, Stack stack, List output, HashMap regNames, HashMap variables, HashMap functions) { output.add(new WithActionItem(this, stack.pop(), content.get(0))); diff --git a/src/com/jpexs/decompiler/flash/action/swf7/ActionDefineFunction2.java b/src/com/jpexs/decompiler/flash/action/swf7/ActionDefineFunction2.java index 50e369171..898e54f0d 100644 --- a/src/com/jpexs/decompiler/flash/action/swf7/ActionDefineFunction2.java +++ b/src/com/jpexs/decompiler/flash/action/swf7/ActionDefineFunction2.java @@ -347,16 +347,6 @@ public class ActionDefineFunction2 extends Action implements GraphSourceItemCont stack.push(fti); } - @Override - public List getAllRefs(int version) { - return super.getAllRefs(version);//return Action.getActionsAllRefs(code, version); - } - - @Override - public List getAllIfsOrJumps() { - return super.getAllIfsOrJumps(); //return Action.getActionsAllIfsOrJumps(code); - } - @Override public List getContainerSizes() { List ret = new ArrayList<>(); diff --git a/src/com/jpexs/decompiler/flash/action/swf7/ActionTry.java b/src/com/jpexs/decompiler/flash/action/swf7/ActionTry.java index 661c8aeac..dc386ca1e 100644 --- a/src/com/jpexs/decompiler/flash/action/swf7/ActionTry.java +++ b/src/com/jpexs/decompiler/flash/action/swf7/ActionTry.java @@ -168,18 +168,6 @@ public class ActionTry extends Action implements GraphSourceItemContainer { return ret; } - @Override - public List getAllRefs(int version) { - List ret = new ArrayList<>(); - return ret; - } - - @Override - public List getAllIfsOrJumps() { - List ret = new ArrayList<>(); - return ret; - } - @Override public long getHeaderSize() { ByteArrayOutputStream baos = new ByteArrayOutputStream();