harpoon.IR.Bytecode
Class InSwitch

java.lang.Object
  extended by harpoon.IR.Bytecode.Instr
      extended by harpoon.IR.Bytecode.InCti
          extended by harpoon.IR.Bytecode.InSwitch
All Implemented Interfaces:
HCodeElement, CFGraphable<Instr,harpoon.IR.Bytecode.InstrEdge>, Graph.Node<Instr,harpoon.IR.Bytecode.InstrEdge>, Comparable<Instr>

public class InSwitch
extends InCti

InSwitch is used for the tableswitch and lookupswitch java bytecode instructions. It is a control-transfer instruction. It should have exactly one predecessor. The first successor will be the default target; each subsequent successor corresponds to a case of the switch statement; the match key can be looked up using the key method.

Version:
$Id: InSwitch.java,v 1.3 2002/02/25 21:04:17 cananian Exp $
Author:
C. Scott Ananian <cananian@alumni.princeton.edu>
See Also:
Instr

Field Summary
 
Fields inherited from class harpoon.IR.Bytecode.Instr
arrayFactory
 
Constructor Summary
InSwitch(String sourcefile, int linenumber, byte[] code, int pc)
          Constructor.
 
Method Summary
 int key(int index)
          Returns the case key corresponding to the given branch target index.
 String toString()
          Return human-readable instruction string.
 
Methods inherited from class harpoon.IR.Bytecode.InCti
getOpcode
 
Methods inherited from class harpoon.IR.Bytecode.Instr
compareTo, edgeC, edges, equals, getID, getLineNumber, getSourceFile, hashCode, isPred, isSucc, newEdge, next, next, pred, predC, prev, prev, succ, succC
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

InSwitch

public InSwitch(String sourcefile,
                int linenumber,
                byte[] code,
                int pc)
Constructor. Creates an InSwitch from a chunk of bytecode starting at the given pc.

Throws:
Error - if the opcode at code[pc] doesn't correspond to a tableswitch or lookupswitch.
Method Detail

key

public int key(int index)
Returns the case key corresponding to the given branch target index.

InSwitch.key(n) corresponds to InSwitch.next()[n] for 0.

Throws:
Error - if the default target or an instruction not corresponding to a target is given.

toString

public String toString()
Return human-readable instruction string.

Overrides:
toString in class InCti