Mon, 09 Nov 2015 13:45:10 -0800
Merge
1 <?xml version="1.0" encoding="UTF-8"?>
3 <!--
4 Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
5 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
7 This code is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License version 2 only, as
9 published by the Free Software Foundation.
11 This code is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 version 2 for more details (a copy is included in the LICENSE file that
15 accompanied this code).
17 You should have received a copy of the GNU General Public License version
18 2 along with this work; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
21 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 or visit www.oracle.com if you need additional information or have any
23 questions.
24 -->
27 <project
28 name="nashorn-benchmarks"
29 default="all"
30 basedir=".."
31 xmlns:if="ant:if">
33 <!--
34 Below are the octane benchmarks that should be run.
35 The ones that are excluded, as Nashorn currently has
36 some issues with them (functionality or performance)
37 are commented out
38 -->
40 <!-- box2d -->
41 <target name="octane-box2d" depends="octane-box2d-nashorn"/>
42 <target name="octane-box2d-nashorn" depends="jar">
43 <run-one cond="octane.benchmark.box2d" runtime="nashorn"/>
44 </target>
45 <target name="octane-box2d-v8" depends="jar">
46 <run-one cond="octane.benchmark.box2d" runtime="v8"/>
47 </target>
48 <target name="octane-box2d-rhino" depends="jar">
49 <run-one cond="octane.benchmark.box2d" runtime="rhino"/>
50 </target>
52 <!-- code-load -->
53 <target name="octane-code-load" depends="octane-code-load-nashorn"/>
54 <target name="octane-code-load-nashorn" depends="jar">
55 <run-one cond="octane.benchmark.code-load" runtime="nashorn"/>
56 </target>
57 <target name="octane-code-load-v8" depends="jar">
58 <run-one cond="octane.benchmark.code-load" runtime="v8"/>
59 </target>
60 <target name="octane-code-load-rhino" depends="jar">
61 <run-one cond="octane.benchmark.code-load" runtime="rhino"/>
62 </target>
64 <!-- crypto -->
65 <target name="octane-crypto" depends="octane-crypto-nashorn"/>
66 <target name="octane-crypto-nashorn" depends="jar">
67 <run-one cond="octane.benchmark.crypto" runtime="nashorn"/>
68 </target>
69 <target name="octane-crypto-v8" depends="jar">
70 <run-one cond="octane.benchmark.crypto" runtime="v8"/>
71 </target>
72 <target name="octane-crypto-rhino" depends="jar">
73 <run-one cond="octane.benchmark.crypto" runtime="rhino"/>
74 </target>
76 <!-- deltablue -->
77 <target name="octane-deltablue" depends="octane-deltablue-nashorn"/>
78 <target name="octane-deltablue-nashorn" depends="jar">
79 <run-one cond="octane.benchmark.deltablue" runtime="nashorn"/>
80 </target>
81 <target name="octane-deltablue-v8" depends="jar">
82 <run-one cond="octane.benchmark.deltablue" runtime="v8"/>
83 </target>
84 <target name="octane-deltablue-rhino" depends="jar">
85 <run-one cond="octane.benchmark.deltablue" runtime="rhino"/>
86 </target>
88 <!-- earley-boyer -->
89 <target name="octane-earley-boyer" depends="octane-earley-boyer-nashorn"/>
90 <target name="octane-earley-boyer-nashorn" depends="jar">
91 <run-one cond="octane.benchmark.earley-boyer" runtime="nashorn"/>
92 </target>
93 <target name="octane-earley-boyer-v8" depends="jar">
94 <run-one cond="octane.benchmark.earley-boyer" runtime="v8"/>
95 </target>
96 <target name="octane-earley-boyer-rhino" depends="jar">
97 <run-one cond="octane.benchmark.earley-boyer" runtime="rhino"/>
98 </target>
100 <!-- gbemu -->
101 <target name="octane-gbemu" depends="octane-gbemu-nashorn"/>
102 <target name="octane-gbemu-nashorn" depends="jar">
103 <run-one cond="octane.benchmark.gbemu" runtime="nashorn"/>
104 </target>
105 <target name="octane-gbemu-v8" depends="jar">
106 <run-one cond="octane.benchmark.gbemu" runtime="v8"/>
107 </target>
108 <target name="octane-gbemu-rhino" depends="jar">
109 <run-one cond="octane.benchmark.gbemu" runtime="rhino"/>
110 </target>
112 <!-- mandreel -->
113 <target name="octane-mandreel" depends="octane-mandreel-nashorn"/>
114 <target name="octane-mandreel-nashorn" depends="jar">
115 <run-one cond="octane.benchmark.mandreel" runtime="nashorn"/>
116 </target>
117 <target name="octane-mandreel-v8" depends="jar">
118 <run-one cond="octane.benchmark.mandreel" runtime="v8"/>
119 </target>
120 <target name="octane-mandreel-rhino" depends="jar">
121 <run-one cond="octane.benchmark.mandreel" runtime="rhino"/>
122 </target>
124 <!-- navier-stokes -->
125 <target name="octane-navier-stokes" depends="octane-navier-stokes-nashorn"/>
126 <target name="octane-navier-stokes-nashorn" depends="jar">
127 <run-one cond="octane.benchmark.navier-stokes" runtime="nashorn"/>
128 </target>
129 <target name="octane-navier-stokes-v8" depends="jar">
130 <run-one cond="octane.benchmark.navier-stokes" runtime="v8"/>
131 </target>
132 <target name="octane-navier-stokes-rhino" depends="jar">
133 <run-one cond="octane.benchmark.navier-stokes" runtime="rhino"/>
134 </target>
136 <!-- pdfjs -->
137 <target name="octane-pdfjs" depends="octane-pdfjs-nashorn"/>
138 <target name="octane-pdfjs-nashorn" depends="jar">
139 <run-one cond="octane.benchmark.pdfjs" runtime="nashorn"/>
140 </target>
141 <target name="octane-pdfjs-v8" depends="jar">
142 <run-one cond="octane.benchmark.pdfjs" runtime="v8"/>
143 </target>
144 <target name="octane-pdfjs-rhino" depends="jar">
145 <run-one cond="octane.benchmark.pdfjs" runtime="rhino"/>
146 </target>
148 <!-- raytrace -->
149 <target name="octane-raytrace" depends="octane-raytrace-nashorn"/>
150 <target name="octane-raytrace-nashorn" depends="jar">
151 <run-one cond="octane.benchmark.raytrace" runtime="nashorn"/>
152 </target>
153 <target name="octane-raytrace-v8" depends="jar">
154 <run-one cond="octane.benchmark.raytrace" runtime="v8"/>
155 </target>
156 <target name="octane-raytrace-rhino" depends="jar">
157 <run-one cond="octane.benchmark.raytrace" runtime="rhino"/>
158 </target>
160 <!-- regexp -->
161 <target name="octane-regexp" depends="octane-regexp-nashorn"/>
162 <target name="octane-regexp-nashorn" depends="jar">
163 <run-one cond="octane.benchmark.regexp" runtime="nashorn"/>
164 </target>
165 <target name="octane-regexp-v8" depends="jar">
166 <run-one cond="octane.benchmark.regexp" runtime="v8"/>
167 </target>
168 <target name="octane-regexp-rhino" depends="jar">
169 <run-one cond="octane.benchmark.regexp" runtime="rhino"/>
170 </target>
172 <!-- richards -->
173 <target name="octane-richards" depends="octane-richards-nashorn"/>
174 <target name="octane-richards-nashorn" depends="jar">
175 <run-one cond="octane.benchmark.richards" runtime="nashorn"/>
176 </target>
177 <target name="octane-richards-v8" depends="jar">
178 <run-one cond="octane.benchmark.richards" runtime="v8"/>
179 </target>
180 <target name="octane-richards-rhino" depends="jar">
181 <run-one cond="octane.benchmark.richards" runtime="rhino"/>
182 </target>
184 <!-- splay -->
185 <target name="octane-splay" depends="octane-splay-nashorn"/>
186 <target name="octane-splay-nashorn" depends="jar">
187 <run-one cond="octane.benchmark.splay" runtime="nashorn"/>
188 </target>
189 <target name="octane-splay-v8" depends="jar">
190 <run-one cond="octane.benchmark.splay" runtime="v8"/>
191 </target>
192 <target name="octane-splay-rhino" depends="jar">
193 <run-one cond="octane.benchmark.splay" runtime="rhino"/>
194 </target>
196 <!-- typescript -->
197 <target name="octane-typescript" depends="octane-typescript-nashorn"/>
198 <target name="octane-typescript-nashorn" depends="jar">
199 <run-one cond="octane.benchmark.typescript" runtime="nashorn"/>
200 </target>
201 <target name="octane-typescript-v8" depends="jar">
202 <run-one cond="octane.benchmark.typescript" runtime="v8"/>
203 </target>
204 <target name="octane-typescript-rhino" depends="jar">
205 <run-one cond="octane.benchmark.typescript" runtime="rhino"/>
206 </target>
208 <!-- zlib -->
209 <target name="octane-zlib" depends="octane-zlib-nashorn"/>
210 <target name="octane-zlib-nashorn" depends="jar">
211 <run-one cond="octane.benchmark.zlib" runtime="nashorn"/>
212 </target>
213 <target name="octane-zlib-v8" depends="jar">
214 <run-one cond="octane.benchmark.zlib" runtime="v8"/>
215 </target>
216 <target name="octane-zlib-rhino" depends="jar">
217 <run-one cond="octane.benchmark.zlib" runtime="rhino"/>
218 </target>
220 <!--
221 Benchmark runners for one or more benchmarks, single
222 or multiple process
223 -->
225 <target name="octane-process-separate" if="${octane-test-sys-prop.separate.process}">
226 <echo message="Running each benchmark in separate processes, starting new JVMs for each."/>
227 <script language="javascript"><![CDATA[
228 var props = [];
230 for (var prop in project.getProperties()) {
231 if (prop.startsWith("octane.benchmark.")) {
232 props.push(prop);
233 }
234 }
236 //sort benchmark props in alphabetical order by name
237 props.sort(function(a, b) {
238 if (a < b) {
239 return -1;
240 } else if (a > b) {
241 return 1;
242 } else {
243 return 0;
244 }
245 });
247 var runtime = project.getProperty("runtime");
249 for (var i in props) {
250 var task = project.createTask("run-one");
251 // workaround for https://issues.apache.org/bugzilla/show_bug.cgi?id=53831, still not fixed
252 if (task.getOwningTarget() == null) {
253 task.setOwningTarget(self.getOwningTarget());
254 }
255 var prop = props[i];
256 task.setDynamicAttribute("cond", prop);
257 task.setDynamicAttribute("runtime", runtime);
258 task.perform();
259 }
260 ]]></script>
261 </target>
263 <target name="octane-process-single" unless="${octane-test-sys-prop.separate.process}">
264 <echo message="Running all benchmarks in the same process."/>
265 <pathconvert property="octane.benchmarks" pathsep=" ">
266 <propertyset>
267 <propertyref prefix="octane.benchmark."/>
268 </propertyset>
269 </pathconvert>
270 <antcall target="run-octane${runtime}">
271 <param name="octane-tests" value="${octane.benchmarks}"/>
272 </antcall>
273 </target>
275 <!--
276 run 'octane' in single or separate processes based on config
277 This uses nashorn as the default runtime
278 -->
279 <target name="octane-nashorn" depends="jar">
280 <property name="runtime" value="nashorn"/>
281 <antcall target="octane-process-separate"/>
282 <antcall target="octane-process-single"/>
283 </target>
285 <!-- alias for 'octane' -->
286 <target name="octane" depends="octane-nashorn"/>
288 <!-- run octane benchmarks using octane as runtime -->
289 <target name="octane-v8" depends="jar">
290 <property name="runtime" value="v8"/>
291 <antcall target="octane-process-separate"/>
292 <antcall target="octane-process-single"/>
293 </target>
295 <!-- run octane benchmarks using Rhino as runtime -->
296 <target name="octane-rhino" depends="jar">
297 <property name="runtime" value="rhino"/>
298 <antcall target="octane-process-separate"/>
299 <antcall target="octane-process-single"/>
300 </target>
302 <macrodef name="run-one">
303 <attribute name="cond"/>
304 <attribute name="runtime" default=""/>
305 <sequential>
306 <antcall target="run-octane-@{runtime}" if:set="@{cond}">
307 <param name="octane-tests" value="${@{cond}}"/>
308 </antcall>
309 </sequential>
310 </macrodef>
312 <target name="run-octane-nashorn">
313 <java classname="${nashorn.shell.tool}"
314 classpath="${run.test.classpath}"
315 fork="true"
316 dir=".">
317 <jvmarg line="${ext.class.path}"/>
318 <jvmarg line="${run.test.jvmargs.octane} -Xms${run.test.xms} -Xmx${run.test.xmx}"/>
319 <!-- pass on all properties prefixed with 'nashorn' to the runtime -->
320 <syspropertyset>
321 <propertyref prefix="nashorn."/>
322 </syspropertyset>
323 <arg value="${octane-test-sys-prop.test.js.framework}"/>
324 <arg value="-scripting"/>
325 <arg value="--"/>
326 <arg value="${octane-tests}"/>
327 <arg value="--runtime"/>
328 <arg value="nashorn"/>
329 <arg value="--verbose"/>
330 <arg value="--iterations ${octane.iterations}"/>
331 </java>
332 </target>
334 <target name="run-octane-v8">
335 <exec executable="${v8.shell}">
336 <arg value="${octane-test-sys-prop.test.js.framework}"/>
337 <arg value="--"/>
338 <arg value="${octane-tests}"/>
339 <arg value="--runtime"/>
340 <arg value="v8"/>
341 <arg value="--verbose"/>
342 <arg value="--iterations ${octane.iterations}"/>
343 </exec>
344 </target>
346 <target name="run-octane-rhino">
347 <java jar="${rhino.jar}"
348 classpath="${run.test.classpath}"
349 fork="true"
350 dir=".">
351 <jvmarg line="${run.test.jvmargs.octane} -Xms${run.test.xms} -Xmx${run.test.xmx}"/>
352 <arg value="-opt"/>
353 <arg value="9"/>
354 <arg value="${octane-test-sys-prop.test.js.framework}"/>
355 <arg value="${octane-tests}"/>
356 <arg value="--runtime"/>
357 <arg value="rhino"/>
358 <arg value="--verbose"/>
359 <arg value="--iterations ${octane.iterations}"/>
360 </java>
361 </target>
363 <!-- run octane with all known runtimes for comparison -->
364 <target name="octane-all" depends="octane, octane-v8, octane-rhino">
365 <exec executable="${v8.shell}">
366 <arg value="${octane-test-sys-prop.test.js.framework}"/>
367 <arg value="${octane-tests}/"/>
368 </exec>
369 </target>
371 <target name="sunspider-init" depends="jar">
372 <fileset id="sunspider-set"
373 dir="${sunspider-test-sys-prop.test.js.roots}"
374 excludes="${sunspider-test-sys-prop.test.js.exclude.list}">
375 <include name="**/*.js"/>
376 </fileset>
377 <pathconvert pathsep=" " property="sunspider-tests" refid="sunspider-set"/>
378 </target>
380 <!--- SUNSPIDER JOB BELOW -->
382 <!-- run sunspider with Nashorn -->
383 <target name="sunspider" depends="sunspider-nashorn"/>
385 <target name="sunspider-nashorn" depends="sunspider-init">
386 <java classname="${nashorn.shell.tool}"
387 classpath="${run.test.classpath}"
388 fork="true"
389 dir=".">
390 <jvmarg line="${ext.class.path}"/>
391 <jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx}"/>
392 <arg value="-timezone=PST"/>
393 <arg value="--class-cache-size=50"/>
394 <arg value="${sunspider-test-sys-prop.test.js.framework}"/>
395 <arg value="--"/>
396 <arg value="${sunspider-tests}/"/>
397 <arg value="--verbose"/>
398 <arg value="--times"/>
399 <arg value="${sunspider.iterations}"/>
400 </java>
401 </target>
403 <!-- run sunspider with v8 -->
404 <target name="sunspider-v8" depends="sunspider-init">
405 <exec executable="${v8.shell}">
406 <arg value="${sunspider-test-sys-prop.test.js.framework}"/>
407 <arg value="--"/>
408 <arg value="${sunspider-tests}/"/>
409 <arg value="--verbose"/>
410 <arg value="--times"/>
411 <arg value="${sunspider.iterations}"/>
412 </exec>
413 </target>
415 <!-- run sunspider with Rhino -->
416 <target name="sunspider-rhino" depends="sunspider-init">
417 <java jar="${rhino.jar}"
418 classpath="${run.test.classpath}"
419 fork="true"
420 dir=".">
421 <jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx}"/>
422 <arg value="-opt"/>
423 <arg value="9"/>
424 <arg value="${sunspider-test-sys-prop.test.js.framework}"/>
425 <arg value="${sunspider-tests}/"/>
426 <arg value="--verbose"/>
427 <arg value="--times"/>
428 <arg value="${sunspider.iterations}"/>
429 </java>
430 </target>
432 </project>