Mercurial > hg > graal-compiler
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 |
rev | line source |
---|---|
7225 | 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 | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | |
5 * This code is free software; you can redistribute it and/or modify it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
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 package com.oracle.graal.compiler.test.inlining; | |
24 | |
25 import static org.junit.Assert.*; | |
26 | |
9005
7c1b70aeb0c7
post-merge fixes, test improvements
Michael Haupt <michael.haupt@oracle.com>
parents:
9003
diff
changeset
|
27 import java.lang.reflect.*; |
7225 | 28 import java.util.concurrent.*; |
29 | |
30 import org.junit.*; | |
31 | |
32 import com.oracle.graal.api.code.*; | |
33 import com.oracle.graal.compiler.test.*; | |
34 import com.oracle.graal.debug.*; | |
35 import com.oracle.graal.graph.*; | |
36 import com.oracle.graal.nodes.*; | |
37 import com.oracle.graal.phases.*; | |
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 | 40 |
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 | 43 @Test |
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 | 49 @SuppressWarnings("all") |
50 public static Boolean invokeStaticSnippet(boolean value) { | |
51 return Boolean.valueOf(value); | |
52 } | |
7530
5e3d1a68664e
applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents:
7386
diff
changeset
|
53 |
7225 | 54 @SuppressWarnings("all") |
55 public static Boolean invokeStaticOnInstanceSnippet(Boolean obj, boolean value) { | |
56 return obj.valueOf(value); | |
57 } | |
58 | |
59 @Test | |
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 | 87 } |
88 | |
89 @SuppressWarnings("all") | |
90 public static Object invokeConstructorSnippet(int value) { | |
91 return new SuperClass(value); | |
92 } | |
7530
5e3d1a68664e
applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents:
7386
diff
changeset
|
93 |
7225 | 94 @SuppressWarnings("all") |
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 | 98 } |
7530
5e3d1a68664e
applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents:
7386
diff
changeset
|
99 |
7225 | 100 @SuppressWarnings("all") |
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 | 104 } |
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 | 130 @Test |
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 | 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 | 154 } |
155 | |
156 @SuppressWarnings("all") | |
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 | 159 } |
7530
5e3d1a68664e
applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents:
7386
diff
changeset
|
160 |
7225 | 161 @SuppressWarnings("all") |
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 | 164 } |
7530
5e3d1a68664e
applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents:
7386
diff
changeset
|
165 |
7225 | 166 @SuppressWarnings("all") |
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 | 169 } |
7530
5e3d1a68664e
applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents:
7386
diff
changeset
|
170 |
7225 | 171 @SuppressWarnings("all") |
172 public static int invokeConcreteInterfaceMethodSnippet(MultipleImplementorsInterface testInterface) { | |
173 return testInterface.publicNotOverriddenMethod(); | |
174 } | |
7530
5e3d1a68664e
applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents:
7386
diff
changeset
|
175 |
7225 | 176 @SuppressWarnings("all") |
177 public static int invokeOverriddenInterfaceMethodSnippet(MultipleImplementorsInterface testInterface) { | |
178 return testInterface.publicOverriddenMethod(); | |
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 | 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 | 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 | 194 @Override |
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 | 199 Assumptions assumptions = new Assumptions(true); |
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 | 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 | 205 new DeadCodeEliminationPhase().apply(graph); |
206 return graph; | |
207 } | |
208 }); | |
209 } | |
210 | |
211 private static StructuredGraph assertInlined(StructuredGraph graph) { | |
212 return assertNotInGraph(graph, Invoke.class); | |
213 } | |
214 | |
215 private static StructuredGraph assertNotInlined(StructuredGraph graph) { | |
216 return assertInGraph(graph, Invoke.class); | |
217 } | |
218 | |
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 | 221 if (clazz.isInstance(node)) { |
222 fail(node.toString()); | |
223 } | |
224 } | |
225 return graph; | |
226 } | |
227 | |
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 | 230 if (clazz.isInstance(node)) { |
231 return graph; | |
232 } | |
233 } | |
234 fail("Graph does not contain a node of class " + clazz.getName()); | |
235 return graph; | |
236 } | |
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 | 267 // some interfaces and classes for testing |
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 | 270 int publicNotOverriddenMethod(); |
7530
5e3d1a68664e
applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents:
7386
diff
changeset
|
271 |
7225 | 272 int publicOverriddenMethod(); |
273 } | |
274 | |
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 | 277 int publicNotOverriddenMethod(); |
7530
5e3d1a68664e
applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents:
7386
diff
changeset
|
278 |
7225 | 279 int publicOverriddenMethod(); |
280 } | |
281 | |
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 | 284 protected int value; |
285 | |
286 public SuperClass(int value) { | |
287 this.value = value; | |
288 } | |
289 | |
290 public int publicNotOverriddenMethod() { | |
291 return value; | |
292 } | |
293 | |
294 public int publicOverriddenMethod() { | |
295 return value; | |
296 } | |
297 | |
298 protected int protectedNotOverriddenMethod() { | |
299 return value; | |
300 } | |
301 | |
302 protected int protectedOverriddenMethod() { | |
303 return value; | |
304 } | |
305 | |
306 public final int publicFinalMethod() { | |
307 return value + 255; | |
308 } | |
309 | |
310 protected final int protectedFinalMethod() { | |
311 return value + 255; | |
312 } | |
313 } | |
314 | |
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 | 317 public SubClassA(int value) { |
318 super(value); | |
319 } | |
320 | |
321 @Override | |
322 public int publicOverriddenMethod() { | |
323 return value + 2; | |
324 } | |
325 | |
326 @Override | |
327 protected int protectedOverriddenMethod() { | |
328 return value * 2; | |
329 } | |
330 } | |
331 | |
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 | 334 public SubClassB(int value) { |
335 super(value); | |
336 } | |
337 | |
338 @Override | |
339 public int publicOverriddenMethod() { | |
340 return value + 3; | |
341 } | |
342 | |
343 @Override | |
344 protected int protectedOverriddenMethod() { | |
345 return value * 3; | |
346 } | |
347 } | |
348 | |
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 | 351 public SubClassC(int value) { |
352 super(value); | |
353 } | |
354 | |
355 @Override | |
356 public int publicOverriddenMethod() { | |
357 return value + 4; | |
358 } | |
359 | |
360 @Override | |
361 protected int protectedOverriddenMethod() { | |
362 return value * 4; | |
363 } | |
364 } | |
365 | |
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 | 368 public FinalSubClass(int value) { |
369 super(value); | |
370 } | |
371 | |
372 @Override | |
373 public int publicOverriddenMethod() { | |
374 return value + 5; | |
375 } | |
376 | |
377 @Override | |
378 protected int protectedOverriddenMethod() { | |
379 return value * 5; | |
380 } | |
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 | 418 } |