annotate test/testlibrary/ctw/README @ 12690:c3bdd186e6cf

fix possible NPE in TruffleCompiler with TraceTruffleCompilation and background compilation enabled. With background compilation, the installed code can already be invalidated when compiledMethod.getCode() is called, in which case it returns null.
author Andreas Woess <andreas.woess@jku.at>
date Wed, 06 Nov 2013 13:31:28 +0100
parents ceda33ff54a3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12187
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
1 #
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
2 # Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
4 #
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
5 # This code is free software; you can redistribute it and/or modify it
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
6 # under the terms of the GNU General Public License version 2 only, as
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
7 # published by the Free Software Foundation.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
8 #
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
9 # This code is distributed in the hope that it will be useful, but WITHOUT
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
12 # version 2 for more details (a copy is included in the LICENSE file that
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
13 # accompanied this code).
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
14 #
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
15 # You should have received a copy of the GNU General Public License version
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
16 # 2 along with this work; if not, write to the Free Software Foundation,
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
18 #
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
20 # or visit www.oracle.com if you need additional information or have any
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
21 # questions.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
22 #
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
23 #
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
24
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
25 DESCRIPTION
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
26
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
27 This is replacement for CompileTheWorld (CTW) written on java. Its purpose is
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
28 to make possible the use of CTW in product builds.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
29
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
30 DEPENDENCES
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
31
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
32 The tool depends on Whitebox API. Assumed, that the sources of whitebox are
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
33 located in '../whitebox' directory.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
34
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
35 BUILDING
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
36
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
37 Simple way to build, just type 'make'.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
38
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
39 Makefile uses environment variables 'ALT_BOOTDIR', 'BOOTDIR' as root-dir of jdk
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
40 that will be used for compilation and creating jar.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
41
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
42 On successful building 'ctw.jar' will be created.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
43
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
44 RUNNING
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
45
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
46 Since the tool uses WhiteBox API, options 'UnlockDiagnosticVMOptions' and
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
47 'WhiteBoxAPI' should be specified, and 'wb.jar' should be added to
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
48 boot-classpath:
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
49 $ java -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:wb.jar -jar ctw.jar
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
50
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
51 Arguments can be paths to '.jar, '.zip', '.lst' files or directories with
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
52 classes, that define which classes will be compiled:
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
53 - '.jar', '.zip' files and directories are interpreted like in classpath
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
54 (including '<dir>/*' syntax)
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
55 - '.lst' files -- files with class names (in java notation) to compile.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
56 CTW will try to find these classes with default class loader, so they should
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
57 be located in classpath.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
58
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
59 Without arguments it would work as old version of CTW: all classes in
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
60 boot-classpath will be compiled, excluding classes in 'rt.jar' if 'rt.jar' isn't
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
61 first in boot-classpath.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
62
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
63 Due CTW's flags also are not available in product builds, the tool uses
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
64 properties with the same names:
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
65 - 'CompileTheWorldPreloadClasses' -- type:boolean, default:true, description:
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
66 Preload all classes used by a class before start loading
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
67 - 'CompileTheWorldStartAt' -- type:long, default:1, description: First class
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
68 to consider
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
69 - 'CompileTheWorldStopAt' -- type:long, default:Long.MAX_VALUE, description:
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
70 Last class to consider
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
71
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
72 Also it uses additional properties:
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
73 - 'sun.hotspot.tools.ctw.verbose' -- type:boolean, default:false,
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
74 description: Verbose output, adds additional information about compilation
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
75 - 'sun.hotspot.tools.ctw.logfile' -- type:string, default:null,
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
76 description: Path to logfile, if it's null, cout will be used.
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
77
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
78 EXAMPLES
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
79
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
80 compile classes from 'rt.jar':
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
81 $ java -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:wb.jar -jar ctw.jar ${JAVA_HOME}/jre/lib/rt.jar
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
82
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
83 compile classes from all '.jar' in './testjars' directory:
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
84 $ java -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:wb.jar -jar ctw.jar ./testjars/*
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
85
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
86 compile classes from './build/classes' directory:
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
87 $ java -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:wb.jar -jar ctw.jar ./build/classes
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
88
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
89 compile only java.lang.String, java.lang.Object classes:
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
90 $ echo java.lang.String > classes.lst
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
91 $ echo java.lang.Object >> classes.lst
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
92 $ java -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:wb.jar -jar ctw.jar classes.lst
ceda33ff54a3 8012447: Java CTW implementation
iignatyev
parents:
diff changeset
93