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 and Description |
---|---|
static Attribute[] |
Utility.getAnnotationAttributes(ConstantPoolGen cp,
List<AnnotationEntryGen> 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,
List<AnnotationEntryGen>[] vec)
Annotations against a class are stored in one of four attribute kinds:
- RuntimeVisibleParameterAnnotations
- RuntimeInvisibleParameterAnnotations
|
Modifier and Type | Field and Description |
---|---|
protected ConstantPoolGen |
FieldGenOrMethodGen.cp |
protected ConstantPoolGen |
InstructionFactory.cp |
protected ConstantPoolGen |
ElementValueGen.cpGen |
Modifier and Type | Method and Description |
---|---|
protected ConstantPoolGen |
ElementValueGen.getConstantPool() |
ConstantPoolGen |
FieldGenOrMethodGen.getConstantPool() |
ConstantPoolGen |
ClassGen.getConstantPool() |
ConstantPoolGen |
InstructionFactory.getConstantPool() |
Modifier and Type | Method and 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 |
INVOKEINTERFACE.consumeStack(ConstantPoolGen cpg) |
int |
StackConsumer.consumeStack(ConstantPoolGen cpg) |
int |
InvokeInstruction.consumeStack(ConstantPoolGen cpg)
Also works for instructions whose stack effect depends on the
constant pool entry they reference.
|
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 |
INVOKEDYNAMIC.consumeStack(ConstantPoolGen cpg)
Also works for instructions whose stack effect depends on the
constant pool entry they reference.
|
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.
|
FieldGen |
FieldGen.copy(ConstantPoolGen cp) |
static ElementValueGen |
ElementValueGen.copy(ElementValue value,
ConstantPoolGen cpool,
boolean copyPoolEntries)
Creates an (modifiable) ElementValueGen copy of an (immutable)
ElementValue - constant pool is assumed correct.
|
MethodGen |
MethodGen.copy(String class_name,
ConstantPoolGen cp) |
Type[] |
InvokeInstruction.getArgumentTypes(ConstantPoolGen cpg) |
Type[] |
INVOKEDYNAMIC.getArgumentTypes(ConstantPoolGen cpg) |
String |
FieldOrMethod.getClassName(ConstantPoolGen cpg)
Deprecated.
If the instruction references an array class,
this method will return "java.lang.Object".
For code generated by Java 1.5, this answer is
sometimes wrong (e.g., if the "clone()" method is
called on an array). A better idea is to use
the getReferenceType() method, which correctly distinguishes
between class types and array types.
|
ObjectType |
FieldOrMethod.getClassType(ConstantPoolGen cpg)
Deprecated.
If the instruction references an array class,
the ObjectType returned will be invalid. Use
getReferenceType() instead.
|
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. |
String |
FieldInstruction.getFieldName(ConstantPoolGen cpg) |
protected int |
FieldInstruction.getFieldSize(ConstantPoolGen cpg) |
Type |
FieldInstruction.getFieldType(ConstantPoolGen cpg) |
ConstantInvokeDynamic |
INVOKEDYNAMIC.getInvokeDynamic(ConstantPoolGen cpg)
Get the ConstantInvokeDynamic associated with this instruction
|
LineNumberTable |
MethodGen.getLineNumberTable(ConstantPoolGen cp) |
ObjectType |
ANEWARRAY.getLoadClassType(ConstantPoolGen cpg) |
ObjectType |
INSTANCEOF.getLoadClassType(ConstantPoolGen cpg) |
ObjectType |
CHECKCAST.getLoadClassType(ConstantPoolGen cpg) |
ObjectType |
NEW.getLoadClassType(ConstantPoolGen cpg) |
ObjectType |
MULTIANEWARRAY.getLoadClassType(ConstantPoolGen cpg) |
ObjectType |
LoadClass.getLoadClassType(ConstantPoolGen cpg)
Returns the ObjectType of the referenced class or interface
that may be loaded and resolved.
|
ObjectType |
FieldOrMethod.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.
|
String |
InvokeInstruction.getMethodName(ConstantPoolGen cpg) |
String |
INVOKEDYNAMIC.getMethodName(ConstantPoolGen cpg) |
String |
NameSignatureInstruction.getName(ConstantPoolGen cpg) |
ConstantNameAndType |
NameSignatureInstruction.getNameAndType(ConstantPoolGen cpg) |
ConstantNameAndType |
INVOKEDYNAMIC.getNameAndType(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) |
Type |
INVOKEDYNAMIC.getReturnType(ConstantPoolGen cpg) |
String |
NameSignatureInstruction.getSignature(ConstantPoolGen cpg) |
Type |
FCONST.getType(ConstantPoolGen cp) |
Type |
ArrayInstruction.getType(ConstantPoolGen cp) |
Type |
ReturnInstruction.getType(ConstantPoolGen cp) |
Type |
StackInstruction.getType(ConstantPoolGen cp) |
Type |
FieldInstruction.getType(ConstantPoolGen cpg) |
Type |
JsrInstruction.getType(ConstantPoolGen cp) |
Type |
LCONST.getType(ConstantPoolGen cp) |
Type |
LocalVariableInstruction.getType(ConstantPoolGen cp)
Returns the type associated with the instruction -
in case of ALOAD or ASTORE Type.OBJECT is returned.
|
Type |
ArithmeticInstruction.getType(ConstantPoolGen cp) |
Type |
FCMPL.getType(ConstantPoolGen cp) |
Type |
InvokeInstruction.getType(ConstantPoolGen cpg) |
Type |
DCMPG.getType(ConstantPoolGen cp) |
Type |
FCMPG.getType(ConstantPoolGen cp) |
Type |
ACONST_NULL.getType(ConstantPoolGen cp) |
Type |
LoadClass.getType(ConstantPoolGen cpg)
Returns the type associated with this instruction.
|
Type |
TypedInstruction.getType(ConstantPoolGen cpg) |
Type |
DCMPL.getType(ConstantPoolGen cp) |
Type |
IINC.getType(ConstantPoolGen cp) |
Type |
INVOKEDYNAMIC.getType(ConstantPoolGen cpg) |
Type |
LDC.getType(ConstantPoolGen cpg) |
Type |
LCMP.getType(ConstantPoolGen cp) |
Type |
SIPUSH.getType(ConstantPoolGen cp) |
Type |
RET.getType(ConstantPoolGen cp) |
Type |
DCONST.getType(ConstantPoolGen cp) |
Type |
BIPUSH.getType(ConstantPoolGen cp) |
Type |
CPInstruction.getType(ConstantPoolGen cpg) |
Type |
ConversionInstruction.getType(ConstantPoolGen cp) |
Type |
LDC2_W.getType(ConstantPoolGen cpg) |
Type |
ICONST.getType(ConstantPoolGen cp) |
Object |
LDC.getValue(ConstantPoolGen cpg) |
Number |
LDC2_W.getValue(ConstantPoolGen cpg) |
int |
GETSTATIC.produceStack(ConstantPoolGen cpg) |
int |
InvokeInstruction.produceStack(ConstantPoolGen cpg)
Also works for instructions whose stack effect depends on the
constant pool entry they reference.
|
int |
GETFIELD.produceStack(ConstantPoolGen cpg) |
int |
INVOKEDYNAMIC.produceStack(ConstantPoolGen cpg)
Also works for instructions whose stack effect depends on the
constant pool entry they reference.
|
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 |
StackProducer.produceStack(ConstantPoolGen cpg) |
static AnnotationEntryGen |
AnnotationEntryGen.read(DataInputStream dis,
ConstantPoolGen cpool,
boolean b) |
static ElementValueGen |
ElementValueGen.readElementValue(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 |
FieldGenOrMethodGen.setConstantPool(ConstantPoolGen cp) |
void |
ClassGen.setConstantPool(ConstantPoolGen constant_pool) |
void |
InstructionFactory.setConstantPool(ConstantPoolGen c) |
Constructor and Description |
---|
AnnotationElementValueGen(AnnotationElementValue value,
ConstantPoolGen cpool,
boolean copyPoolEntries) |
AnnotationElementValueGen(AnnotationEntryGen a,
ConstantPoolGen cpool) |
AnnotationElementValueGen(int type,
AnnotationEntryGen annotation,
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,
List<ElementValuePairGen> elements,
boolean vis,
ConstantPoolGen cpool) |
ArrayElementValueGen(ArrayElementValue value,
ConstantPoolGen cpool,
boolean copyPoolEntries) |
ArrayElementValueGen(ConstantPoolGen cp) |
ArrayElementValueGen(int type,
ElementValue[] datums,
ConstantPoolGen cpool) |
ClassElementValueGen(ClassElementValue value,
ConstantPoolGen cpool,
boolean copyPoolEntries) |
ClassElementValueGen(int typeIdx,
ConstantPoolGen cpool) |
ClassElementValueGen(ObjectType t,
ConstantPoolGen cpool) |
ClassGen(String class_name,
String super_class_name,
String file_name,
int access_flags,
String[] interfaces,
ConstantPoolGen cp)
Convenience constructor to set up some important values initially.
|
ElementValueGen(int type,
ConstantPoolGen cpGen) |
ElementValuePairGen(ElementValuePair nvp,
ConstantPoolGen cpool,
boolean copyPoolEntries) |
ElementValuePairGen(int idx,
ElementValueGen value,
ConstantPoolGen cpool) |
ElementValuePairGen(String name,
ElementValueGen value,
ConstantPoolGen cpool) |
EnumElementValueGen(EnumElementValue value,
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(ObjectType t,
String value,
ConstantPoolGen cpool) |
FieldGen(Field field,
ConstantPoolGen cp)
Instantiate from existing field.
|
FieldGen(int access_flags,
Type type,
String name,
ConstantPoolGen cp)
Declare a field.
|
InstructionFactory(ClassGen cg,
ConstantPoolGen cp) |
InstructionFactory(ConstantPoolGen cp)
Initialize just with ConstantPoolGen object
|
MethodGen(int access_flags,
Type return_type,
Type[] arg_types,
String[] arg_names,
String method_name,
String class_name,
InstructionList il,
ConstantPoolGen cp)
Declare method.
|
MethodGen(Method m,
String class_name,
ConstantPoolGen cp)
Instantiate from existing method.
|
PUSH(ConstantPoolGen cp,
boolean value) |
PUSH(ConstantPoolGen cp,
Boolean value) |
PUSH(ConstantPoolGen cp,
Character value)
creates a push object from a Character 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,
Number value) |
PUSH(ConstantPoolGen cp,
ObjectType value) |
PUSH(ConstantPoolGen cp,
String value) |
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,
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(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 and 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.
|
Copyright © 2017. All rights reserved.