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

Quick Search    Search Deep

org.apache.bcel.generic
Class InstructionFactory  view InstructionFactory download InstructionFactory.java

java.lang.Object
  extended byorg.apache.bcel.generic.InstructionFactory
All Implemented Interfaces:
InstructionConstants, java.io.Serializable

public class InstructionFactory
extends java.lang.Object
implements InstructionConstants, java.io.Serializable

Instances of this class may be used, e.g., to generate typed versions of instructions. Its main purpose is to be used as the byte code generating backend of a compiler. You can subclass it to add your own create methods.

Version:
$Id: InstructionFactory.java 386056 2006-03-15 11:31:56Z tcurdt $

Nested Class Summary
private static class InstructionFactory.MethodObject
           
 
Nested classes inherited from class org.apache.bcel.generic.InstructionConstants
InstructionConstants.Clinit
 
Field Summary
private static InstructionFactory.MethodObject[] append_mos
           
protected  ClassGen cg
           
protected  ConstantPoolGen cp
           
 
Fields inherited from interface org.apache.bcel.generic.InstructionConstants
AALOAD, AASTORE, ACONST_NULL, ALOAD_0, ALOAD_1, ALOAD_2, ARETURN, ARRAYLENGTH, ASTORE_0, ASTORE_1, ASTORE_2, ATHROW, BALOAD, BASTORE, bla, CALOAD, CASTORE, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DMUL, DNEG, DREM, DRETURN, 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, FMUL, FNEG, FREM, FRETURN, FSUB, 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, ILOAD_0, ILOAD_1, ILOAD_2, IMUL, INEG, INSTRUCTIONS, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE_0, ISTORE_1, ISTORE_2, ISUB, IUSHR, IXOR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDIV, LMUL, LNEG, LOR, LREM, LRETURN, LSHL, LSHR, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, NOP, POP, POP2, RETURN, SALOAD, SASTORE, SWAP, THIS
 
Constructor Summary
InstructionFactory(ClassGen cg)
          Initialize with ClassGen object
InstructionFactory(ClassGen cg, ConstantPoolGen cp)
           
InstructionFactory(ConstantPoolGen cp)
          Initialize just with ConstantPoolGen object
 
Method Summary
 Instruction createAppend(Type type)
           
static ArrayInstruction createArrayLoad(Type type)
           
static ArrayInstruction createArrayStore(Type type)
           
private static ArithmeticInstruction createBinaryDoubleOp(char op)
           
private static ArithmeticInstruction createBinaryFloatOp(char op)
           
private static ArithmeticInstruction createBinaryIntOp(char first, java.lang.String op)
           
private static ArithmeticInstruction createBinaryLongOp(char first, java.lang.String op)
           
static ArithmeticInstruction createBinaryOperation(java.lang.String op, Type type)
          Create binary operation for simple basic types, such as int and float.
static BranchInstruction createBranchInstruction(short opcode, InstructionHandle target)
          Create branch instruction by given opcode, except LOOKUPSWITCH and TABLESWITCH.
 Instruction createCast(Type src_type, Type dest_type)
          Create conversion operation for two stack operands, this may be an I2C, instruction, e.g., if the operands are basic types and CHECKCAST if they are reference types.
 CHECKCAST createCheckCast(ReferenceType t)
           
 Instruction createConstant(java.lang.Object value)
          Uses PUSH to push a constant value onto the stack.
static StackInstruction createDup_1(int size)
           
static StackInstruction createDup_2(int size)
           
static StackInstruction createDup(int size)
           
 FieldInstruction createFieldAccess(java.lang.String class_name, java.lang.String name, Type type, short kind)
          Create a field instruction.
 GETFIELD createGetField(java.lang.String class_name, java.lang.String name, Type t)
           
 GETSTATIC createGetStatic(java.lang.String class_name, java.lang.String name, Type t)
           
 INSTANCEOF createInstanceOf(ReferenceType t)
           
private  InvokeInstruction createInvoke(InstructionFactory.MethodObject m, short kind)
           
 InvokeInstruction createInvoke(java.lang.String class_name, java.lang.String name, Type ret_type, Type[] arg_types, short kind)
          Create an invoke instruction.
static LocalVariableInstruction createLoad(Type type, int index)
           
 NEW createNew(ObjectType t)
           
 NEW createNew(java.lang.String s)
           
 Instruction createNewArray(Type t, short dim)
          Create new array of given size and type.
static Instruction createNull(Type type)
          Create "null" value for reference types, 0 for basic types like int
static StackInstruction createPop(int size)
           
 InstructionList createPrintln(java.lang.String s)
          Create a call to the most popular System.out.println() method.
 PUTFIELD createPutField(java.lang.String class_name, java.lang.String name, Type t)
           
 PUTSTATIC createPutStatic(java.lang.String class_name, java.lang.String name, Type t)
           
static ReturnInstruction createReturn(Type type)
          Create typed return
static LocalVariableInstruction createStore(Type type, int index)
           
static Instruction createThis()
          Create reference to `this'
 ClassGen getClassGen()
           
 ConstantPoolGen getConstantPool()
           
private static boolean isString(Type type)
           
 void setClassGen(ClassGen c)
           
 void setConstantPool(ConstantPoolGen c)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cg

protected ClassGen cg

cp

protected ConstantPoolGen cp

append_mos

private static InstructionFactory.MethodObject[] append_mos
Constructor Detail

InstructionFactory

public InstructionFactory(ClassGen cg,
                          ConstantPoolGen cp)

InstructionFactory

public InstructionFactory(ClassGen cg)
Initialize with ClassGen object


InstructionFactory

public InstructionFactory(ConstantPoolGen cp)
Initialize just with ConstantPoolGen object

Method Detail

createInvoke

public InvokeInstruction createInvoke(java.lang.String class_name,
                                      java.lang.String name,
                                      Type ret_type,
                                      Type[] arg_types,
                                      short kind)
Create an invoke instruction.


createPrintln

public InstructionList createPrintln(java.lang.String s)
Create a call to the most popular System.out.println() method.


createConstant

public Instruction createConstant(java.lang.Object value)
Uses PUSH to push a constant value onto the stack.


createInvoke

private InvokeInstruction createInvoke(InstructionFactory.MethodObject m,
                                       short kind)

isString

private static final boolean isString(Type type)

createAppend

public Instruction createAppend(Type type)

createFieldAccess

public FieldInstruction createFieldAccess(java.lang.String class_name,
                                          java.lang.String name,
                                          Type type,
                                          short kind)
Create a field instruction.


createThis

public static Instruction createThis()
Create reference to `this'


createReturn

public static ReturnInstruction createReturn(Type type)
Create typed return


createBinaryIntOp

private static final ArithmeticInstruction createBinaryIntOp(char first,
                                                             java.lang.String op)

createBinaryLongOp

private static final ArithmeticInstruction createBinaryLongOp(char first,
                                                              java.lang.String op)

createBinaryFloatOp

private static final ArithmeticInstruction createBinaryFloatOp(char op)

createBinaryDoubleOp

private static final ArithmeticInstruction createBinaryDoubleOp(char op)

createBinaryOperation

public static ArithmeticInstruction createBinaryOperation(java.lang.String op,
                                                          Type type)
Create binary operation for simple basic types, such as int and float.


createPop

public static StackInstruction createPop(int size)

createDup

public static StackInstruction createDup(int size)

createDup_2

public static StackInstruction createDup_2(int size)

createDup_1

public static StackInstruction createDup_1(int size)

createStore

public static LocalVariableInstruction createStore(Type type,
                                                   int index)

createLoad

public static LocalVariableInstruction createLoad(Type type,
                                                  int index)

createArrayLoad

public static ArrayInstruction createArrayLoad(Type type)

createArrayStore

public static ArrayInstruction createArrayStore(Type type)

createCast

public Instruction createCast(Type src_type,
                              Type dest_type)
Create conversion operation for two stack operands, this may be an I2C, instruction, e.g., if the operands are basic types and CHECKCAST if they are reference types.


createGetField

public GETFIELD createGetField(java.lang.String class_name,
                               java.lang.String name,
                               Type t)

createGetStatic

public GETSTATIC createGetStatic(java.lang.String class_name,
                                 java.lang.String name,
                                 Type t)

createPutField

public PUTFIELD createPutField(java.lang.String class_name,
                               java.lang.String name,
                               Type t)

createPutStatic

public PUTSTATIC createPutStatic(java.lang.String class_name,
                                 java.lang.String name,
                                 Type t)

createCheckCast

public CHECKCAST createCheckCast(ReferenceType t)

createInstanceOf

public INSTANCEOF createInstanceOf(ReferenceType t)

createNew

public NEW createNew(ObjectType t)

createNew

public NEW createNew(java.lang.String s)

createNewArray

public Instruction createNewArray(Type t,
                                  short dim)
Create new array of given size and type.


createNull

public static Instruction createNull(Type type)
Create "null" value for reference types, 0 for basic types like int


createBranchInstruction

public static BranchInstruction createBranchInstruction(short opcode,
                                                        InstructionHandle target)
Create branch instruction by given opcode, except LOOKUPSWITCH and TABLESWITCH. For those you should use the SWITCH compound instruction.


setClassGen

public void setClassGen(ClassGen c)

getClassGen

public ClassGen getClassGen()

setConstantPool

public void setConstantPool(ConstantPoolGen c)

getConstantPool

public ConstantPoolGen getConstantPool()