Package jellyj.classfile.classgen

Class Diagram Summary
classgen 
 

Interface Summary
CodeConstraintCode patterns found with the FindPattern class may receive an additional CodeConstraint argument that checks the found piece of code for user-defined constraints.
CompoundInstructionWrapper class for `compound' operations, virtual instructions that don't exist as byte code, but give a useful meaning.
VariableLengthInstructionDenotes an instruction to be a variable length instruction, such as GOTO, JSR, LOOKUPSWITCH and TABLESWITCH.
 

Class Summary
AALOADAALOAD - Load reference from array Stack ..., arrayref, index -> value
AASTOREAASTORE - Store into reference array Stack: ..., arrayref, index, value -> ...
ACONST_NULLACONST_NULL - Push null Stack: ...
ALOADALOAD - Load reference from local variable Stack ...
ANEWARRAYANEWARRAY - Create new array of references Stack: ..., count -> ..., arrayref
ARETURNARETURN - Return reference from method Stack: ..., objectref ->
ARRAYLENGTHARRAYLENGTH - Get length of array Stack: ..., arrayref -> ..., length
ASTOREASTORE - Store reference into local variable Stack ..., objectref -> ...
ATHROWATHROW - Throw exception Stack: ..., objectref -> objectref
BALOADBALOAD - Load byte or boolean from array Stack: ..., arrayref, index -> ..., value
BASTOREBASTORE - Store into byte or boolean array Stack: ..., arrayref, index, value -> ...
BIPUSHBIPUSH - Push byte Stack: ...
BranchHandleBranchHandle is returned by specialized InstructionList.append() whenever a BranchInstruction is appended.
BranchInstructionAbstract super class for branching instructions like GOTO, IFEQ, etc..
CALOADCALOAD - Load char from array Stack: ..., arrayref, index -> ..., value
CASTORECASTORE - Store into char array Stack: ..., arrayref, index, value -> ...
CHECKCASTCHECKCAST - Check whether object is of given type Stack: ..., objectref -> ..., objectref
ClassGenTemplate class for building up a java class.
ClassGenExceptionThrown on internal errors.
ClassGenTypeRepresents a basic or reference type (int, short, ..., objectref, arrayref)
ConstantPoolGenThis class is used to consequently build up a constant pool.
CPInstructionAbstract super class for instructions that use an index into the constant pool such as LDC, INVOKEVIRTUAL, etc.
D2FD2F - Convert double to float Stack: ..., value.word1, value.word2 -> ..., result
D2ID2I - Convert double to int Stack: ..., value.word1, value.word2 -> ..., result
D2LD2L - Convert double to long Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
DADDDADD - Add doubles Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result.word1, result1.word2
DALOADDALOAD - Load double from array Stack: ..., arrayref, index -> ..., result.word1, result.word2
DASTOREDASTORE - Store into double array Stack: ..., arrayref, index, value.word1, value.word2 -> ...
DCMPGDCMPG - Compare doubles: value1 > value2 Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result
DCMPLDCMPL - Compare doubles: value1 < value2 Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result
DCONSTDCONST - Push 0.0 or 1.0, other values cause an exception Stack: ...
DDIVDDIV - Divide doubles Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result.word1, result.word2
DLOADDLOAD - Load double from local variable Stack ...
DMULDMUL - Multiply doubles Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result.word1, result.word2
DNEGDNEG - Negate double Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
DREMDREM - Remainder of doubles Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result.word1, result.word2
DRETURNDRETURN - Return double from method Stack: ..., value.word1, value.word2 ->
DSTOREDSTORE - Store double into local variable Stack ..., value.word1, value.word2 -> ...
DSUBDSUB - Substract doubles Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result.word1, result.word2
DUPDUP - Duplicate top operand stack word Stack: ..., word -> ..., word, word
DUP_X1DUP_X1 - Duplicate top operand stack word and put two down Stack: ..., word2, word1 -> ..., word1, word2, word1
DUP_X2DUP_X2 - Duplicate top operand stack word and put three down Stack: ..., word3, word2, word1 -> ..., word1, word3, word2, word1
DUP2DUP2 - Duplicate two top operand stack words Stack: ..., word2, word1 -> ..., word2, word1, word2, word1
DUP2_X1DUP2_X1 - Duplicate two top operand stack words and put three down Stack: ..., word3, word2, word1 -> ..., word2, word1, word3, word2, word1
DUP2_X2DUP2_X2 - Duplicate two top operand stack words and put four down Stack: ..., word4, word3, word2, word1 -> ..., word2, word1, word4, word3, word2, word1
F2DF2D - Convert float to double Stack: ..., value -> ..., result.word1, result.word2
F2IF2I - Convert float to int Stack: ..., value -> ..., result
F2LF2L - Convert float to long Stack: ..., value -> ..., result.word1, result.word2
FADDFADD - Add floats Stack: ..., value1, value2 -> result
FALOADFALOAD - Load float from array Stack: ..., arrayref, index -> ..., value
FASTOREFASTORE - Store into float array Stack: ..., arrayref, index, value -> ...
FCMPGFCMPG - Compare floats: value1 > value2 Stack: ..., value1, value2 -> ..., result
FCMPLFCMPL - Compare floats: value1 < value2 Stack: ..., value1, value2 -> ..., result
FCONSTFCONST - Push 0.0, 1.0 or 2.0, other values cause an exception Stack: ...
FDIVFDIV - Divide floats Stack: ..., value1, value2 -> result
FLOADFLOAD - Load float from local variable Stack ...
FMULFMUL - Multiply floats Stack: ..., value1, value2 -> result
FNEGFNEG - Negate float Stack: ..., value -> ..., result
FREMFREM - Remainder of floats Stack: ..., value1, value2 -> result
FRETURNFRETURN - Return float from method Stack: ..., value ->
FSTOREFSTORE - Store float into local variable Stack ..., value -> ...
FSUBFSUB - Substract floats Stack: ..., value1, value2 -> result
GETFIELDGETFIELD - Fetch field from object Stack: ..., objectref -> ..., value OR Stack: ..., objectref -> ..., value.word1, value.word2
GETSTATICGETSTATIC - Fetch static field from class Stack: ..., -> ..., value OR Stack: ..., -> ..., value.word1, value.word2
GOTOGOTO - Branch always (offset, not address)
GOTO_WGOTO_W - Branch always (offset, not address)
I2BI2B - Convert int to byte Stack: ..., value -> ..., result
I2CI2C - Convert int to char Stack: ..., value -> ..., result
I2DI2D - Convert int to double Stack: ..., value -> ..., result.word1, result.word2
I2FI2F - Convert int to float Stack: ..., value -> ..., result
I2LI2L - Convert int to long Stack: ..., value -> ..., result.word1, result.word2
I2SI2S - Convert int to short Stack: ..., value -> ..., result
IADDIADD - Add ints Stack: ..., value1, value2 -> result
IALOADIALOAD - Load int from array Stack: ..., arrayref, index -> ..., value
IANDIAND - Bitwise AND int Stack: ..., value1, value2 -> ..., result
IASTOREIASTORE - Store into int array Stack: ..., arrayref, index, value -> ...
ICONSTICONST - Push value between -1, ..., 5, other values cause an exception Stack: ...
IDIVIDIV - Divide ints Stack: ..., value1, value2 -> result
IF_ACMPEQIF_ACMPEQ - Branch if reference comparison succeeds Stack: ..., value1, value2 -> ...
IF_ACMPNEIF_ACMPNE - Branch if reference comparison doesn't succeed Stack: ..., value1, value2 -> ...
IF_ICMPEQIF_ICMPEQ - Branch if int comparison succeeds Stack: ..., value1, value2 -> ...
IF_ICMPGEIF_ICMPGE - Branch if int comparison succeeds Stack: ..., value1, value2 -> ...
IF_ICMPGTIF_ICMPGT - Branch if int comparison succeeds Stack: ..., value1, value2 -> ...
IF_ICMPLEIF_ICMPLE - Branch if int comparison succeeds Stack: ..., value1, value2 -> ...
IF_ICMPLTIF_ICMPLT - Branch if int comparison succeeds Stack: ..., value1, value2 -> ...
IF_ICMPNEIF_ICMPNE - Branch if int comparison doesn't succeed Stack: ..., value1, value2 -> ...
IFEQIFEQ - Branch if int comparison with zero succeeds Stack: ..., value1, value2 -> ...
IFGEIFGE - Branch if int comparison with zero succeeds Stack: ..., value1, value2 -> ...
IFGTIFGT - Branch if int comparison with zero succeeds Stack: ..., value1, value2 -> ...
IFLEIFLE - Branch if int comparison with zero succeeds Stack: ..., value1, value2 -> ...
IFLTIFLT - Branch if int comparison with zero succeeds Stack: ..., value1, value2 -> ...
IFNEIFNE - Branch if int comparison with zero succeeds Stack: ..., value1, value2 -> ...
IFNONNULLIFNONNULL - Branch if reference is not null Stack: ..., reference -> ...
IFNULLIFNULL - Branch if reference is not null Stack: ..., reference -> ...
IINCIINC - Increment local variable by constant
ILOADILOAD - Load int from local variable Stack ...
IMPDEP1IMPDEP1 - Implementation dependent
IMPDEP2IMPDEP2 - Implementation dependent
IMULIMUL - Multiply ints Stack: ..., value1, value2 -> result
INEGINEG - Negate int Stack: ..., value -> ..., result
INSTANCEOFINSTANCEOF - Determine if object is of given type Stack: ..., objectref -> ..., result
InstructionThis abstract class is the super class for all java byte codes.
InstructionHandleInstances of this class give users a handle to the instructions contained in an InstructionList.
InstructionListThis class is a container for a list of `Instruction's, instructions can be appended, inserted, deleted, etc..
INVOKEINTERFACEINVOKEINTERFACE - Invoke interface method Stack: ..., objectref, [arg1, [arg2 ...]] -> ...
INVOKESPECIALINVOKESPECIAL - Invoke instance method; special handling for superclass, private and instance initialization method invocations Stack: ..., objectref, [arg1, [arg2 ...]] -> ...
INVOKESTATICINVOKESTATIC - Invoke a class (static) method Stack: ..., [arg1, [arg2 ...]] -> ...
INVOKEVIRTUALINVOKEVIRTUAL - Invoke instance method; dispatch based on class Stack: ..., objectref, [arg1, [arg2 ...]] -> ...
IORIOR - Bitwise OR int Stack: ..., value1, value2 -> ..., result
IREMIREM - Remainder of int Stack: ..., value1, value2 -> result
IRETURNIRETURN - Return int from method Stack: ..., value ->
ISHLISHL - Arithmetic shift left int Stack: ..., value1, value2 -> ..., result
ISHRISHR - Arithmetic shift right int Stack: ..., value1, value2 -> ..., result
ISTOREISTORE - Store int into local variable Stack ..., value -> ...
ISUBISUB - Substract ints Stack: ..., value1, value2 -> result
IUSHRIUSHR - Logical shift right int Stack: ..., value1, value2 -> ..., result
IXORIXOR - Bitwise XOR int Stack: ..., value1, value2 -> ..., result
JSRJSR - Jump to subroutine
JSR_WJSR_W - Jump to subroutine
L2DL2D - Convert long to double Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
L2FL2F - Convert long to float Stack: ..., value.word1, value.word2 -> ..., result
L2IL2I - Convert long to int Stack: ..., value.word1, value.word2 -> ..., result
LADDLADD - Add longs Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result.word1, result.word2
LALOADLALOAD - Load long from array Stack: ..., arrayref, index -> ..., value1, value2
LANDLAND - Bitwise AND longs Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result.word1, result.word2
LASTORELASTORE - Store into long array Stack: ..., arrayref, index, value.word1, value.word2 -> ...
LCMPLCMP - Compare longs: Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result <= -1, 0, 1>
LCONSTLCONST - Push 0 or 1, other values cause an exception Stack: ...
LDCLDC - Push item from constant pool Stack: ...
LDC_WLDC_W - Push item from constant pool (wide index) Stack: ...
LDC2_WLDC2_W - Push long or double from constant pool Stack: ...
LDIVLDIV - Divide longs Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result.word1, result.word2
LLOADLLOAD - Load long from local variable Stack ...
LMULLMUL - Multiply longs Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result.word1, result.word2
LNEGLNEG - Negate long Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
LocalVariableGenThis class represents a local variable within a method.
LocalVariableInstructionAbstract super class for instructions dealing with local variables.
LOOKUPSWITCHLOOKUPSWITCH - Switch with unordered set of values
LORLOR - Bitwise OR long Stack: ..., value1, value2 -> ..., result
LREMLREM - Remainder of long Stack: ..., value1, value2 -> result
LRETURNLRETURN - Return long from method Stack: ..., value.word1, value.word2 ->
LSHLLSHL - Arithmetic shift left long Stack: ..., value1, value2 -> ..., result
LSHRLSHR - Arithmetic shift right long Stack: ..., value1, value2 -> ..., result
LSTORELSTORE - Store long into local variable Stack ..., value.word1, value.word2 -> ...
LSUBLSUB - Substract longs Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result.word1, result.word2
LUSHRLUSHR - Logical shift right long Stack: ..., value1, value2 -> ..., result
LXORLXOR - Bitwise XOR long Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result
MethodGenTemplate class for building up a method.
MONITORENTERMONITORENTER - Enter monitor for object Stack: ..., objectref -> ...
MONITOREXITMONITOREXIT - Exit monitor for object Stack: ..., objectref -> ...
MULTIANEWARRAYMULTIANEWARRAY - Create new mutidimensional array of references Stack: ..., count1, [count2, ...] -> ..., arrayref
NEWNEW - Create new object Stack: ...
NEWARRAYNEWARRAY - Create new array of basic type (int, short, ...) Stack: ..., type -> ..., arrayref type mus be one of T_INT, T_SHORT, ...
NOPNOP - Do nothing
POPPOP - Pop top operand stack word Stack: ..., word -> ...
POP2POP2 - Pop two top operand stack words Stack: ..., word2, word1 -> ...
PUSHWrapper class for push operations, which are implemented either as BIPUSH, LDC or xCONST_n instructions.
PUTFIELDPUTFIELD - Put field in object Stack: ..., objectref, value -> ...
PUTSTATICPUTSTATIC - Put static field in class Stack: ..., objectref, value -> ...
RETRET - Return from subroutine Stack: ..., -> ..., address
RETURNRETURN - Return from void method Stack: ...
SALOADSALOAD - Load short from array Stack: ..., arrayref, index -> ..., value
SASTORESASTORE - Store into short array Stack: ..., arrayref, index, value -> ...
SelectSelect - Abstract super class for LOOKUPSWITCH and TABLESWITCH instructions.
SIPUSHSIPUSH - Push short Stack: ...
SWAPSWAP - Swa top operand stack word Stack: ..., word2, word1 -> ..., word1, word2
SWITCHSWITCH - Branch depending on int value, generates either LOOKUPSWITCH or TABLESWITCH instruction, depending on whether the match values (int[]) can be sorted with no gaps between the numbers.
TABLESWITCHTABLESWITCH - Switch within given range of values, i.e.