at.dms.classfile
Class PushLiteralInstruction

java.lang.Object
  |
  +--at.dms.classfile.AbstractInstructionAccessor
        |
        +--at.dms.classfile.Instruction
              |
              +--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_, fconst_, iconst_, lconst_


Inner Class Summary
(package private) static interface PushLiteralInstruction.Operand
          An operand.
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_NBR_FLAGS, 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(java.lang.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.
 java.lang.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
(package private)  int getSize()
          Returns the number of bytes used by the the instruction in the code array.
 int getStack()
          Return the amount of stack (positive or negative) used by this instruction.
 boolean isLiteral()
          Return true if this instruction is a literal
(package private)  void resolveConstants(ConstantPool cp)
          Insert or check location of constant value on constant pool
(package private)  void write(ConstantPool cp, java.io.DataOutput out)
          Write this instruction into a file.
 
Methods inherited from class at.dms.classfile.Instruction
check, computeEndAddress, dump, getAddress, getLocalVar, getOpcode, getPoppedFromStack, setAddress, setOpcode
 
Methods inherited from class at.dms.classfile.AbstractInstructionAccessor
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(java.lang.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.
Overrides:
canComplete in class Instruction

isLiteral

public boolean isLiteral()
Return true if this instruction is a literal
Overrides:
isLiteral in class Instruction

getSize

int getSize()
Returns the number of bytes used by the the instruction in the code array.
Overrides:
getSize in class Instruction

getLiteral

public java.lang.Object getLiteral()
Returns the value of this literal

getPushedOnStack

public int getPushedOnStack()
Returns the size of data pushed on the stack by this instruction
Overrides:
getPushedOnStack in class Instruction

getReturnType

public byte getReturnType()
Returns the type pushed on the stack
Overrides:
getReturnType in class Instruction

getStack

public int getStack()
Return the amount of stack (positive or negative) used by this instruction.
Overrides:
getStack in class Instruction

resolveConstants

void resolveConstants(ConstantPool cp)
Insert or check location of constant value on constant pool
Overrides:
resolveConstants in class Instruction
Parameters:
cp - the constant pool for this class.

write

void write(ConstantPool cp,
           java.io.DataOutput out)
     throws java.io.IOException
Write this instruction into a file.
Overrides:
write in class Instruction
Parameters:
cp - the constant pool that contain all data
out - the file where to write this object info
Throws:
java.io.IOException - an io problem has occured