Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

com.techtrader.modules.tools.bytecode
Class ConvertInstruction  view ConvertInstruction download ConvertInstruction.java

java.lang.Object
  extended bycom.techtrader.modules.tools.bytecode.Instruction
      extended bycom.techtrader.modules.tools.bytecode.ConvertInstruction
All Implemented Interfaces:
Constants, com.techtrader.modules.tools.bytecode.visitor.VisitAcceptor

public class ConvertInstruction
extends Instruction

Represents one of the conversion opcodes defined in the Constants interface for converting between primitive types. Changing the types of the instruction will automatically update the underlying opcode. If converting from one type to the same type will result in a NOP. Note that the result of conversions not supported directly by the JVM (i.e. char to double) is undefined.


Field Summary
private  java.lang.Class _fromType
           
private  java.lang.Class _toType
           
private static java.util.Map _typeNames
           
 
Fields inherited from class com.techtrader.modules.tools.bytecode.Instruction
_byteIndex, _opcode, _opcodeTypes, _owner
 
Fields inherited from interface com.techtrader.modules.tools.bytecode.Constants
AALOAD, AASTORE, ACCESS_ABSTRACT, ACCESS_FINAL, ACCESS_INTERFACE, ACCESS_NATIVE, ACCESS_PRIVATE, ACCESS_PROTECTED, ACCESS_PUBLIC, ACCESS_STATIC, ACCESS_STRICT, ACCESS_SUPER, ACCESS_SYNCHRONIZED, ACCESS_TRANSIENT, ACCESS_VOLATILE, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ARETURN, ARRAY_BOOLEAN, ARRAY_BYTE, ARRAY_CHAR, ARRAY_DOUBLE, ARRAY_FLOAT, ARRAY_INT, ARRAY_LONG, ARRAY_SHORT, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_CODE, ATTR_CONST, ATTR_DEPRECATED, ATTR_EXCEPTIONS, ATTR_INNERCLASS, ATTR_LINENUMBERS, ATTR_LOCALS, ATTR_SOURCE, ATTR_SYNTHETIC, ATTR_UNKNOWN, BALOAD, BASTORE, BIPUSH, 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_EQ, IF_GE, IF_GT, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IF_LE, IF_LT, IF_NE, IF_NONNULL, IF_NULL, IINC, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, 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, MATH_ADD, MATH_AND, MATH_DIV, MATH_MUL, MATH_NEG, MATH_OR, MATH_REM, MATH_SHL, MATH_SHR, MATH_SUB, MATH_USHR, MATH_XOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, OPCODE_NAMES, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, TABLESWITCH, VALID_MAGIC, WIDE
 
Constructor Summary
protected ConvertInstruction(Code owner)
           
protected ConvertInstruction(Code owner, int opcode, java.lang.Class from, java.lang.Class to)
           
 
Method Summary
 void acceptVisit(com.techtrader.modules.tools.bytecode.visitor.BCVisitor visit)
          Accept a visit from a BCVisitor, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this object.
private  void calculateOpCode()
          Helper method to calculate the correct opcode for this conversion.
protected  void copy(Instruction orig)
           
 boolean equals(java.lang.Object other)
          ConvertInstructions are equal if they convert between the same types, or the types of either is unset.
 java.lang.Class getFromType()
          Get the type of being converted from; will be one of: int, float, double, long.
 java.lang.String getFromTypeName()
          Get the type of being converted from; will be one of: int, float, double, long.
 int getStackChange()
          Return the number of stack positions this instruction pushes or pops during its execution.
 java.lang.Class getToType()
          Get the type being converted to; will be one of: int, float, double, long, byte, char, short.
 java.lang.String getToTypeName()
          Get the type being converted to; will be one of: int, float, double, long, byte, char, short.
 ConvertInstruction setFromType(java.lang.Class type)
          Set the type to convert from.
 ConvertInstruction setFromTypeName(java.lang.String name)
          Set the type to convert from by name.
 ConvertInstruction setToType(java.lang.Class type)
          Set the type to convert to.
 ConvertInstruction setToTypeName(java.lang.String name)
          Set the type to convert to by name.
 
Methods inherited from class com.techtrader.modules.tools.bytecode.Instruction
getByteIndex, getLength, getName, getOpCode, getOwner, invalidate, readData, setByteIndex, setOpCode, writeData
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_typeNames

private static final java.util.Map _typeNames

_fromType

private java.lang.Class _fromType

_toType

private java.lang.Class _toType
Constructor Detail

ConvertInstruction

protected ConvertInstruction(Code owner)

ConvertInstruction

protected ConvertInstruction(Code owner,
                             int opcode,
                             java.lang.Class from,
                             java.lang.Class to)
Method Detail

getFromType

public java.lang.Class getFromType()
Get the type of being converted from; will be one of: int, float, double, long. If the type has not been set, this method will return null.


getFromTypeName

public java.lang.String getFromTypeName()
Get the type of being converted from; will be one of: int, float, double, long. If the type has not been set, this method will return null.


setFromType

public ConvertInstruction setFromType(java.lang.Class type)
Set the type to convert from. Types without direct support are demoted to int.class.


setFromTypeName

public ConvertInstruction setFromTypeName(java.lang.String name)
Set the type to convert from by name.


getToType

public java.lang.Class getToType()
Get the type being converted to; will be one of: int, float, double, long, byte, char, short. If the type has not been set, this method will return null.


getToTypeName

public java.lang.String getToTypeName()
Get the type being converted to; will be one of: int, float, double, long, byte, char, short. If the type has not been set, this method will return null.


setToType

public ConvertInstruction setToType(java.lang.Class type)
Set the type to convert to. Types without direct support are demoted to int.class.


setToTypeName

public ConvertInstruction setToTypeName(java.lang.String name)
Set the type to convert to by name.


equals

public boolean equals(java.lang.Object other)
ConvertInstructions are equal if they convert between the same types, or the types of either is unset.

Overrides:
equals in class Instruction

getStackChange

public int getStackChange()
Description copied from class: Instruction
Return the number of stack positions this instruction pushes or pops during its execution.

Overrides:
getStackChange in class Instruction

copy

protected void copy(Instruction orig)
Overrides:
copy in class Instruction

calculateOpCode

private void calculateOpCode()
Helper method to calculate the correct opcode for this conversion.


acceptVisit

public void acceptVisit(com.techtrader.modules.tools.bytecode.visitor.BCVisitor visit)
Description copied from interface: com.techtrader.modules.tools.bytecode.visitor.VisitAcceptor
Accept a visit from a BCVisitor, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this object.

Specified by:
acceptVisit in interface com.techtrader.modules.tools.bytecode.visitor.VisitAcceptor
Overrides:
acceptVisit in class Instruction