public class InstructionFactory extends Object implements InstructionConstants
Note: The static createXXX methods return singleton instances from the InstructionConst
class.
Const
,
InstructionConst
InstructionConstants.Clinit
Modifier and Type | Field and Description |
---|---|
protected ClassGen |
cg
Deprecated.
(since 6.0) will be made private; do not access directly, use getter/setter
|
protected ConstantPoolGen |
cp
Deprecated.
(since 6.0) will be made private; do not access directly, use getter/setter
|
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 and Description |
---|
InstructionFactory(ClassGen cg)
Initialize with ClassGen object
|
InstructionFactory(ClassGen cg,
ConstantPoolGen cp) |
InstructionFactory(ConstantPoolGen cp)
Initialize just with ConstantPoolGen object
|
Modifier and Type | Method and Description |
---|---|
Instruction |
createAppend(Type type) |
static ArrayInstruction |
createArrayLoad(Type type) |
static ArrayInstruction |
createArrayStore(Type type) |
static ArithmeticInstruction |
createBinaryOperation(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 srcType,
Type destType)
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(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(String className,
String name,
Type type,
short kind)
Create a field instruction.
|
GETFIELD |
createGetField(String className,
String name,
Type t) |
GETSTATIC |
createGetStatic(String className,
String name,
Type t) |
INSTANCEOF |
createInstanceOf(ReferenceType t) |
InvokeInstruction |
createInvoke(String className,
String name,
Type retType,
Type[] argTypes,
short kind)
Create an invoke instruction.
|
InvokeInstruction |
createInvoke(String className,
String name,
Type retType,
Type[] argTypes,
short kind,
boolean useInterface)
Create an invoke instruction.
|
static LocalVariableInstruction |
createLoad(Type type,
int index) |
NEW |
createNew(ObjectType t) |
NEW |
createNew(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(String s)
Create a call to the most popular System.out.println() method.
|
PUTFIELD |
createPutField(String className,
String name,
Type t) |
PUTSTATIC |
createPutStatic(String className,
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() |
void |
setClassGen(ClassGen c) |
void |
setConstantPool(ConstantPoolGen c) |
@Deprecated protected ClassGen cg
@Deprecated protected ConstantPoolGen cp
public InstructionFactory(ClassGen cg)
public InstructionFactory(ClassGen cg, ConstantPoolGen cp)
public InstructionFactory(ConstantPoolGen cp)
public static ArrayInstruction createArrayLoad(Type type)
type
- type of elements of array, i.e., array.getElementType()public static ArrayInstruction createArrayStore(Type type)
type
- type of elements of array, i.e., array.getElementType()public static ArithmeticInstruction createBinaryOperation(String op, Type type)
op
- operation, such as "+", "*", "<<", etc.public static BranchInstruction createBranchInstruction(short opcode, InstructionHandle target)
public static StackInstruction createDup(int size)
size
- size of operand, either 1 (int, e.g.) or 2 (double)public static StackInstruction createDup_1(int size)
size
- size of operand, either 1 (int, e.g.) or 2 (double)public static StackInstruction createDup_2(int size)
size
- size of operand, either 1 (int, e.g.) or 2 (double)public static LocalVariableInstruction createLoad(Type type, int index)
index
- index of local variablepublic static Instruction createNull(Type type)
public static StackInstruction createPop(int size)
size
- size of operand, either 1 (int, e.g.) or 2 (double)public static ReturnInstruction createReturn(Type type)
public static LocalVariableInstruction createStore(Type type, int index)
index
- index of local variablepublic static Instruction createThis()
public Instruction createAppend(Type type)
public Instruction createCast(Type srcType, Type destType)
public CHECKCAST createCheckCast(ReferenceType t)
public Instruction createConstant(Object value)
value
- must be of type Number, Boolean, Character or Stringpublic FieldInstruction createFieldAccess(String className, String name, Type type, short kind)
className
- name of the accessed classname
- name of the referenced fieldtype
- type of fieldkind
- how to access, i.e., GETFIELD, PUTFIELD, GETSTATIC, PUTSTATICConst
public INSTANCEOF createInstanceOf(ReferenceType t)
public InvokeInstruction createInvoke(String className, String name, Type retType, Type[] argTypes, short kind)
className
- name of the called classname
- name of the called methodretType
- return type of methodargTypes
- argument types of methodkind
- how to invoke, i.e., INVOKEINTERFACE, INVOKESTATIC, INVOKEVIRTUAL, or INVOKESPECIALConst
public InvokeInstruction createInvoke(String className, String name, Type retType, Type[] argTypes, short kind, boolean useInterface)
className
- name of the called classname
- name of the called methodretType
- return type of methodargTypes
- argument types of methodkind
- how to invoke: INVOKEINTERFACE, INVOKESTATIC, INVOKEVIRTUAL, or INVOKESPECIALuseInterface
- force use of InterfaceMethodrefpublic NEW createNew(ObjectType t)
public Instruction createNewArray(Type t, short dim)
public InstructionList createPrintln(String s)
s
- the string to printpublic ClassGen getClassGen()
public ConstantPoolGen getConstantPool()
public void setClassGen(ClassGen c)
public void setConstantPool(ConstantPoolGen c)
Copyright © 2004–2024 The Apache Software Foundation. All rights reserved.