Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

jreversepro.revengine
Class JSwitchTable  view JSwitchTable download JSwitchTable.java

java.lang.Object
  extended byjreversepro.revengine.JSwitchTable
All Implemented Interfaces:
jreversepro.common.JJvmOpcodes, jreversepro.common.KeyWords

public class JSwitchTable
extends java.lang.Object
implements jreversepro.common.KeyWords, jreversepro.common.JJvmOpcodes

JSwitchTable represents the 'switch' statement as entry pairs as follows. Pair = { CaseValues, Targets }.


Field Summary
(package private)  java.util.List cases
          List of cases that are available.
(package private)  java.lang.String datatype
          Datatype of the variable for which switch is used.
(package private)  int defaultByte
          DefaultByte for this switch statement.
(package private)  int insIndex
          Instruction index of the switch statement.
(package private)  int maxTarget
          Max Target from this switch statement group
(package private)  jreversepro.reflect.JMethod method
          Reference to method to which this switch table belongs.
(package private)  java.lang.String varName
          Name of the variable that is put under switch statement.
 
Fields inherited from interface jreversepro.common.KeyWords
ANY, BOOLEAN, BREAK, BYTE, CASE, CHAR, CLASS, CLASS_STRING, CLINIT, CLOSE_BRACKET, COND_AND, COND_NOT, COND_OR, CONTINUE, DEFAULT, DEFAULT_PACKAGE, DOUBLE, EQUALTO, FALSE, FLOAT, FOREIGN_CLASS, FOREIGN_OBJ, GOTO, INIT, INSTANCEOF, INT, INTERFACE, JVM_BOOLEAN, JVM_CHAR, JVM_VOID, LANG_OBJECT, LENGTH, LONG, NEW, NULL, OPEN_BRACKET, OPR_EQ, OPR_GE, OPR_GT, OPR_LE, OPR_LT, OPR_NE, OPR_NOT, REFERENCE, RET_ADDR, RETURN, SHORT, SPACE, STATIC, SUPER, SWITCH, THIS, THISCLASS, THROW, TRUE, VOID
 
Fields inherited from interface jreversepro.common.JJvmOpcodes
OPCODE_AALOAD, OPCODE_AASTORE, OPCODE_ACONST_NULL, OPCODE_ALOAD, OPCODE_ALOAD_0, OPCODE_ALOAD_1, OPCODE_ALOAD_2, OPCODE_ALOAD_3, OPCODE_ANEWARRAY, OPCODE_ARETURN, OPCODE_ARRAYLENGTH, OPCODE_ASTORE, OPCODE_ASTORE_0, OPCODE_ASTORE_1, OPCODE_ASTORE_2, OPCODE_ASTORE_3, OPCODE_ATHROW, OPCODE_BALOAD, OPCODE_BASTORE, OPCODE_BIPUSH, OPCODE_CALOAD, OPCODE_CASTORE, OPCODE_CHECKCAST, OPCODE_D2F, OPCODE_D2I, OPCODE_D2L, OPCODE_DADD, OPCODE_DALOAD, OPCODE_DASTORE, OPCODE_DCMPG, OPCODE_DCMPL, OPCODE_DCONST_0, OPCODE_DCONST_1, OPCODE_DDIV, OPCODE_DLOAD, OPCODE_DLOAD_0, OPCODE_DLOAD_1, OPCODE_DLOAD_2, OPCODE_DLOAD_3, OPCODE_DMUL, OPCODE_DNEG, OPCODE_DREM, OPCODE_DRETURN, OPCODE_DSTORE, OPCODE_DSTORE_0, OPCODE_DSTORE_1, OPCODE_DSTORE_2, OPCODE_DSTORE_3, OPCODE_DSUB, OPCODE_DUP, OPCODE_DUP_X1, OPCODE_DUP_X2, OPCODE_DUP2, OPCODE_DUP2_X1, OPCODE_DUP2_X2, OPCODE_F2D, OPCODE_F2I, OPCODE_F2L, OPCODE_FADD, OPCODE_FALOAD, OPCODE_FASTORE, OPCODE_FCMPG, OPCODE_FCMPL, OPCODE_FCONST_0, OPCODE_FCONST_1, OPCODE_FCONST_2, OPCODE_FDIV, OPCODE_FLOAD, OPCODE_FLOAD_0, OPCODE_FLOAD_1, OPCODE_FLOAD_2, OPCODE_FLOAD_3, OPCODE_FMUL, OPCODE_FNEG, OPCODE_FREM, OPCODE_FRETURN, OPCODE_FSTORE, OPCODE_FSTORE_0, OPCODE_FSTORE_1, OPCODE_FSTORE_2, OPCODE_FSTORE_3, OPCODE_FSUB, OPCODE_GETFIELD, OPCODE_GETSTATIC, OPCODE_GOTO, OPCODE_GOTOW, OPCODE_I2B, OPCODE_I2C, OPCODE_I2D, OPCODE_I2F, OPCODE_I2L, OPCODE_I2S, OPCODE_IADD, OPCODE_IALOAD, OPCODE_IAND, OPCODE_IASTORE, OPCODE_ICONST_0, OPCODE_ICONST_1, OPCODE_ICONST_2, OPCODE_ICONST_3, OPCODE_ICONST_4, OPCODE_ICONST_5, OPCODE_ICONST_M1, OPCODE_IDIV, OPCODE_IF_ACMPEQ, OPCODE_IF_ACMPNE, OPCODE_IF_ICMPEQ, OPCODE_IF_ICMPGE, OPCODE_IF_ICMPGT, OPCODE_IF_ICMPLE, OPCODE_IF_ICMPLT, OPCODE_IF_ICMPNE, OPCODE_IFEQ, OPCODE_IFGE, OPCODE_IFGT, OPCODE_IFLE, OPCODE_IFLT, OPCODE_IFNE, OPCODE_IFNONNULL, OPCODE_IFNULL, OPCODE_IINC, OPCODE_ILOAD, OPCODE_ILOAD_0, OPCODE_ILOAD_1, OPCODE_ILOAD_2, OPCODE_ILOAD_3, OPCODE_IMUL, OPCODE_INEG, OPCODE_INSTANCEOF, OPCODE_INVOKEINTERFACE, OPCODE_INVOKESPECIAL, OPCODE_INVOKESTATIC, OPCODE_INVOKEVIRTUAL, OPCODE_IOR, OPCODE_IREM, OPCODE_IRETURN, OPCODE_ISHL, OPCODE_ISHR, OPCODE_ISTORE, OPCODE_ISTORE_0, OPCODE_ISTORE_1, OPCODE_ISTORE_2, OPCODE_ISTORE_3, OPCODE_ISUB, OPCODE_IUSHR, OPCODE_IXOR, OPCODE_JSR, OPCODE_JSRW, OPCODE_L2D, OPCODE_L2F, OPCODE_L2I, OPCODE_LADD, OPCODE_LALOAD, OPCODE_LAND, OPCODE_LASTORE, OPCODE_LCMP, OPCODE_LCONST_0, OPCODE_LCONST_1, OPCODE_LDC, OPCODE_LDC_W, OPCODE_LDC2_W, OPCODE_LDIV, OPCODE_LLOAD, OPCODE_LLOAD_0, OPCODE_LLOAD_1, OPCODE_LLOAD_2, OPCODE_LLOAD_3, OPCODE_LMUL, OPCODE_LNEG, OPCODE_LOOKUPSWITCH, OPCODE_LOR, OPCODE_LREM, OPCODE_LRETURN, OPCODE_LSHL, OPCODE_LSHR, OPCODE_LSTORE, OPCODE_LSTORE_0, OPCODE_LSTORE_1, OPCODE_LSTORE_2, OPCODE_LSTORE_3, OPCODE_LSUB, OPCODE_LUSHR, OPCODE_LXOR, OPCODE_MONITORENTER, OPCODE_MONITOREXIT, OPCODE_MULTIANEWARRAY, OPCODE_NEW, OPCODE_NEWARRAY, OPCODE_NOP, OPCODE_POP, OPCODE_POP2, OPCODE_PUTFIELD, OPCODE_PUTSTATIC, OPCODE_RET, OPCODE_RETURN, OPCODE_SALOAD, OPCODE_SASTORE, OPCODE_SIPUSH, OPCODE_SWAP, OPCODE_TABLESWITCH, OPCODE_WIDE, OPCODE_XXXUNUSEDXXX
 
Constructor Summary
JSwitchTable(jreversepro.reflect.JMethod method, jreversepro.reflect.JInstruction ins, java.util.Map gotos)
           
JSwitchTable(jreversepro.reflect.JMethod method, jreversepro.reflect.JInstruction ins, jreversepro.runtime.Operand op1, java.util.Map gotos)
           
 
Method Summary
 void addCaseEntry(JCaseEntry caseEntry)
          Inserts a CaseEntry in the list.
private  void createLookupSwitch(byte[] entries, int offset, java.util.Map gotos)
          For 'lookupswitch' opcode this fills the data structure - JSwitchTable.
private  void createTableSwitch(byte[] entries, int offset, java.util.Map gotos)
          For 'tableswitch' opcode this fills the data structure - JSwitchTable.
 java.lang.String disassemble()
           
 JBranchEntry getBranchEntry()
           
 java.util.List getCases()
           
 int getDefaultByte()
           
 void processData(java.util.Map gotos)
          Process the bytecode stream of case values and targets to individual case blocks.
 void setTypeValue(java.lang.String rhsType, java.lang.String rhsValue)
           
 java.lang.String toString()
          Convert this Object to a human-readable String.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

insIndex

int insIndex
Instruction index of the switch statement.


cases

java.util.List cases
List of cases that are available. Individual elements are JCaseEntry.


defaultByte

int defaultByte
DefaultByte for this switch statement.


maxTarget

int maxTarget
Max Target from this switch statement group


varName

java.lang.String varName
Name of the variable that is put under switch statement.


datatype

java.lang.String datatype
Datatype of the variable for which switch is used.


method

jreversepro.reflect.JMethod method
Reference to method to which this switch table belongs.

Constructor Detail

JSwitchTable

public JSwitchTable(jreversepro.reflect.JMethod method,
                    jreversepro.reflect.JInstruction ins,
                    java.util.Map gotos)
             throws RevEngineException,
                    java.io.IOException

JSwitchTable

public JSwitchTable(jreversepro.reflect.JMethod method,
                    jreversepro.reflect.JInstruction ins,
                    jreversepro.runtime.Operand op1,
                    java.util.Map gotos)
             throws RevEngineException,
                    java.io.IOException
Method Detail

getDefaultByte

public int getDefaultByte()

createTableSwitch

private void createTableSwitch(byte[] entries,
                               int offset,
                               java.util.Map gotos)
                        throws java.io.IOException
For 'tableswitch' opcode this fills the data structure - JSwitchTable.


createLookupSwitch

private void createLookupSwitch(byte[] entries,
                                int offset,
                                java.util.Map gotos)
                         throws java.io.IOException
For 'lookupswitch' opcode this fills the data structure - JSwitchTable.


getCases

public java.util.List getCases()

disassemble

public java.lang.String disassemble()

setTypeValue

public void setTypeValue(java.lang.String rhsType,
                         java.lang.String rhsValue)

processData

public void processData(java.util.Map gotos)
Process the bytecode stream of case values and targets to individual case blocks.


getBranchEntry

public JBranchEntry getBranchEntry()

addCaseEntry

public void addCaseEntry(JCaseEntry caseEntry)
Inserts a CaseEntry in the list.


toString

public java.lang.String toString()
Description copied from class: java.lang.Object
Convert this Object to a human-readable String. There are no limits placed on how long this String should be or what it should contain. We suggest you make it as intuitive as possible to be able to place it into System.out.println() 55 and such.

It is typical, but not required, to ensure that this method never completes abruptly with a java.lang.RuntimeException.

This method will be called when performing string concatenation with this object. If the result is null, string concatenation will instead use "null".

The default implementation returns getClass().getName() + "@" + Integer.toHexString(hashCode()).