You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.6 KiB
87 lines
2.6 KiB
/* Jump (c) 1998 Jochen Hoenicke
|
|
*
|
|
* You may distribute under the terms of the GNU General Public License.
|
|
*
|
|
* IN NO EVENT SHALL JOCHEN HOENICKE BE LIABLE TO ANY PARTY FOR DIRECT,
|
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
|
|
* THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF JOCHEN HOENICKE
|
|
* HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
* JOCHEN HOENICKE SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
|
* PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
|
|
* BASIS, AND JOCHEN HOENICKE HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
|
|
* SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
|
*
|
|
* $Id$
|
|
*/
|
|
package jode.flow;
|
|
|
|
/**
|
|
* This class represents an unconditional jump.
|
|
*/
|
|
public class Jump {
|
|
/**
|
|
* The structured block that precedes this jump.
|
|
*/
|
|
StructuredBlock prev;
|
|
/**
|
|
* The destination block of this jump.
|
|
*/
|
|
FlowBlock destination;
|
|
/**
|
|
* The destination address, in case the destination block is not yet
|
|
* known.
|
|
*/
|
|
int destAddr;
|
|
|
|
/**
|
|
* The out locals. This are the locals, which must be overwritten
|
|
* in this block on every path to this jump. That means, that all
|
|
* paths form the start of the current flow block to this jump
|
|
* contain (unconditional) assignments to this local.
|
|
*/
|
|
VariableSet out = new VariableSet();
|
|
|
|
public Jump (int destAddr) {
|
|
this.destAddr = destAddr;
|
|
}
|
|
|
|
public Jump (FlowBlock dest) {
|
|
this.destination = dest;
|
|
}
|
|
|
|
/**
|
|
* Returns true if this jump has jsr or monitorexit attachments.
|
|
*/
|
|
boolean hasAttachments() {
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Returns a string describing the jsr or monitorexit attachments.
|
|
*/
|
|
String describeAttachments() {
|
|
return "";
|
|
}
|
|
|
|
/**
|
|
* Print the source code for this structured block. This handles
|
|
* everything that is unique for all structured blocks and calls
|
|
* dumpInstruction afterwards.
|
|
* @param writer The tabbed print writer, where we print to.
|
|
*/
|
|
public void dumpSource(jode.TabbedPrintWriter writer)
|
|
throws java.io.IOException
|
|
{
|
|
if (jode.Decompiler.isDebugging) {
|
|
writer.println("out: "+ out.toString());
|
|
}
|
|
writer.println("Attachments: "+describeAttachments());
|
|
if (destination == null)
|
|
writer.println ("GOTO null-ptr!!!!!");
|
|
else
|
|
writer.println("GOTO "+destination.getLabel());
|
|
}
|
|
}
|
|
|
|
|