annotate test/runtime/CDSCompressedKPtrs/CDSCompressedKPtrsError.java @ 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 7944aba7ba41
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
1 /*
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
4 *
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
7 * published by the Free Software Foundation.
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
8 *
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
13 * accompanied this code).
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
14 *
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
18 *
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
21 * questions.
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
22 */
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
23
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
24 /*
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
25 * @test
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
26 * @bug 8003424
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12056
diff changeset
27 * @summary Test that cannot use CDS if UseCompressedClassPointers is turned off.
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
28 * @library /testlibrary
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
29 * @run main CDSCompressedKPtrsError
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
30 */
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
31
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
32 import com.oracle.java.testlibrary.*;
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
33
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
34 public class CDSCompressedKPtrsError {
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
35 public static void main(String[] args) throws Exception {
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
36 ProcessBuilder pb;
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
37 if (Platform.is64bit()) {
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
38 pb = ProcessTools.createJavaProcessBuilder(
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12056
diff changeset
39 "-XX:+UseCompressedOops", "-XX:+UseCompressedClassPointers", "-XX:+UnlockDiagnosticVMOptions",
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
40 "-XX:SharedArchiveFile=./sample.jsa", "-Xshare:dump");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
41 OutputAnalyzer output = new OutputAnalyzer(pb.start());
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
42 try {
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
43 output.shouldContain("Loading classes to share");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
44 output.shouldHaveExitValue(0);
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
45
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
46 pb = ProcessTools.createJavaProcessBuilder(
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12056
diff changeset
47 "-XX:-UseCompressedClassPointers", "-XX:-UseCompressedOops",
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
48 "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./sample.jsa", "-Xshare:on", "-version");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
49 output = new OutputAnalyzer(pb.start());
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
50 output.shouldContain("Unable to use shared archive");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
51 output.shouldHaveExitValue(0);
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
52
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
53 pb = ProcessTools.createJavaProcessBuilder(
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12056
diff changeset
54 "-XX:-UseCompressedClassPointers", "-XX:+UseCompressedOops",
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
55 "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./sample.jsa", "-Xshare:on", "-version");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
56 output = new OutputAnalyzer(pb.start());
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
57 output.shouldContain("Unable to use shared archive");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
58 output.shouldHaveExitValue(0);
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
59
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
60 pb = ProcessTools.createJavaProcessBuilder(
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12056
diff changeset
61 "-XX:+UseCompressedClassPointers", "-XX:-UseCompressedOops",
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
62 "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./sample.jsa", "-Xshare:on", "-version");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
63 output = new OutputAnalyzer(pb.start());
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
64 output.shouldContain("Unable to use shared archive");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
65 output.shouldHaveExitValue(0);
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
66
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
67 } catch (RuntimeException e) {
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
68 output.shouldContain("Unable to use shared archive");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
69 output.shouldHaveExitValue(1);
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
70 }
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
71
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
72 // Test bad options with -Xshare:dump.
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
73 pb = ProcessTools.createJavaProcessBuilder(
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12056
diff changeset
74 "-XX:-UseCompressedOops", "-XX:+UseCompressedClassPointers", "-XX:+UnlockDiagnosticVMOptions",
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
75 "-XX:SharedArchiveFile=./sample.jsa", "-Xshare:dump");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
76 output = new OutputAnalyzer(pb.start());
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
77 output.shouldContain("Cannot dump shared archive");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
78
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
79 pb = ProcessTools.createJavaProcessBuilder(
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12056
diff changeset
80 "-XX:+UseCompressedOops", "-XX:-UseCompressedClassPointers", "-XX:+UnlockDiagnosticVMOptions",
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
81 "-XX:SharedArchiveFile=./sample.jsa", "-Xshare:dump");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
82 output = new OutputAnalyzer(pb.start());
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
83 output.shouldContain("Cannot dump shared archive");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
84
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
85 pb = ProcessTools.createJavaProcessBuilder(
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12056
diff changeset
86 "-XX:-UseCompressedOops", "-XX:-UseCompressedClassPointers", "-XX:+UnlockDiagnosticVMOptions",
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
87 "-XX:SharedArchiveFile=./sample.jsa", "-Xshare:dump");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
88 output = new OutputAnalyzer(pb.start());
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
89 output.shouldContain("Cannot dump shared archive");
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
90
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
91 }
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
92 }
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
diff changeset
93 }