annotate graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/inlining/InliningTest.java @ 10087:baec10fbe959

Added a more inlining test cases.
author Christian Haeubl <haeubl@ssw.jku.at>
date Wed, 19 Jun 2013 12:21:03 +0200
parents 8fdee70e2e1f
children b288e775e56b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
1 /*
9003
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
2 * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
4 *
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
7 * published by the Free Software Foundation.
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
8 *
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
13 * accompanied this code).
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
14 *
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
18 *
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
21 * questions.
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
22 */
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
23 package com.oracle.graal.compiler.test.inlining;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
24
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
25 import static org.junit.Assert.*;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
26
9005
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
27 import java.lang.reflect.*;
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
28 import java.util.concurrent.*;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
29
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
30 import org.junit.*;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
31
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
32 import com.oracle.graal.api.code.*;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
33 import com.oracle.graal.compiler.test.*;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
34 import com.oracle.graal.debug.*;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
35 import com.oracle.graal.graph.*;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
36 import com.oracle.graal.nodes.*;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
37 import com.oracle.graal.phases.*;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
38 import com.oracle.graal.phases.common.*;
9036
7309bde698f3 mark infopoint-related tests as long
Michael Haupt <michael.haupt@oracle.com>
parents: 9005
diff changeset
39 import com.oracle.graal.test.*;
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
40
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
41 public class InliningTest extends GraalCompilerTest {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
42
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
43 @Test
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
44 public void testInvokeStaticInlining() {
9003
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
45 assertInlined(getGraph("invokeStaticSnippet", false));
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
46 assertInlined(getGraph("invokeStaticOnInstanceSnippet", false));
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
47 }
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
48
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
49 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
50 public static Boolean invokeStaticSnippet(boolean value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
51 return Boolean.valueOf(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
52 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
53
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
54 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
55 public static Boolean invokeStaticOnInstanceSnippet(Boolean obj, boolean value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
56 return obj.valueOf(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
57 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
58
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
59 @Test
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
60 public void testStaticBindableInlining() {
9003
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
61 assertInlined(getGraph("invokeConstructorSnippet", false));
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
62 assertInlined(getGraph("invokeFinalMethodSnippet", false));
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
63 assertInlined(getGraph("invokeMethodOnFinalClassSnippet", false));
10087
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
64 assertInlined(getGraph("invokeMethodOnStaticFinalFieldSnippet", false));
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
65 }
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
66
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
67 @Ignore("would need read elimination/EA before inlining")
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
68 @Test
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
69 public void testDependentStaticBindableInlining() {
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
70 assertInlined(getGraph("invokeMethodOnFinalFieldSnippet", false));
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
71 assertInlined(getGraph("invokeMethodOnFieldSnippet", false));
9003
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
72 }
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
73
9036
7309bde698f3 mark infopoint-related tests as long
Michael Haupt <michael.haupt@oracle.com>
parents: 9005
diff changeset
74 @LongTest
9003
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
75 public void testStaticBindableInliningIP() {
9005
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
76 assertManyMethodInfopoints(assertInlined(getGraph("invokeConstructorSnippet", true)));
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
77 assertManyMethodInfopoints(assertInlined(getGraph("invokeFinalMethodSnippet", true)));
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
78 assertManyMethodInfopoints(assertInlined(getGraph("invokeMethodOnFinalClassSnippet", true)));
10087
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
79 assertManyMethodInfopoints(assertInlined(getGraph("invokeMethodOnStaticFinalFieldSnippet", true)));
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
80 }
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
81
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
82 @Ignore("would need read elimination/EA before inlining")
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
83 @LongTest
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
84 public void testDependentStaticBindableInliningIP() {
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
85 assertManyMethodInfopoints(assertInlined(getGraph("invokeMethodOnFinalFieldSnippet", true)));
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
86 assertManyMethodInfopoints(assertInlined(getGraph("invokeMethodOnFieldSnippet", true)));
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
87 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
88
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
89 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
90 public static Object invokeConstructorSnippet(int value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
91 return new SuperClass(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
92 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
93
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
94 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
95 public static int invokeFinalMethodSnippet(SuperClass superClass, SubClassA subClassA, FinalSubClass finalSubClass) {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
96 return superClass.publicFinalMethod() + subClassA.publicFinalMethod() + finalSubClass.publicFinalMethod() + superClass.protectedFinalMethod() + subClassA.protectedFinalMethod() +
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
97 finalSubClass.protectedFinalMethod();
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
98 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
99
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
100 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
101 public static int invokeMethodOnFinalClassSnippet(FinalSubClass finalSubClass) {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
102 return finalSubClass.publicFinalMethod() + finalSubClass.publicNotOverriddenMethod() + finalSubClass.publicOverriddenMethod() + finalSubClass.protectedFinalMethod() +
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
103 finalSubClass.protectedNotOverriddenMethod() + finalSubClass.protectedOverriddenMethod();
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
104 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
105
10087
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
106 @SuppressWarnings("all")
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
107 public static int invokeMethodOnStaticFinalFieldSnippet() {
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
108 return StaticFinalFields.NumberStaticFinalField.intValue() + StaticFinalFields.SuperClassStaticFinalField.publicOverriddenMethod() +
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
109 StaticFinalFields.FinalSubClassStaticFinalField.publicOverriddenMethod() + StaticFinalFields.SingleImplementorStaticFinalField.publicOverriddenMethod() +
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
110 StaticFinalFields.MultipleImplementorsStaticFinalField.publicOverriddenMethod() + StaticFinalFields.SubClassAStaticFinalField.publicOverriddenMethod() +
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
111 StaticFinalFields.SubClassBStaticFinalField.publicOverriddenMethod() + StaticFinalFields.SubClassCStaticFinalField.publicOverriddenMethod();
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
112 }
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
113
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
114 @SuppressWarnings("all")
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
115 public static int invokeMethodOnFinalFieldSnippet() {
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
116 FinalFields fields = new FinalFields();
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
117 return fields.numberFinalField.intValue() + fields.superClassFinalField.publicOverriddenMethod() + fields.finalSubClassFinalField.publicOverriddenMethod() +
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
118 fields.singleImplementorFinalField.publicOverriddenMethod() + fields.multipleImplementorsFinalField.publicOverriddenMethod() +
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
119 fields.subClassAFinalField.publicOverriddenMethod() + fields.subClassBFinalField.publicOverriddenMethod() + fields.subClassCFinalField.publicOverriddenMethod();
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
120 }
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
121
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
122 @SuppressWarnings("all")
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
123 public static int invokeMethodOnFieldSnippet() {
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
124 Fields fields = new Fields();
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
125 return fields.numberField.intValue() + fields.superClassField.publicOverriddenMethod() + fields.finalSubClassField.publicOverriddenMethod() +
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
126 fields.singleImplementorField.publicOverriddenMethod() + fields.multipleImplementorsField.publicOverriddenMethod() + fields.subClassAField.publicOverriddenMethod() +
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
127 fields.subClassBField.publicOverriddenMethod() + fields.subClassCField.publicOverriddenMethod();
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
128 }
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
129
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
130 @Test
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
131 public void testClassHierarchyAnalysis() {
9003
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
132 assertInlined(getGraph("invokeLeafClassMethodSnippet", false));
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
133 assertInlined(getGraph("invokeConcreteMethodSnippet", false));
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
134 assertInlined(getGraph("invokeSingleImplementorInterfaceSnippet", false));
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
135 // assertInlined(getGraph("invokeConcreteInterfaceMethodSnippet", false));
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
136
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
137 assertNotInlined(getGraph("invokeOverriddenPublicMethodSnippet", false));
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
138 assertNotInlined(getGraph("invokeOverriddenProtectedMethodSnippet", false));
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
139 assertNotInlined(getGraph("invokeOverriddenInterfaceMethodSnippet", false));
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
140 }
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
141
9036
7309bde698f3 mark infopoint-related tests as long
Michael Haupt <michael.haupt@oracle.com>
parents: 9005
diff changeset
142 @LongTest
9003
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
143 public void testClassHierarchyAnalysisIP() {
9005
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
144 assertManyMethodInfopoints(assertInlined(getGraph("invokeLeafClassMethodSnippet", true)));
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
145 assertManyMethodInfopoints(assertInlined(getGraph("invokeConcreteMethodSnippet", true)));
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
146 assertManyMethodInfopoints(assertInlined(getGraph("invokeSingleImplementorInterfaceSnippet", true)));
9003
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
147 //@formatter:off
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
148 // assertInlineInfopoints(assertInlined(getGraph("invokeConcreteInterfaceMethodSnippet", true)));
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
149 //@formatter:on
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
150
9005
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
151 assertFewMethodInfopoints(assertNotInlined(getGraph("invokeOverriddenPublicMethodSnippet", true)));
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
152 assertFewMethodInfopoints(assertNotInlined(getGraph("invokeOverriddenProtectedMethodSnippet", true)));
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
153 assertFewMethodInfopoints(assertNotInlined(getGraph("invokeOverriddenInterfaceMethodSnippet", true)));
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
154 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
155
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
156 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
157 public static int invokeLeafClassMethodSnippet(SubClassA subClassA) {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
158 return subClassA.publicFinalMethod() + subClassA.publicNotOverriddenMethod() + subClassA.publicOverriddenMethod();
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
159 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
160
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
161 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
162 public static int invokeConcreteMethodSnippet(SuperClass superClass) {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
163 return superClass.publicNotOverriddenMethod() + superClass.protectedNotOverriddenMethod();
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
164 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
165
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
166 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
167 public static int invokeSingleImplementorInterfaceSnippet(SingleImplementorInterface testInterface) {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
168 return testInterface.publicNotOverriddenMethod() + testInterface.publicOverriddenMethod();
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
169 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
170
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
171 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
172 public static int invokeConcreteInterfaceMethodSnippet(MultipleImplementorsInterface testInterface) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
173 return testInterface.publicNotOverriddenMethod();
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
174 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
175
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
176 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
177 public static int invokeOverriddenInterfaceMethodSnippet(MultipleImplementorsInterface testInterface) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
178 return testInterface.publicOverriddenMethod();
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
179 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
180
7386
707e9cca11de fixed HotSpot windows build
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7231
diff changeset
181 @SuppressWarnings("all")
707e9cca11de fixed HotSpot windows build
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7231
diff changeset
182 public static int invokeOverriddenPublicMethodSnippet(SuperClass superClass) {
707e9cca11de fixed HotSpot windows build
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7231
diff changeset
183 return superClass.publicOverriddenMethod();
707e9cca11de fixed HotSpot windows build
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7231
diff changeset
184 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
185
7386
707e9cca11de fixed HotSpot windows build
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7231
diff changeset
186 @SuppressWarnings("all")
707e9cca11de fixed HotSpot windows build
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7231
diff changeset
187 public static int invokeOverriddenProtectedMethodSnippet(SuperClass superClass) {
707e9cca11de fixed HotSpot windows build
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7231
diff changeset
188 return superClass.protectedOverriddenMethod();
707e9cca11de fixed HotSpot windows build
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7231
diff changeset
189 }
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
190
9003
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
191 private StructuredGraph getGraph(final String snippet, final boolean eagerInfopointMode) {
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
192 return Debug.scope("InliningTest", new DebugDumpScope(snippet), new Callable<StructuredGraph>() {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
193
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
194 @Override
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
195 public StructuredGraph call() {
9005
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
196 Method method = getMethod(snippet);
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
197 StructuredGraph graph = eagerInfopointMode ? parseDebug(method) : parse(method);
9003
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
198 PhasePlan phasePlan = getDefaultPhasePlan(eagerInfopointMode);
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
199 Assumptions assumptions = new Assumptions(true);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
200 Debug.dump(graph, "Graph");
10087
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
201 new CanonicalizerPhase.Instance(runtime(), assumptions, true).apply(graph);
8636
ac4dbfecec8f passed a Replacements object to inlining utility methods that need one instead of the GraalRuntime API
Doug Simon <doug.simon@oracle.com>
parents: 7827
diff changeset
202 new InliningPhase(runtime(), null, replacements, assumptions, null, phasePlan, OptimisticOptimizations.ALL).apply(graph);
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
203 Debug.dump(graph, "Graph");
9909
8fdee70e2e1f CanonicalizerPhase: add OptCanonicalizeReads option (adapt tests)
Bernhard Urban <bernhard.urban@jku.at>
parents: 9234
diff changeset
204 new CanonicalizerPhase.Instance(runtime(), assumptions, true).apply(graph);
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
205 new DeadCodeEliminationPhase().apply(graph);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
206 return graph;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
207 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
208 });
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
209 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
210
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
211 private static StructuredGraph assertInlined(StructuredGraph graph) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
212 return assertNotInGraph(graph, Invoke.class);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
213 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
214
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
215 private static StructuredGraph assertNotInlined(StructuredGraph graph) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
216 return assertInGraph(graph, Invoke.class);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
217 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
218
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
219 private static StructuredGraph assertNotInGraph(StructuredGraph graph, Class<?> clazz) {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
220 for (Node node : graph.getNodes()) {
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
221 if (clazz.isInstance(node)) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
222 fail(node.toString());
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
223 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
224 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
225 return graph;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
226 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
227
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
228 private static StructuredGraph assertInGraph(StructuredGraph graph, Class<?> clazz) {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
229 for (Node node : graph.getNodes()) {
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
230 if (clazz.isInstance(node)) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
231 return graph;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
232 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
233 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
234 fail("Graph does not contain a node of class " + clazz.getName());
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
235 return graph;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
236 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
237
9005
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
238 private static int[] countMethodInfopoints(StructuredGraph graph) {
9003
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
239 int start = 0;
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
240 int end = 0;
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
241 for (InfopointNode ipn : graph.getNodes(InfopointNode.class)) {
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
242 if (ipn.reason == InfopointReason.METHOD_START) {
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
243 ++start;
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
244 } else if (ipn.reason == InfopointReason.METHOD_END) {
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
245 ++end;
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
246 }
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
247 }
9005
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
248 return new int[]{start, end};
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
249 }
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
250
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
251 private static StructuredGraph assertManyMethodInfopoints(StructuredGraph graph) {
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
252 int[] counts = countMethodInfopoints(graph);
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
253 if (counts[0] <= 1 || counts[1] <= 1) {
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
254 fail(String.format("Graph contains too few required method boundary infopoints: %d starts, %d ends.", counts[0], counts[1]));
9003
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
255 }
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
256 return graph;
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
257 }
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
258
9005
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
259 private static StructuredGraph assertFewMethodInfopoints(StructuredGraph graph) {
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
260 int[] counts = countMethodInfopoints(graph);
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
261 if (counts[0] > 1 || counts[1] > 1) {
7c1b70aeb0c7 post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents: 9003
diff changeset
262 fail(String.format("Graph contains too many method boundary infopoints: %d starts, %d ends.", counts[0], counts[1]));
9003
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
263 }
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
264 return graph;
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
265 }
a8fea2979e63 eager infopoint mode (fka debug mode)
Michael Haupt <michael.haupt@oracle.com>
parents: 8636
diff changeset
266
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
267 // some interfaces and classes for testing
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
268 private interface MultipleImplementorsInterface {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
269
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
270 int publicNotOverriddenMethod();
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
271
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
272 int publicOverriddenMethod();
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
273 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
274
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
275 private interface SingleImplementorInterface {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
276
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
277 int publicNotOverriddenMethod();
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
278
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
279 int publicOverriddenMethod();
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
280 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
281
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
282 private static class SuperClass implements MultipleImplementorsInterface {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
283
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
284 protected int value;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
285
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
286 public SuperClass(int value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
287 this.value = value;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
288 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
289
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
290 public int publicNotOverriddenMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
291 return value;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
292 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
293
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
294 public int publicOverriddenMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
295 return value;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
296 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
297
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
298 protected int protectedNotOverriddenMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
299 return value;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
300 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
301
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
302 protected int protectedOverriddenMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
303 return value;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
304 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
305
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
306 public final int publicFinalMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
307 return value + 255;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
308 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
309
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
310 protected final int protectedFinalMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
311 return value + 255;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
312 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
313 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
314
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
315 private static class SubClassA extends SuperClass implements SingleImplementorInterface {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
316
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
317 public SubClassA(int value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
318 super(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
319 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
320
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
321 @Override
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
322 public int publicOverriddenMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
323 return value + 2;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
324 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
325
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
326 @Override
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
327 protected int protectedOverriddenMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
328 return value * 2;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
329 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
330 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
331
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
332 private static class SubClassB extends SuperClass {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
333
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
334 public SubClassB(int value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
335 super(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
336 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
337
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
338 @Override
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
339 public int publicOverriddenMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
340 return value + 3;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
341 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
342
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
343 @Override
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
344 protected int protectedOverriddenMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
345 return value * 3;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
346 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
347 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
348
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
349 private static class SubClassC extends SuperClass {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
350
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
351 public SubClassC(int value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
352 super(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
353 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
354
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
355 @Override
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
356 public int publicOverriddenMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
357 return value + 4;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
358 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
359
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
360 @Override
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
361 protected int protectedOverriddenMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
362 return value * 4;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
363 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
364 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
365
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
366 private static final class FinalSubClass extends SuperClass {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7386
diff changeset
367
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
368 public FinalSubClass(int value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
369 super(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
370 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
371
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
372 @Override
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
373 public int publicOverriddenMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
374 return value + 5;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
375 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
376
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
377 @Override
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
378 protected int protectedOverriddenMethod() {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
379 return value * 5;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
380 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
381 }
10087
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
382
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
383 private static final class StaticFinalFields {
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
384
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
385 private static final Number NumberStaticFinalField = new Integer(1);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
386 private static final SuperClass SuperClassStaticFinalField = new SubClassA(2);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
387 private static final FinalSubClass FinalSubClassStaticFinalField = new FinalSubClass(3);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
388 private static final SingleImplementorInterface SingleImplementorStaticFinalField = new SubClassA(4);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
389 private static final MultipleImplementorsInterface MultipleImplementorsStaticFinalField = new SubClassC(5);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
390 private static final SubClassA SubClassAStaticFinalField = new SubClassA(6);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
391 private static final SubClassB SubClassBStaticFinalField = new SubClassB(7);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
392 private static final SubClassC SubClassCStaticFinalField = new SubClassC(8);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
393 }
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
394
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
395 private static final class FinalFields {
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
396
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
397 private final Number numberFinalField = new Integer(1);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
398 private final SuperClass superClassFinalField = new SubClassA(2);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
399 private final FinalSubClass finalSubClassFinalField = new FinalSubClass(3);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
400 private final SingleImplementorInterface singleImplementorFinalField = new SubClassA(4);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
401 private final MultipleImplementorsInterface multipleImplementorsFinalField = new SubClassC(5);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
402 private final SubClassA subClassAFinalField = new SubClassA(6);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
403 private final SubClassB subClassBFinalField = new SubClassB(7);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
404 private final SubClassC subClassCFinalField = new SubClassC(8);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
405 }
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
406
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
407 private static final class Fields {
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
408
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
409 private Number numberField = new Integer(1);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
410 private SuperClass superClassField = new SubClassA(2);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
411 private FinalSubClass finalSubClassField = new FinalSubClass(3);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
412 private SingleImplementorInterface singleImplementorField = new SubClassA(4);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
413 private MultipleImplementorsInterface multipleImplementorsField = new SubClassC(5);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
414 private SubClassA subClassAField = new SubClassA(6);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
415 private SubClassB subClassBField = new SubClassB(7);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
416 private SubClassC subClassCField = new SubClassC(8);
baec10fbe959 Added a more inlining test cases.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9909
diff changeset
417 }
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
418 }