at.dms.classfile
Class PushLiteralInstruction

java.lang.Object
  extended by at.dms.classfile.AbstractInstructionAccessor
      extended by at.dms.classfile.Instruction
          extended by at.dms.classfile.PushLiteralInstruction
All Implemented Interfaces:
Constants, InstructionAccessor

public class PushLiteralInstruction
extends Instruction

This class encapsulates the instructions pushing a literal on the stack: bipush, sipush, ldc, ldc_w, ldc2_w, dconst_d, fconst_f, iconst_i, lconst_l


Field Summary
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INLINE, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_EXCEPTIONS, ATT_GENERIC, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_SOURCEFILE, ATT_SYNTHETIC, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID
 
Constructor Summary
PushLiteralInstruction(double value)
          Constructs an instruction that pushes a double literal on the stack.
PushLiteralInstruction(float value)
          Constructs an instruction that pushes a float literal on the stack.
PushLiteralInstruction(int value)
          Constructs an instruction that pushes a int literal on the stack.
PushLiteralInstruction(long value)
          Constructs an instruction that pushes a long literal on the stack.
PushLiteralInstruction(PooledConstant cst, boolean wide)
          Constructs an instruction that pushes a string literal on the stack from a class file stream.
PushLiteralInstruction(String value)
          Constructs an instruction that pushes a string literal on the stack.
 
Method Summary
 boolean canComplete()
          Returns true iff control flow can reach the next instruction in textual order.
 Object getLiteral()
          Returns the value of this literal
 int getPushedOnStack()
          Returns the size of data pushed on the stack by this instruction
 byte getReturnType()
          Returns the type pushed on the stack
 int getStack()
          Return the amount of stack (positive or negative) used by this instruction
 boolean isLiteral()
          Return true if this instruction is a literal
 
Methods inherited from class at.dms.classfile.Instruction
dump, getOpcode, getPoppedFromStack
 
Methods inherited from class at.dms.classfile.AbstractInstructionAccessor
deepClone, deepCloneInto, transform
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PushLiteralInstruction

public PushLiteralInstruction(double value)
Constructs an instruction that pushes a double literal on the stack.

Parameters:
value - a double literal

PushLiteralInstruction

public PushLiteralInstruction(float value)
Constructs an instruction that pushes a float literal on the stack.

Parameters:
value - a float literal

PushLiteralInstruction

public PushLiteralInstruction(int value)
Constructs an instruction that pushes a int literal on the stack.

Parameters:
value - a int literal

PushLiteralInstruction

public PushLiteralInstruction(long value)
Constructs an instruction that pushes a long literal on the stack.

Parameters:
value - a long literal

PushLiteralInstruction

public PushLiteralInstruction(String value)
Constructs an instruction that pushes a string literal on the stack.

Parameters:
value - a string literal

PushLiteralInstruction

public PushLiteralInstruction(PooledConstant cst,
                              boolean wide)
Constructs an instruction that pushes a string literal on the stack from a class file stream.

Parameters:
cst - a pooled constant
wide - does this constant use 2 slots in the pool ?
Method Detail

canComplete

public boolean canComplete()
Returns true iff control flow can reach the next instruction in textual order.

Specified by:
canComplete in class Instruction

isLiteral

public boolean isLiteral()
Return true if this instruction is a literal

Overrides:
isLiteral in class Instruction

getLiteral

public Object getLiteral()
Returns the value of this literal


getPushedOnStack

public int getPushedOnStack()
Returns the size of data pushed on the stack by this instruction

Specified by:
getPushedOnStack in class Instruction

getReturnType

public byte getReturnType()
Returns the type pushed on the stack

Specified by:
getReturnType in class Instruction

getStack

public int getStack()
Return the amount of stack (positive or negative) used by this instruction

Specified by:
getStack in class Instruction