7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 /**
25 * @test
26 * @modules java.base/jdk.internal.misc
27 * @library /testlibrary
28 * @run main ContinuousCallSiteTargetChange
29 */
30 import java.lang.invoke.*;
31 import jdk.test.lib.*;
32
33 public class ContinuousCallSiteTargetChange {
34 static void testServer() throws Exception {
35 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
36 "-XX:+IgnoreUnrecognizedVMOptions",
37 "-server", "-XX:-TieredCompilation", "-Xbatch",
38 "-XX:PerBytecodeRecompilationCutoff=10", "-XX:PerMethodRecompilationCutoff=10",
39 "-XX:+PrintCompilation", "-XX:+UnlockDiagnosticVMOptions", "-XX:+PrintInlining",
40 "ContinuousCallSiteTargetChange$Test", "100");
41
42 OutputAnalyzer analyzer = new OutputAnalyzer(pb.start());
43
44 analyzer.shouldHaveExitValue(0);
45
46 analyzer.shouldNotContain("made not compilable");
47 analyzer.shouldNotContain("decompile_count > PerMethodRecompilationCutoff");
48 }
49
50 static void testClient() throws Exception {
51 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
52 "-XX:+IgnoreUnrecognizedVMOptions",
53 "-client", "-XX:+TieredCompilation", "-XX:TieredStopAtLevel=1", "-Xbatch",
54 "-XX:PerBytecodeRecompilationCutoff=10", "-XX:PerMethodRecompilationCutoff=10",
55 "-XX:+PrintCompilation", "-XX:+UnlockDiagnosticVMOptions", "-XX:+PrintInlining",
56 "ContinuousCallSiteTargetChange$Test", "100");
57
58 OutputAnalyzer analyzer = new OutputAnalyzer(pb.start());
59
60 analyzer.shouldHaveExitValue(0);
61
62 analyzer.shouldNotContain("made not compilable");
63 analyzer.shouldNotContain("decompile_count > PerMethodRecompilationCutoff");
64 }
65
66 public static void main(String[] args) throws Exception {
67 testServer();
68 testClient();
69 }
70
71 static class Test {
72 static final MethodType mt = MethodType.methodType(void.class);
73 static final CallSite cs = new MutableCallSite(mt);
74
75 static final MethodHandle mh = cs.dynamicInvoker();
76
|
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 /**
25 * @test
26 * @modules java.base/jdk.internal.misc
27 * @library /testlibrary /
28 *
29 * @run driver compiler.jsr292.ContinuousCallSiteTargetChange
30 */
31
32 package compiler.jsr292;
33
34 import jdk.test.lib.OutputAnalyzer;
35 import jdk.test.lib.ProcessTools;
36
37 import java.lang.invoke.CallSite;
38 import java.lang.invoke.MethodHandle;
39 import java.lang.invoke.MethodHandles;
40 import java.lang.invoke.MethodType;
41 import java.lang.invoke.MutableCallSite;
42
43 public class ContinuousCallSiteTargetChange {
44 static void testServer() throws Exception {
45 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
46 "-XX:+IgnoreUnrecognizedVMOptions",
47 "-server", "-XX:-TieredCompilation", "-Xbatch",
48 "-XX:PerBytecodeRecompilationCutoff=10", "-XX:PerMethodRecompilationCutoff=10",
49 "-XX:+PrintCompilation", "-XX:+UnlockDiagnosticVMOptions", "-XX:+PrintInlining",
50 Test.class.getName(), "100");
51
52 OutputAnalyzer analyzer = new OutputAnalyzer(pb.start());
53
54 analyzer.shouldHaveExitValue(0);
55
56 analyzer.shouldNotContain("made not compilable");
57 analyzer.shouldNotContain("decompile_count > PerMethodRecompilationCutoff");
58 }
59
60 static void testClient() throws Exception {
61 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
62 "-XX:+IgnoreUnrecognizedVMOptions",
63 "-client", "-XX:+TieredCompilation", "-XX:TieredStopAtLevel=1", "-Xbatch",
64 "-XX:PerBytecodeRecompilationCutoff=10", "-XX:PerMethodRecompilationCutoff=10",
65 "-XX:+PrintCompilation", "-XX:+UnlockDiagnosticVMOptions", "-XX:+PrintInlining",
66 Test.class.getName(), "100");
67
68 OutputAnalyzer analyzer = new OutputAnalyzer(pb.start());
69
70 analyzer.shouldHaveExitValue(0);
71
72 analyzer.shouldNotContain("made not compilable");
73 analyzer.shouldNotContain("decompile_count > PerMethodRecompilationCutoff");
74 }
75
76 public static void main(String[] args) throws Exception {
77 testServer();
78 testClient();
79 }
80
81 static class Test {
82 static final MethodType mt = MethodType.methodType(void.class);
83 static final CallSite cs = new MutableCallSite(mt);
84
85 static final MethodHandle mh = cs.dynamicInvoker();
86
|