Package | Description |
---|---|
org.apache.bcel.classfile |
This package contains the classes that describe the structure of a
Java class file and a class file parser.
|
org.apache.bcel.generic |
This package contains the "generic" part of the
Byte Code Engineering
Library, i.e., classes to dynamically modify class objects and
byte code instructions.
|
org.apache.bcel.verifier.structurals |
Provides a PassVerifier class mostly used internally by JustIce, yielding a control flow graph for public use as
a nice side effect.
|
Modifier and Type | Method | Description |
---|---|---|
static Attribute[] |
Utility.getAnnotationAttributes(ConstantPoolGen cp,
java.util.List vec) |
Converts a list of AnnotationGen objects into a set of attributes
that can be attached to the class file.
|
static Attribute[] |
Utility.getParameterAnnotationAttributes(ConstantPoolGen cp,
java.util.List[] vec) |
Annotations against a class are stored in one of four attribute kinds:
- RuntimeVisibleParameterAnnotations
- RuntimeInvisibleParameterAnnotations
|
Modifier and Type | Field | Description |
---|---|---|
protected ConstantPoolGen |
FieldGenOrMethodGen.cp |
|
protected ConstantPoolGen |
InstructionFactory.cp |
|
protected ConstantPoolGen |
ElementValueGen.cpGen |
Modifier and Type | Method | Description |
---|---|---|
ConstantPoolGen |
ClassGen.getConstantPool() |
|
protected ConstantPoolGen |
ElementValueGen.getConstantPool() |
|
ConstantPoolGen |
FieldGenOrMethodGen.getConstantPool() |
|
ConstantPoolGen |
InstructionFactory.getConstantPool() |
Modifier and Type | Method | Description |
---|---|---|
void |
MethodGen.addAnnotationsAsAttribute(ConstantPoolGen cp) |
|
int |
ConstantPoolGen.addConstant(Constant c,
ConstantPoolGen cp) |
Import constant from another ConstantPool and return new index.
|
void |
MethodGen.addParameterAnnotationsAsAttribute(ConstantPoolGen cp) |
|
int |
Instruction.consumeStack(ConstantPoolGen cpg) |
This method also gives right results for instructions whose
effect on the stack depends on the constant pool entry they
reference.
|
int |
InvokeInstruction.consumeStack(ConstantPoolGen cpg) |
Also works for instructions whose stack effect depends on the
constant pool entry they reference.
|
int |
INVOKEINTERFACE.consumeStack(ConstantPoolGen cpg) |
|
int |
MULTIANEWARRAY.consumeStack(ConstantPoolGen cpg) |
Also works for instructions whose stack effect depends on the
constant pool entry they reference.
|
int |
PUTFIELD.consumeStack(ConstantPoolGen cpg) |
|
int |
PUTSTATIC.consumeStack(ConstantPoolGen cpg) |
|
int |
StackConsumer.consumeStack(ConstantPoolGen cpg) |
|
static ElementValueGen |
ElementValueGen.copy(ElementValue value,
ConstantPoolGen cpool,
boolean copyPoolEntries) |
Creates an (modifiable) ElementValueGen copy of an (immutable)
ElementValue - constant pool is assumed correct.
|
FieldGen |
FieldGen.copy(ConstantPoolGen cp) |
|
MethodGen |
MethodGen.copy(java.lang.String class_name,
ConstantPoolGen cp) |
|
Type[] |
InvokeInstruction.getArgumentTypes(ConstantPoolGen cpg) |
|
java.lang.String |
FieldOrMethod.getClassName(ConstantPoolGen cpg) |
Deprecated.
If the instruction references an array class,
this method will return "java.lang.Object".
|
ObjectType |
FieldOrMethod.getClassType(ConstantPoolGen cpg) |
Deprecated.
If the instruction references an array class,
the ObjectType returned will be invalid.
|
CodeException |
CodeExceptionGen.getCodeException(ConstantPoolGen cp) |
Get CodeException object.
This relies on that the instruction list has already been dumped to byte code or or that the `setPositions' methods has been called for the instruction list. |
java.lang.String |
FieldInstruction.getFieldName(ConstantPoolGen cpg) |
|
protected int |
FieldInstruction.getFieldSize(ConstantPoolGen cpg) |
|
Type |
FieldInstruction.getFieldType(ConstantPoolGen cpg) |
|
LineNumberTable |
MethodGen.getLineNumberTable(ConstantPoolGen cp) |
|
ObjectType |
ANEWARRAY.getLoadClassType(ConstantPoolGen cpg) |
|
ObjectType |
CHECKCAST.getLoadClassType(ConstantPoolGen cpg) |
|
ObjectType |
FieldOrMethod.getLoadClassType(ConstantPoolGen cpg) |
|
ObjectType |
INSTANCEOF.getLoadClassType(ConstantPoolGen cpg) |
|
ObjectType |
LoadClass.getLoadClassType(ConstantPoolGen cpg) |
Returns the ObjectType of the referenced class or interface
that may be loaded and resolved.
|
ObjectType |
MULTIANEWARRAY.getLoadClassType(ConstantPoolGen cpg) |
|
ObjectType |
NEW.getLoadClassType(ConstantPoolGen cpg) |
|
LocalVariable |
LocalVariableGen.getLocalVariable(ConstantPoolGen cp) |
Get LocalVariable object.
|
LocalVariableTable |
MethodGen.getLocalVariableTable(ConstantPoolGen cp) |
|
static int |
MethodGen.getMaxStack(ConstantPoolGen cp,
InstructionList il,
CodeExceptionGen[] et) |
Computes stack usage of an instruction list by performing control flow analysis.
|
java.lang.String |
InvokeInstruction.getMethodName(ConstantPoolGen cpg) |
|
java.lang.String |
FieldOrMethod.getName(ConstantPoolGen cpg) |
|
ReferenceType |
FieldOrMethod.getReferenceType(ConstantPoolGen cpg) |
Return the reference type representing the class, interface,
or array class referenced by the instruction.
|
Type |
InvokeInstruction.getReturnType(ConstantPoolGen cpg) |
|
java.lang.String |
FieldOrMethod.getSignature(ConstantPoolGen cpg) |
|
Type |
ACONST_NULL.getType(ConstantPoolGen cp) |
|
Type |
ArithmeticInstruction.getType(ConstantPoolGen cp) |
|
Type |
ArrayInstruction.getType(ConstantPoolGen cp) |
|
Type |
BIPUSH.getType(ConstantPoolGen cp) |
|
Type |
ConversionInstruction.getType(ConstantPoolGen cp) |
|
Type |
CPInstruction.getType(ConstantPoolGen cpg) |
|
Type |
DCMPG.getType(ConstantPoolGen cp) |
|
Type |
DCMPL.getType(ConstantPoolGen cp) |
|
Type |
DCONST.getType(ConstantPoolGen cp) |
|
Type |
FCMPG.getType(ConstantPoolGen cp) |
|
Type |
FCMPL.getType(ConstantPoolGen cp) |
|
Type |
FCONST.getType(ConstantPoolGen cp) |
|
Type |
FieldInstruction.getType(ConstantPoolGen cpg) |
|
Type |
ICONST.getType(ConstantPoolGen cp) |
|
Type |
IINC.getType(ConstantPoolGen cp) |
|
Type |
InvokeInstruction.getType(ConstantPoolGen cpg) |
|
Type |
JsrInstruction.getType(ConstantPoolGen cp) |
|
Type |
LCMP.getType(ConstantPoolGen cp) |
|
Type |
LCONST.getType(ConstantPoolGen cp) |
|
Type |
LDC.getType(ConstantPoolGen cpg) |
|
Type |
LDC2_W.getType(ConstantPoolGen cpg) |
|
Type |
LoadClass.getType(ConstantPoolGen cpg) |
Returns the type associated with this instruction.
|
Type |
LocalVariableInstruction.getType(ConstantPoolGen cp) |
Returns the type associated with the instruction -
in case of ALOAD or ASTORE Type.OBJECT is returned.
|
Type |
RET.getType(ConstantPoolGen cp) |
|
Type |
ReturnInstruction.getType(ConstantPoolGen cp) |
|
Type |
SIPUSH.getType(ConstantPoolGen cp) |
|
Type |
StackInstruction.getType(ConstantPoolGen cp) |
|
Type |
TypedInstruction.getType(ConstantPoolGen cpg) |
|
java.lang.Object |
LDC.getValue(ConstantPoolGen cpg) |
|
java.lang.Number |
LDC2_W.getValue(ConstantPoolGen cpg) |
|
int |
GETFIELD.produceStack(ConstantPoolGen cpg) |
|
int |
GETSTATIC.produceStack(ConstantPoolGen cpg) |
|
int |
Instruction.produceStack(ConstantPoolGen cpg) |
This method also gives right results for instructions whose
effect on the stack depends on the constant pool entry they
reference.
|
int |
InvokeInstruction.produceStack(ConstantPoolGen cpg) |
Also works for instructions whose stack effect depends on the
constant pool entry they reference.
|
int |
StackProducer.produceStack(ConstantPoolGen cpg) |
|
static AnnotationEntryGen |
AnnotationEntryGen.read(java.io.DataInputStream dis,
ConstantPoolGen cpool,
boolean b) |
|
static ElementValueGen |
ElementValueGen.readElementValue(java.io.DataInputStream dis,
ConstantPoolGen cpGen) |
|
void |
InstructionList.replaceConstantPool(ConstantPoolGen old_cp,
ConstantPoolGen new_cp) |
Replace all references to the old constant pool with references to the new
constant pool
|
void |
ClassGen.setConstantPool(ConstantPoolGen constant_pool) |
|
void |
FieldGenOrMethodGen.setConstantPool(ConstantPoolGen cp) |
|
void |
InstructionFactory.setConstantPool(ConstantPoolGen c) |
Constructor | Description |
---|---|
AnnotationElementValueGen(int type,
AnnotationEntryGen annotation,
ConstantPoolGen cpool) |
|
AnnotationElementValueGen(AnnotationElementValue value,
ConstantPoolGen cpool,
boolean copyPoolEntries) |
|
AnnotationElementValueGen(AnnotationEntryGen a,
ConstantPoolGen cpool) |
|
AnnotationEntryGen(AnnotationEntry a,
ConstantPoolGen cpool,
boolean copyPoolEntries) |
Here we are taking a fixed annotation of type Annotation and building a
modifiable AnnotationGen object.
|
AnnotationEntryGen(ObjectType type,
java.util.List elements,
boolean vis,
ConstantPoolGen cpool) |
|
ArrayElementValueGen(int type,
ElementValue[] datums,
ConstantPoolGen cpool) |
|
ArrayElementValueGen(ArrayElementValue value,
ConstantPoolGen cpool,
boolean copyPoolEntries) |
|
ArrayElementValueGen(ConstantPoolGen cp) |
|
ClassElementValueGen(int typeIdx,
ConstantPoolGen cpool) |
|
ClassElementValueGen(ClassElementValue value,
ConstantPoolGen cpool,
boolean copyPoolEntries) |
|
ClassElementValueGen(ObjectType t,
ConstantPoolGen cpool) |
|
ClassGen(java.lang.String class_name,
java.lang.String super_class_name,
java.lang.String file_name,
int access_flags,
java.lang.String[] interfaces,
ConstantPoolGen cp) |
Convenience constructor to set up some important values initially.
|
ElementValueGen(int type,
ConstantPoolGen cpGen) |
|
ElementValuePairGen(int idx,
ElementValueGen value,
ConstantPoolGen cpool) |
|
ElementValuePairGen(java.lang.String name,
ElementValueGen value,
ConstantPoolGen cpool) |
|
ElementValuePairGen(ElementValuePair nvp,
ConstantPoolGen cpool,
boolean copyPoolEntries) |
|
EnumElementValueGen(int typeIdx,
int valueIdx,
ConstantPoolGen cpool) |
This ctor assumes the constant pool already contains the right type and
value - as indicated by typeIdx and valueIdx.
|
EnumElementValueGen(EnumElementValue value,
ConstantPoolGen cpool,
boolean copyPoolEntries) |
|
EnumElementValueGen(ObjectType t,
java.lang.String value,
ConstantPoolGen cpool) |
|
FieldGen(int access_flags,
Type type,
java.lang.String name,
ConstantPoolGen cp) |
Declare a field.
|
FieldGen(Field field,
ConstantPoolGen cp) |
Instantiate from existing field.
|
InstructionFactory(ClassGen cg,
ConstantPoolGen cp) |
|
InstructionFactory(ConstantPoolGen cp) |
Initialize just with ConstantPoolGen object
|
MethodGen(int access_flags,
Type return_type,
Type[] arg_types,
java.lang.String[] arg_names,
java.lang.String method_name,
java.lang.String class_name,
InstructionList il,
ConstantPoolGen cp) |
Declare method.
|
MethodGen(Method m,
java.lang.String class_name,
ConstantPoolGen cp) |
Instantiate from existing method.
|
PUSH(ConstantPoolGen cp,
boolean value) |
|
PUSH(ConstantPoolGen cp,
double value) |
|
PUSH(ConstantPoolGen cp,
float value) |
|
PUSH(ConstantPoolGen cp,
int value) |
This constructor also applies for values of type short, char, byte
|
PUSH(ConstantPoolGen cp,
long value) |
|
PUSH(ConstantPoolGen cp,
java.lang.Boolean value) |
|
PUSH(ConstantPoolGen cp,
java.lang.Character value) |
creates a push object from a Character value.
|
PUSH(ConstantPoolGen cp,
java.lang.Number value) |
|
PUSH(ConstantPoolGen cp,
java.lang.String value) |
|
SimpleElementValueGen(int type,
int idx,
ConstantPoolGen cpGen) |
Protected ctor used for deserialization, doesn't *put* an entry in the
constant pool, assumes the one at the supplied index is correct.
|
SimpleElementValueGen(int type,
ConstantPoolGen cpGen,
boolean value) |
|
SimpleElementValueGen(int type,
ConstantPoolGen cpGen,
byte value) |
|
SimpleElementValueGen(int type,
ConstantPoolGen cpGen,
char value) |
|
SimpleElementValueGen(int type,
ConstantPoolGen cpGen,
double value) |
|
SimpleElementValueGen(int type,
ConstantPoolGen cpGen,
float value) |
|
SimpleElementValueGen(int type,
ConstantPoolGen cpGen,
int value) |
|
SimpleElementValueGen(int type,
ConstantPoolGen cpGen,
long value) |
|
SimpleElementValueGen(int type,
ConstantPoolGen cpGen,
short value) |
|
SimpleElementValueGen(int type,
ConstantPoolGen cpGen,
java.lang.String value) |
|
SimpleElementValueGen(SimpleElementValue value,
ConstantPoolGen cpool,
boolean copyPoolEntries) |
The boolean controls whether we copy info from the 'old' constant pool to
the 'new'.
|
Modifier and Type | Method | Description |
---|---|---|
void |
ExecutionVisitor.setConstantPoolGen(ConstantPoolGen cpg) |
Sets the ConstantPoolGen needed for symbolic execution.
|
void |
InstConstraintVisitor.setConstantPoolGen(ConstantPoolGen cpg) |
Sets the ConstantPoolGen instance needed for constraint
checking prior to execution.
|