|
1 | 1 | <html>
|
2 | 2 | <head><title>Soot: a Java Optimization Framework</title></head>
|
3 | 3 |
|
4 |
| -<body background="background5.gif" TEXT="#000000" BGCOLOR="#F3F3F3" LINK="#0000CC"> |
| 4 | +<body background="background6.gif" TEXT="#000000" BGCOLOR="#F3F3F3" LINK="#0000CC"> |
5 | 5 |
|
6 | 6 | <table border=0 cellpadding=0 cellspacing=3>
|
7 | 7 |
|
8 | 8 | <TR>
|
9 | 9 |
|
10 | 10 | <!--LeftHandTable-->
|
11 | 11 |
|
12 |
| -<TD ALIGN=LEFT VALIGN=TOP ROWSPACE="1" WIDTH=135> |
| 12 | +<TD ALIGN=LEFT VALIGN=TOP ROWSPACE="1" WIDTH=160> |
13 | 13 |
|
14 | 14 | <p><font face="helvetica,arial" size="+1"><b>Soot Home</b></font>
|
15 | 15 |
|
|
34 | 34 | <center>
|
35 | 35 | <a name="top"><b><font face="helvetica,arial" size="+2">Soot: a Java Optimization Framework</font></b></center></a> <br>
|
36 | 36 | <center>
|
37 |
| -<a name="top"><b><font face="helvetica,arial" size="+1">Latest version: 1.0.0</font></b></center></a> <br><br> |
| 37 | +<a name="top"><b><font face="helvetica,arial" size="+1">Latest version: 1.2.0</font></b></center></a> <br><br> |
38 | 38 |
|
39 | 39 | <!--Introduction-->
|
40 | 40 | <a name="introduction"> <table width=100%> <tr>
|
|
81 | 81 | <p>The Soot Framework is an evolving research project. Our goal is to produce a
|
82 | 82 | highly robust framework for optimizing Java which is easy to use.
|
83 | 83 |
|
| 84 | +<!-- Release 1.2.0 --> |
| 85 | +<p>The 1.2.0 release is our second official release. The major new feature |
| 86 | +in 1.2.0 is support for classfile annotation (courtesy of Feng Qian and |
| 87 | +Patrice Pominville). There is also an improved typing system, due to |
| 88 | +Etienne Gagnon. Variable-Type Analysis was cleanly reimplemented and |
| 89 | +we have included it in our release of Soot for the first time. |
| 90 | +We also fixed a few bugs reported against version 1.0.0. |
| 91 | + |
| 92 | +<p>In the future, we will develop a mechanism to support |
| 93 | +whole-program analysis based on a program's call graph. |
| 94 | + |
| 95 | +<!-- Release 1.0.0 |
84 | 96 | <p>This release is our first official release. We believe it to be quite solid,
|
85 | 97 | and have tested it on a set of 266 benchmarks.
|
86 | 98 |
|
87 | 99 | <p>In the future, we hope to improve support for whole-program analysis.
|
88 | 100 | We will also develop more transformations for use with Soot.
|
| 101 | +--> |
89 | 102 |
|
90 | 103 | </blockquote>
|
91 | 104 |
|
92 | 105 | <br>
|
93 | 106 |
|
94 | 107 | <!--ProjectStatus-->
|
| 108 | + |
| 109 | +<a name="projectStatus"> <table width=100%> <tr> |
| 110 | +<td width=97% align=left><b><font face="helvetica,arial" size="+1">Major improvements in version 1.2.0</b></font></td></a> |
| 111 | +<td width=3% align=left><font size="-2"><a href="#top">top</a></td> |
| 112 | +</table> |
| 113 | + |
| 114 | +<blockquote> |
| 115 | +This is a subset of changes in version 1.2.0; a more complete listing is in the CHANGES file. |
| 116 | + |
| 117 | +<p>1. An annotation framework was added to the project. |
| 118 | + |
| 119 | +<p>2. A new implementation of the typing system is included. |
| 120 | + |
| 121 | +<p>2. A clean implementation of VTA is finally included in Soot. |
| 122 | + |
| 123 | +</blockquote> |
| 124 | + |
| 125 | +<!-- Status of release 1.0.0 |
| 126 | +
|
95 | 127 | <a name="projectStatus"> <table width=100%> <tr>
|
96 | 128 | <td width=97% align=left><b><font face="helvetica,arial" size="+1">Improvements in version 1.0.0</b></font></td></a>
|
97 | 129 | <td width=3% align=left><font size="-2"><a href="#top">top</a></td>
|
|
102 | 134 |
|
103 | 135 | <p>1. Fixed bug with original name recovery.
|
104 | 136 |
|
105 |
| -<p>2. Added documentation (see <a href="http://www.sable.mcgill.ca/soot/tutorial">some tutorials</a>.) |
| 137 | +<p>2. Added documentation (see <a href="tutorial">some tutorials</a>.) |
106 | 138 |
|
107 | 139 | <p>3. Added static class synchronizer.
|
108 | 140 |
|
109 | 141 | </blockquote>
|
110 | 142 |
|
| 143 | +--> |
| 144 | + |
111 | 145 | <br>
|
112 | 146 |
|
113 | 147 |
|
114 | 148 |
|
115 | 149 | <!--Download-->
|
| 150 | + |
116 | 151 | <a name="download"> <table width=100%> <tr>
|
117 | 152 | <td width=97% align=left><b><font face="helvetica,arial" size="+1">Download and Installation</b></font></td></a>
|
118 | 153 | <td width=3% align=left><font size="-2"><a href="#top">top</a></td>
|
|
124 | 159 |
|
125 | 160 | <p>
|
126 | 161 | To install it you must unjar(untar) it, and add the classes directories
|
127 |
| -<tt>soot-1.0.0/soot/classes</tt> and |
128 |
| -<tt>soot-1.0.0/jasmin/classes</tt> to your CLASSPATH. |
| 162 | +<tt>soot-1.2.0/soot/classes</tt> and |
| 163 | +<tt>soot-1.2.0/jasmin/classes</tt> to your CLASSPATH. |
129 | 164 |
|
130 | 165 | To test your installation of Soot, try:
|
131 | 166 |
|
|
135 | 170 | </tt>
|
136 | 171 |
|
137 | 172 | <p>for some options on processing classfiles. They are documented in more detail in the
|
138 |
| -<a href="http://www.sable.mcgill.ca/soot/tutorial/usage">usage document</a>. |
| 173 | +<a href="tutorial/usage">usage document</a>.<p> |
| 174 | + |
| 175 | +Note that Soot requires at least JDK 1.2 (Java 2), as it uses Java Collections. |
| 176 | +We have experienced some problems with the sunwjit JIT compiler; we do |
| 177 | +not recommend the use of this JIT. In particular, common subexpression |
| 178 | +elimination has triggered JIT problems with sunwjit. |
139 | 179 |
|
140 | 180 | </blockquote>
|
| 181 | + |
141 | 182 | <br>
|
142 | 183 |
|
143 | 184 | <!--Compilation-->
|
|
149 | 190 |
|
150 | 191 | Soot is already compiled in the distribution. To recompile Soot,
|
151 | 192 | we use the <tt> jams</tt> tool, a modified version of <tt>jam</tt> by Raffaele Sena.
|
152 |
| -This is included in the <tt>soot-1.0.0/jams</tt> directory of the distribution. Invoking |
153 |
| -jams from the <tt>soot-1.0.0/soot</tt> will recompile Soot as necessary. |
| 193 | +This is included in the <tt>soot-1.2.0/jams</tt> directory of the distribution. |
| 194 | +Invoking jams from the <tt>soot-1.2.0/soot</tt> will recompile Soot as necessary. |
| 195 | +It may be tricky to compile both Soot and jasmin at the same time |
| 196 | +because of dependences. An easy way is to use the compiled jasmin |
| 197 | +when compiling Soot. |
154 | 198 |
|
| 199 | +<p> |
155 | 200 | NOTE: The Jimple parser is generated by <a href="http://www.sable.mcgill.ca/sablecc">SableCC</a>.
|
156 |
| -It requires <tt> lexer.dat</tt> and <tt>parser.dat</tt> files to be in the classes directory; |
157 |
| -they are provided in the src directory. The following commands in the main |
158 |
| -Soot directory (<tt>soot-1.beta.6/soot</tt>) are required after a clean recompile. |
159 |
| - |
160 |
| -<pre> |
161 |
| -$ cp src/soot/jimple/parser/parser/parser.dat \ |
162 |
| - classes/soot/jimple/parser/parser |
163 |
| -$ cp src/soot/jimple/parser/lexer/lexer.dat \ |
164 |
| - classes/soot/jimple/parser/parser |
165 |
| -</pre> |
166 |
| - |
| 201 | +It requires <tt>lexer.dat</tt> and <tt>parser.dat</tt> files to be in the classes directory; |
| 202 | +they are provided in the src directory. Also, Soot uses peephole optimization to improve the |
| 203 | +generated bytecode. This requires the <tt>peephole.dat</tt> file be copied to |
| 204 | +the classes directory. |
| 205 | + |
| 206 | +<p> |
| 207 | +If you have jams correctly set up, the `foo' target will copy these <tt>.dat</tt> |
| 208 | +files from the src/ directory to the classes/ directory. Use command `<tt>jams foo</tt>'. |
| 209 | + |
167 | 210 | </blockquote>
|
168 | 211 | <br>
|
169 | 212 |
|
|
182 | 225 | href="http://www.sable.mcgill.ca/publications">conference papers</a>
|
183 | 226 | describing Soot.
|
184 | 227 |
|
185 |
| -<li>A set of <a href="http://www.sable.mcgill.ca/soot/tutorial">documents</a> describing Soot, both as a Java application optimizer and |
| 228 | +<li>A set of <a href="tutorial">documents</a> describing Soot, both as a Java application optimizer and |
186 | 229 | as a compiler framework.
|
187 | 230 |
|
188 | 231 | <li><a href="doc/index.html">The Soot API.</a> Most of the
|
|
231 | 274 |
|
232 | 275 | <blockquote>
|
233 | 276 |
|
234 |
| -The official Soot maintainers are <a href="mailto:rvalleerai@sable.mcgill.ca"> Raja Vallee-Rai</a> and |
235 |
| -<a href="mailto:plam@sable.mcgill.ca">Patrick Lam</a>. |
| 277 | +The official Soot maintainers are |
| 278 | +<a href="mailto:rvalleerai@sable.mcgill.ca"> Raja Vallee-Rai</a>, |
| 279 | +<a href="mailto:plam@sable.mcgill.ca">Patrick Lam</a>, and |
| 280 | +<a href="mailto:fqian@sable.mcgill.ca">Feng Qian</a>. |
236 | 281 |
|
237 | 282 | <br>
|
238 | 283 | <br><b>Click <a href="./credits">here</a> for the complete list of contributors and acknowledgements.</b>
|
|
244 | 289 | <center>
|
245 | 290 | <blockquote>
|
246 | 291 |
|
247 |
| -<font face="Arial, Helvetica" size=-2> <i>Last updated on March 24, 2000</i><br></font> |
| 292 | +<font face="Arial, Helvetica" size=-2> <i>Last updated on Octumber 2, 2000</i><br></font> |
248 | 293 |
|
249 | 294 | </blockquote>
|
250 | 295 |
|
|
0 commit comments