-
-
Notifications
You must be signed in to change notification settings - Fork 717
/
Copy pathCHANGES
349 lines (271 loc) · 14 KB
/
CHANGES
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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
Improvements in version 2.1 (Wed, 17 Dec 2003)
1. bug fixes
2. switched from make to ant
3. many improvements to Shimple and Eclipse plugin
4. first release of Java-to-Jimple compiler
5. initial support for context-sensitive call graph and points-to analysis
Improvements in version 2.0.1 (Fri, 18 Jun 2003)
1. bug fixes
2. minor improvements and cleanup of Shimple, including:
a) Significantly improved constant propagator analysis.
3. ant build file
4. new framework for adding Soot system tests
Improvements in version 2.0 (Fri, 6 Jun 2003)
1. a true whole-program mode
2. rewrite of the call graph code to provide more information (particularly
about implicit calls) with a cleaner interface
3. first release of Eclipse plugin
4. first release of Shimple (SSA-Jimple)
5. refactoring of tag aggregators to make it easier to introduce new
annotations for use by JITs
6. new, better organized option parsing code, accessible to other code
(so you can set an option with a method call, rather than having to
pass in a command line string)
7. elimination of most global variables; the remaining ones have been
isolated so that Soot is restartable, and could be easily modified to
allow concurrent Soot sessions on different threads.
8. bug fixes
Improvements in version 1.2.5 (Fri, 14 Feb 2003)
1. Spark improvements:
a) now supports truly on-the-fly call graph construction, resulting
in much smaller call graphs.
b) alias edge algorithm tweaked to be faster.
c) bug fixes.
2. General bug fixes.
3. Some performance improvements, plugging of memory leaks.
4. Reinstate support for JDK versions 1.2 through 1.4.
Improvements in version 1.2.4 (Fri, 22 Nov 2002)
1. main change is the inclusion of development version of Spark: Soot Pointer
Analysis Research Kit. Available documentation for Spark includes the
Spark poster (http://www.sable.mcgill.ca/publications/#poster-2002-1)
and the Spark options
(http://www.sable.mcgill.ca/soot/tutorial/phase-options/spark.ps).
More detailed documentation in the form of a master's thesis is being
written. (olhotak)
2. Soot should now correctly handle classes compiled with 1.4.x versions
of javac (olhotak)
3. new FastHierarchy class designed to eventually replace inefficient and
confusing Hierarchy class (olhotak)
4. fix for missing control-flow graph edges from predecessors of statements
in nested try blocks to some exception handlers (jjorge1)
5. make virtual call resolution respect access modifiers (olhotak)
6. other bug fixes
Improvements in version 1.2.3 (Wed, 08 May 2002)
1. fix to SourceLocator for the case where there are no actual
paths in the soot classpath. (plam)
2. fix to HashMutableDirectedGraph to remove wayward extra
preds and succs edges to a removed node. (fabien)
3. fix for Windows classpaths which contain less than two letters.
Formerly, this crashed in charAt(1). (plam, reported by Mary Payne)
4. add an option '-A LineNumber' to keep line number attributes in
source class files. (feng)
5. make SootClass.containsBafBody() public (requested by David Airapetyan);
avoid creating duplicate names in CommonSubexpressionEliminator
(requested by Florian Mateoc). Both changes by plam.
6. added changes by Michael Pan (pan@math.tau.ac.il) which make Soot
more parsimonious with respect to memory usage:
it may use up to 20% less maximum heap space.
Changes were: - sharing of coffi CONSTANT_Utf8_info objects
- SootMethod exceptions list created on demand
- get[Sub]Signature() storage hack useful for Sun JDK
7. minor changes in HashChain (remove useless null checks, states increments
and modified insertBefore(List) ) (fabien)
8. fix to AbstractHost to avoid creation of thousands of empty lists (fabien)
9. added patch by Stephen Andrew Neuendorffer <neuendor@eecs.berkeley.edu>
to make DeadAssignmentEliminator more aggressive: we no longer declare
InstanceFieldRefs which read from 'this' in a non-static method to be
'isEssential'. (plam)
10. Added some Timer.end() calls to JimpleBody.java
and CoffiMethodSource.java, so that the '--time' option no
longer causes runtime exceptions. While this lets you
specify '--time' without crashing soot, the accuracy of the
reported times remains questionable. (jjorge1)
11. Improved Psuedotopological ordering, replaced deprecated code
(Vectors and Stacks), fixed line numbering,
fixed a minor UnitGraph bug (berndl)
12. Kludged together a bug fix for Alex Warshavsky (walex@il.ibm.com) where
use-original-names sometimes produced Jimple Locals with #'s
in their names. (plam)
13. Fixed bug reported by Stephen Andrew Neuendorffer where CopyPropagator
doesn't quite fail in the expected way when there's a variable used
without definition (plam)
14. Added basic XML support in the form of an XMLStmtPrinter. Using
the --xml command option will generate an XML version of the
class based on the Jimple statements and extended with static
program data and transformation/analysis results. (deng)
15. Added entryInitialFlow method in FlowAnalysis, which allows a
new analysis just return flow object for entry points.
The customizeFlowGraph is still called. Currently it is
compatible with old analyses, but new analysis should override
entryInitialFlow method rather than customizeFlowGraph.
Forward and backward flow analyses are changed respectively.
(fqian)
16. Fixed local variable name problem in coffi.LocalVariable....
reported by Nathan Kitchen. See fix 12 also. (fqian)
17. Small improvement in ArraySparseSet and BackwardFlowAnalysis pointed
out by Florian Loitsch. (fqian)
18. Added several utility classes for drawing generate graphs.
UnitGraph, BlockGraph, and Hierarchy can produce "dot" file
for generating postscript files.
See soot/util/DotGraph*.java
(More function will be added on.) (fqian)
19. Added one flag in soot.Main.java to indicate the compilation for
J2ME library which does not have Cloneable and Serializable interfaces.
This affects the typing system which handcodes both interfaces.
Has not been tested on J2ME. But when the flag is set to false,
original function is not affected.
Patch provided by Stephen Cheng. (fqian)
20. Fixed some obvious bugs in CFGViewer, added simple options. (fqian)
21. Added a new implementation of PRE by Florian Loitsch, merging
was done by Ondrej. The old implementation of PRE was obsoleted.
The new implementation to be tested. (fqian)
Improvements in version 1.2.2 (Thu Mar 29 11:45:13 EST 2001)
1. added \t case for soot.util.StringTools.getQuotedStringOf.
(reported by Thomas VanDrunen)
2. CFG.java is improved to handle nested JSR/RETs
3. improved some exception message reported by Olivier Zendra.
4. The Jasmin package is also updated to 1.06-s10, the bug in grammar
for attributes is fixed.
5. replaced 'getNodes().contains()' by 'containsNode()' in
"jimple/toolkits/invoke/MethodCallGraph.java", which speeds up
the call graph construction significantly (by John Jorgensen.)
Improvements in version 1.2.1 (Fri Jan 12 15:22:59 EST 2001)
1. permissions changes and fix to Baf/JasminClass for BooleanType.
2. removal of a UnitGraph hack that shouldn't have been there.
3. internal changes to cmdline parsing, watch for bigger changes coming
4. fix by patrice to work around stupid jar bug
5. minor changes to jar bug workaround
6. fix for grimp precedence
7. improved error messages in the event of missing .dat files.
8. new build system (via the SootCompiler class).
Improvements in version 1.2.0 (Thu Sep 28 21:41:16 EDT 2000)
1. An annotation framework is included in this release.
2. A clean implementation of VTA is finally included in Soot.
3. New implementation of typing system included
- contains nice integer typing system.
4. HashChain has a fast 'contains' method.
(this was announced on the soot mailing list)
5. A branched flow analysis framework is present.
- This allows different results to be propagated on
different edges of a branch.
6. Implemented an Array Bounds Check and a Null Pointer Check algorithm.
The new option '-A' annotates class files with analysis results.
- See the new annotation tutorials.
7. Other minor bugs were zapped.
(release by Feng Qian)
Improvements in version 1.0.1 (not released)
1. Eliminated useless Directed interface.
2. Fixed bug in HashChain where null could wheedle its way into a HashChain. Bad stuff!
3. Added attribute support and null pointer checks / array bounds checks.
4. Added common subexpression elimination.
Improvements in Release 1 (version 1.0.0)
Some of these changes occurred earlier but are only mentioned now.
1. Changed the version numbering scheme to follow the Linux
version numbering scheme.
2. Added warning for unconsumed phase options.
3. Fixed bug with original name recovery.
4. Added documentation.
5. Fixed another aggregation bug where multiple field refs between
def, use were not correctly handled.
6. Added static class synchronizer.
7. Changed format of Jimple source again, now removing the dots
for keywords.
8. Fixed issue with absolute paths in dos/windows
Improvements in 021400
1. Fixed the SootResolver so that it displays the name of
the missing classfile before quitting.
2. Merged in partial code for Partial Redundancy Elimination
(not working yet).
3. Added more documentation comments. (Thanks patrice!)
4. Added EquivTo interface, made all Jimple Values implement
EquivTo, and provided EquivalentValue wrapper objects. Using an
EquivalentValue allows Collections to see structurally equal
Values as satisfying .equals(). This is not universally useful;
for instance, the Units chain should not use EquivalentValues!
5. Added jikes.def and javac.def files. Invoking "jams foo"
will copy the .dat files from the src/ directories to the classes/
directories.
6. Patrice added some support for a framework allowing Baf peephole
optimizations to be added in a uniform manner.
7. Added soot.PackAdjuster and soot.jimple.StmtPrinter classes.
These classes can be overridden by placing custom classes with the
same names earlier in the CLASSPATH. This permits external classes
to be called by Soot at strategic moments in Soot's execution.
Improvements in 1.beta.6
1. A Jimple parser has been added to the Soot framework. Soot can
now read both .class files and .jimple files (produced by the
"--jimple" option). Parsing .jimple files is faster than
reading .class files, and these files can be modified easily in a text
editor.
2. Different phases of Sootification can now be passed command-line
options. For instance, the static inliner (si) in the
whole-jimple optimization pack (wjop) can told that it is to
expand code by no more than a factor of 5, by giving the following
command-line option: -p wjop.si expansion-factor:5.
3. Some whole-program (excluding library) optimizations are
included, namely a static method binder and a static inliner. The
inliner is enabled by default when the -W option is given.
It can be disabled with the option -p wjop.si disabled:true -p
wjop.smb disabled:false.
Improvements in 1.beta.5
1. Baf, a streamlined form of bytecode has been added to Soot. This is
useful for performing low level bytecode optimizations. We can produce code
which is as good as javac now with the option "--final-rep baf".
Unfortunately this option creates bytecode which is different than what the Java
Virtual Machine is used to and so causes the JVM to crash. For this reason, the
option is not enabled by default.
2. Major restructuring of the API has taken place.
3. The entire SpecJVM98 suite can be processed by Soot correctly, as well as
numerous other Java programs.
4. Process times are reasonable: a program can be usually put through Soot
within 2.5 times the execution time of javac on the original program.
Improvements in 1.beta.4
Date: Thu, 18 Mar 1999 01:05:44 -0500
From: Raja Vallee-Rai <rvalleerai@sable.mcgill.ca>
To: soot-list@sable.mcgill.ca
Subject: Soot-1.beta.4 released.
Hello soot-list subscribers,
A new version of Soot has been released! The notable improvements are:
1. Grimp, an aggregated Jimple has been added to Soot. This is a
medium-high level intermediate representation which
allows you to manipulate statements as trees instead of 3-address code.
This is particularly useful for code generation and
decompilation.
2. The code produced by Soot from Jimple code (by first converting it to
Grimp code) has been substantially improved. We
are now 2 to 3 percent away from the original classfile in performance.
(this is without any optimizations performed)
3. A subroutine duplicator has been installed as a temporary solution
for the jsr bytecode. This means that there is no
concept of the subroutines in the framework and that the classfiles
produced by Soot are 'jsrless'.
4. The speed of the transformations has been improved.
5. Numerous bug fixes have been made.
See http://www.sable.mcgill.ca/soot for more details.
Best regards,
Raja Vallee-Rai
Sable Research Group
Improvements in 1.beta.3
Date: Wed, 27 Jan 1999 21:11:49 -0500
From: Raja Vallee-Rai <rvalleerai@sable.mcgill.ca>
To: soot-list@sable.mcgill.ca
Subject: Soot version 1.beta.3 available.
Hello,
A new version of Soot has just been released. This version fixes
numerous bugs and provides improved performance. You can acquire the
new version at
http://www.sable.mcgill.ca/software
See the release notes at
http://www.sable.mcgill.ca/soot/releaseNotes.html for more details.
Make sure you download the latest version of SableUtil to benefit from
the bug fixes and improvements in that package as well.
--------------------------------
For our next version we would like some feedback from our users. Please
vote on the feature you would like to see implemented next:
A. Fix the handling of the JSR bytecode.
B. Improve the efficiency of the bytecode being generated.
C. Improve the speed of the bytecode -> Jimple transformation.
Only one vote per person, please. :)
Best regards,
Raja Vallee-Rai
Sable Research Group