jellyj.classfile.classgen
Class Diagram classgen

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)
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.
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.
VariableLengthInstructionDenotes an instruction to be a variable length instruction, such as GOTO, JSR, LOOKUPSWITCH and TABLESWITCH.