blob: e5838a9ac4caa561b7ebed10905d274e6f0a5d10 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
|
Apache Commons BCEL 6.0 RELEASE NOTES
The Apache Commons BCEL team is pleased to announce the commons-bcel6-6.0 release!
The Byte Code Engineering Library (BCEL) is intended to give users a convenient
way to analyze, create, and manipulate compiled .class files. Classes are
represented by objects containing all the symbolic information of the given
class: methods, fields and byte code instructions.
BCEL 6.0 is a major release supporting the new features introduced in Java 6, 7
and 8. It requires Java 5 or higher to run.
Compatibility with 5.2
----------------------
Binary compatible - No
Source compatible - Yes, sort of;
- Maven coordinates update:
org.apache.bcel:bcel:5.2 -> org.apache.commons:commons-bcel6:6.0
- Rename package imports:
org.apache.bcel -> org.apache.commons.bcel6
- The org.apache.commons.bcel6.classfile.Visitor interface has been enhanced with
additional methods. If you implemented it directly instead of extending
the EmptyVisitor class you'll have to implement the new methods.
Semantic compatible - Yes, except:
- BCEL handles new attributes such as code annotations that could only
be processed by implementing a custom AttributeReader in the previous
versions. Code relying on this behavior will have to be adjusted since
the AttributeReader will no longer be called in these cases.
-------------------------------------------------------------------------------
Changes in this version include:
Fixed Bugs:
o Bug fixes and improvements to InvokeDynamic and BootStrapMethods implementation.
Issue: BCEL-209. Thanks to Mark Roberts.
o Verification error when an invoke references a method defined in superclass.
Issue: BCEL-187. Thanks to Jérôme Leroux.
o Remove ObjectType cache. Issue: BCEL-218. Thanks to chas.
o The verifier now checks if methods with a void return type attempt to return an
object. Issue: BCEL-184. Thanks to Jérôme Leroux.
o The verifier now checks if methods with a void return type attempt to return an
object. Issue: BCEL-184. Thanks to Jérôme Leroux.
o MethodGen.removeLocalVariable now properly unreference the removed variable
from the targetters of the instruction handlers delimiting the scope of
the variable. Issue: BCEL-207. Thanks to Mark Roberts.
o Utility.signatureToString() no longer throws a ClassFormatException on TypeVariables
found in generic signatures. Issue: BCEL-197. Thanks to Mark Roberts.
o Removed the 'index' variable from the LocalVariableGen's hash code.
Issue: BCEL-194. Thanks to Mark Roberts.
o The verifier should not check for run time compatibility of objects assigned to
arrays. Issue: BCEL-193. Thanks to Jérôme Leroux.
o Correct verification of the return value of a method. Issue: BCEL-188. Thanks
to Jérôme Leroux.
o Performance degradation with the UTF8 cache. getInstance no longer uses cache
Issue: BCEL-186.
o org.apache.bcel.util.ClassLoaderRepository.loadClass(String) leaks input streams.
Issue: BCEL-181.
o Mistake in "Peephole optimizer" example at http://commons.apache.org/bcel/manual.html
Issue: BCEL-28.
o BCEL cannot be used as java.system.class.loader Issue: BCEL-74.
o XSLT transforms broken in Turkish Locale. Issue: BCEL-77.
o java.lang.ClassFormatError: LVTT entry for 'local' in class file
org/shiftone/jrat/test/dummy/CrashTestDummy does not match any LVT entry
Issue: BCEL-79.
o ClassParser.parse() throws NullPointerException if class does not exist and
ClassParser(String) constructor is used Issue: BCEL-81.
o ArrayOutOfBoundsException in InstructionFinder Issue: BCEL-85.
o Website: Incorrect URL for source; version 5.2 is not in the bug page
Issue: BCEL-87.
o bcelified method doesn't pass verification Issue: BCEL-88.
o return type not verified by JustIce Issue: BCEL-89.
o @since tag incorrect for Annotation classes in BCEL trunk Issue: BCEL-94.
o InstructionFactory missing % operator for Float, Double Issue: BCEL-95.
o Fields in Annotations and AnnotationEntry are inaccessible to subclasses
Issue: BCEL-96.
o Add support for getResources to ClassPath Issue: BCEL-97.
o Two source files in repository are empty Issue: BCEL-98.
o Maven POM file calls in apache regex but code does not use it Issue: BCEL-99.
o ClassParser throws unintelligible Exception Issue: BCEL-100.
o verifier raises an AssertionViolatedException when done against Java 5 files
with generics/annotations Issue: BCEL-101.
o Verifier fails in pass 2 with "Number of LocalVariableTable attributes of
Code attribute" on static methods. Issue: BCEL-102.
o ParameterAnnotationEntries are read not dumped Issue: BCEL-107.
o RuntimeVisible Annotations duplicated Issue: BCEL-108.
o ARRAYLENGTH incorrectly not StackConsumer Issue: BCEL-112.
o Error in method search() defined in org.apache.bcel.util.InstructionFinder
Issue: BCEL-114.
o Deleting all instructions of a list shows wrong behaviour Issue: BCEL-115.
o Make BCEL JAR OSGi compatible Issue: BCEL-120.
o ArrayIndexOutOfBoundsException thrown from TABLESWITCH.initFromFile
Issue: BCEL-122.
o tableswitch/lookupswitch invalid alignment of 4-byte operands Issue: BCEL-124.
o Incorrect size calculation in InstructionFinder Issue: BCEL-125.
o Class files containing "ParameterAnnotations" are dumped incorrectly
Issue: BCEL-130.
o Class files containing "StackMapTable" attributes (on method code) are dumped
incorrectly Issue: BCEL-131.
o org.apache.bcel.classfile.ClassParser: NullPointerException caused by fileopen
failed Issue: BCEL-132.
o org.apache.bcel.classfile.ClassParser: NullPointerException caused by invalid
filename Issue: BCEL-133.
o ExecutionVisitor doesn't support Class constant type for LDC and LDC_W
Issue: BCEL-134.
o BCELifier issue: BCELFactory fails to handle float and long constants.
Issue: BCEL-135.
o "Invalid method signature: TT;" when using MethodGen for a method having a
generic parameter Issue: BCEL-137.
o FieldInstruction.getFieldSize() doesn't decode Type.getTypeSize() output.
Issue: BCEL-138.
o org.apache.bcel.generic.Instruction.equals(Object) does not follow
Object.equals(Object) rules Issue: BCEL-140.
o Select instructions should implement StackConsumer instead of StackProducer
Issue: BCEL-141.
o Fix CPL License issues with EnclosingMethod.java and
LocalVariableTypeTable.java Issue: BCEL-143.
o Type.getReturnTypeSize() doesn't decode Type.getTypeSize() output.
Issue: BCEL-145.
o SyntheticRepository.loadClass() fails to close the inputStream.
Issue: BCEL-146.
o BCELifier produces incorrect code for methods containing loads of class
literals from constant pool Issue: BCEL-148.
o Code attribute size not updated Issue: BCEL-151.
o Incorrect link for Jasmin assembler language Issue: BCEL-152.
o Examples not present in source or binary downloads Issue: BCEL-153.
o ClassParser.parse() generates NPE if it cannot open the file Issue: BCEL-154.
o InstConstraintVisitor does not handle class constants Issue: BCEL-155.
o Pass3bVerifier crashes on empty methods Issue: BCEL-156.
o LocalVariableGen.getLocalVariable() computes incorrect length Issue: BCEL-159.
o Method does not have a method to access parameter annotations Issue: BCEL-164.
o ClassPath.getResource does not correctly perform URL escaping Issue: BCEL-167.
o ClassParser fails to parse JDK classes in Java 8: ClassFormatException: Invalid
byte tag in constant pool Issue: BCEL-173.
o Verification of interfaces with default methods fails with Java 8
Issue: BCEL-174.
o When reading the number of parameters in a MethodParameters structure
only read a single byte as per the JVM specification. Issue: BCEL-177.
Changes:
o Major release of BCEL requires updating package name and maven coordinates.
Issue: BCEL-222.
o Make org.apache.bcel.classfile.ConstantPool.ConstantPool(DataInput) public.
Issue: BCEL-219. Thanks to Maxim Degtyarev.
o Add parent type processing for ClassPath class. Issue: BCEL-76.
o Add support for getResource and getResourceAsStream to ClassPath Issue: BCEL-83.
o Properly parse StackMapTable attributes in Java 6 classfiles Issue: BCEL-92.
o Javadoc overhaul Issue: BCEL-104.
o BCEL is unnecessarily slow Issue: BCEL-119.
o Add support for INVOKEDYNAMIC and MethodHandles Issue: BCEL-157.
o Why using unstable sort at MethodGen.getLocalVariables() ? Issue: BCEL-160.
o Incorporate patch file from Findbugs Issue: BCEL-163.
o Implement the MethodParameters attribute Issue: BCEL-175.
Have fun!
-Apache Commons BCEL team
Feedback
--------
Open source works best when you give feedback:
http://commons.apache.org/bcel
Please direct all bug reports to JIRA:
https://issues.apache.org/jira/browse/BCEL
Or subscribe to the commons-user mailing list
The Apache Commons Team
|