jasm.lang
Class Bytecode.Switch

java.lang.Object
  extended by jasm.lang.Bytecode
      extended by jasm.lang.Bytecode.Switch
Enclosing class:
Bytecode

public static class Bytecode.Switch
extends Bytecode

This represents the bytecodes tableswitch and lookupswitch


Nested Class Summary
 
Nested classes/interfaces inherited from class jasm.lang.Bytecode
Bytecode.ArrayLength, Bytecode.ArrayLoad, Bytecode.ArrayStore, Bytecode.BinOp, Bytecode.Branch, Bytecode.CheckCast, Bytecode.Cmp, Bytecode.Conversion, Bytecode.Dup, Bytecode.DupX1, Bytecode.DupX2, Bytecode.FieldMode, Bytecode.GetField, Bytecode.Goto, Bytecode.If, Bytecode.IfCmp, Bytecode.IfMode, Bytecode.Iinc, Bytecode.InstanceOf, Bytecode.Invoke, Bytecode.InvokeMode, Bytecode.Label, Bytecode.Load, Bytecode.LoadConst, Bytecode.MonitorEnter, Bytecode.MonitorExit, Bytecode.Neg, Bytecode.New, Bytecode.Nop, Bytecode.Pop, Bytecode.PutField, Bytecode.Return, Bytecode.Store, Bytecode.Swap, Bytecode.Switch, Bytecode.Throw
 
Field Summary
 java.util.List<Pair<java.lang.Integer,java.lang.String>> cases
           
 java.lang.String defaultLabel
           
 int type
           
 
Fields inherited from class jasm.lang.Bytecode
AALOAD, AASTORE, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETSTATIC, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INEG, INSTANCEOF, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, IUSHR, IXOR, JSR, JSR_W, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_W, LDC2_W, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, switchcomp, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, UNUSED, WIDE
 
Constructor Summary
Bytecode.Switch(java.lang.String def, java.util.List<Pair<java.lang.Integer,java.lang.String>> cases)
           
 
Method Summary
 boolean equals(java.lang.Object o)
           
 int getSize(int offset)
           
 int hashCode()
           
 int stackDiff()
          This method determines the change in stack resulting from this bytecode.
 byte[] toBytes(int offset, java.util.Map<java.lang.String,java.lang.Integer> labelOffsets, java.util.Map<Constant.Info,java.lang.Integer> constantPool)
          Translate this Java bytecode into bytes.
 java.lang.String toString()
           
 
Methods inherited from class jasm.lang.Bytecode
addPoolItems, get
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

defaultLabel

public final java.lang.String defaultLabel

cases

public final java.util.List<Pair<java.lang.Integer,java.lang.String>> cases

type

public final int type
Constructor Detail

Bytecode.Switch

public Bytecode.Switch(java.lang.String def,
                       java.util.List<Pair<java.lang.Integer,java.lang.String>> cases)
Method Detail

stackDiff

public int stackDiff()
Description copied from class: Bytecode
This method determines the change in stack resulting from this bytecode. For example, +1 indicates the instruction puts one thing onto the stack. Likewise, -2 means this instruction takes two things off the stack. The primary purpose of this method is to help compute the maxStack requirement for a method.

Specified by:
stackDiff in class Bytecode
Returns:

getSize

public int getSize(int offset)

toBytes

public byte[] toBytes(int offset,
                      java.util.Map<java.lang.String,java.lang.Integer> labelOffsets,
                      java.util.Map<Constant.Info,java.lang.Integer> constantPool)
Description copied from class: Bytecode
Translate this Java bytecode into bytes. If the bytecode requires a constant pool item which is not present in the constantPool map, then the appropriate CONSTANT_Info object is added, and given the next available index.

Specified by:
toBytes in class Bytecode
Parameters:
offset - Offset of this bytecode
labelOffsets - Offsets of any labels used in branch bytecodes
constantPool - Indices of constant pool items used in various bytecodes (e.g. ldc, putfield, etc)
Returns:

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object


Copyright © 2013 David J. Pearce. All Rights Reserved.