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_
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 |
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 java.lang.Object |
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
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 ?
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 dataout
- the file where to write this object info- Throws:
java.io.IOException
- an io problem has occured