jasm.lang
Class Bytecode.Cmp

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

public static class Bytecode.Cmp
extends Bytecode

This represents the bytecodes fcmpl, fcmpg, dcmpl, dcmpg and lcmp


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
static int EQ
           
static int GT
           
static int LT
           
 int op
           
static java.lang.String[] str
           
 JvmType 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.Cmp(JvmType type, int op)
          Construct a cmp bytecode.
 
Method Summary
 boolean equals(java.lang.Object o)
           
 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

EQ

public static final int EQ
See Also:
Constant Field Values

LT

public static final int LT
See Also:
Constant Field Values

GT

public static final int GT
See Also:
Constant Field Values

str

public static final java.lang.String[] str

op

public final int op

type

public final JvmType type
Constructor Detail

Bytecode.Cmp

public Bytecode.Cmp(JvmType type,
                    int op)
Construct a cmp bytecode.

Parameters:
type - either Type.Float, Type.Double or Type.Long
op - op == LT || OP == GT if type == Float or type == Double, otherwise op == EQ
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:

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.