Mercurial > hg > truffle
annotate graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/TypeSystemTest.java @ 6587:795df1687282
renamed CheckCastElimination to ConditionalElimination, plus a few small changes
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Mon, 29 Oct 2012 17:05:44 +0100 |
parents | 2e96dc4eb8e2 |
children | 8d16b9b2c51e |
rev | line source |
---|---|
4648
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
1 /* |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
4 * |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
8 * |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
13 * accompanied this code). |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
14 * |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
18 * |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
21 * questions. |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
22 */ |
6334
f8ba3bb81f6f
Renamed com.oracle.graal.tests project to com.oracle.graal.compiler.test
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5891
diff
changeset
|
23 package com.oracle.graal.compiler.test; |
4648
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
24 |
5085
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
25 import java.io.*; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
26 |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
27 import junit.framework.Assert; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
28 |
5425
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
29 import org.junit.Test; |
4648
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
30 |
5060
4ed4295ce15f
Update import statements.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5059
diff
changeset
|
31 import com.oracle.graal.debug.*; |
4ed4295ce15f
Update import statements.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5059
diff
changeset
|
32 import com.oracle.graal.graph.*; |
6360
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
33 import com.oracle.graal.graph.Node.*; |
5060
4ed4295ce15f
Update import statements.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5059
diff
changeset
|
34 import com.oracle.graal.nodes.*; |
6529
2e96dc4eb8e2
renamed package: com.oracle.graal.lir.cfg -> com.oracle.graal.nodes.cfg
Doug Simon <doug.simon@oracle.com>
parents:
6526
diff
changeset
|
35 import com.oracle.graal.nodes.cfg.*; |
5060
4ed4295ce15f
Update import statements.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5059
diff
changeset
|
36 import com.oracle.graal.nodes.java.*; |
6526
ee651c726397
split phases out of graal.phases project into graal.phases.common project
Doug Simon <doug.simon@oracle.com>
parents:
6525
diff
changeset
|
37 import com.oracle.graal.phases.common.*; |
6525
2c913b643422
rename packages in graal.phases to match project name
Doug Simon <doug.simon@oracle.com>
parents:
6360
diff
changeset
|
38 import com.oracle.graal.phases.schedule.*; |
4648
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
39 |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
40 /** |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
41 * In the following tests, the scalar type system of the compiler should be complete enough to see the relation between the different conditions. |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
42 */ |
5565
0083a59ced84
Renaming GraphTest => GraalCompilerTest.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5425
diff
changeset
|
43 public class TypeSystemTest extends GraalCompilerTest { |
4648
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
44 |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
45 @Test |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
46 public void test1() { |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
47 test("test1Snippet", CheckCastNode.class); |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
48 } |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
49 |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
50 public static int test1Snippet(Object a) { |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
51 if (a instanceof Boolean) { |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
52 return ((Boolean) a).booleanValue() ? 0 : 1; |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
53 } |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
54 return 1; |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
55 } |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
56 |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
57 @Test |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
58 public void test2() { |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
59 test("test2Snippet", CheckCastNode.class); |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
60 } |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
61 |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
62 public static int test2Snippet(Object a) { |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
63 if (a instanceof Integer) { |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
64 return ((Number) a).intValue(); |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
65 } |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
66 return 1; |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
67 } |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
68 |
5085
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
69 @Test |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
70 public void test3() { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
71 test("test3Snippet", "referenceSnippet3"); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
72 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
73 |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
74 public static int referenceSnippet3(Object o) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
75 if (o == null) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
76 return 1; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
77 } else { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
78 return 2; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
79 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
80 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
81 |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
82 @SuppressWarnings("unused") |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
83 public static int test3Snippet(Object o) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
84 if (o == null) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
85 if (o != null) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
86 return 3; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
87 } else { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
88 return 1; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
89 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
90 } else { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
91 return 2; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
92 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
93 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
94 |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
95 @Test |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
96 public void test4() { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
97 test("test4Snippet", "referenceSnippet3"); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
98 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
99 |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
100 public static final Object constantObject1 = "1"; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
101 public static final Object constantObject2 = "2"; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
102 public static final Object constantObject3 = "3"; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
103 |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
104 public static int test4Snippet(Object o) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
105 if (o == null) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
106 if (o == constantObject1) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
107 return 3; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
108 } else { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
109 return 1; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
110 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
111 } else { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
112 return 2; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
113 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
114 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
115 |
5891
fd8832ae511d
removed artifacts of defunct type system
Lukas Stadler <lukas.stadler@jku.at>
parents:
5565
diff
changeset
|
116 @Test |
5085
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
117 public void test5() { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
118 test("test5Snippet", "referenceSnippet5"); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
119 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
120 |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
121 public static int referenceSnippet5(Object o, Object a) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
122 if (o == null) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
123 if (a == constantObject1 || a == constantObject2) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
124 return 1; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
125 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
126 } else { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
127 if (a == constantObject2 || a == constantObject3) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
128 if (a != null) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
129 return 11; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
130 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
131 return 2; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
132 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
133 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
134 if (a == constantObject1) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
135 return 3; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
136 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
137 return 5; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
138 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
139 |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
140 public static int test5Snippet(Object o, Object a) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
141 if (o == null) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
142 if (a == constantObject1 || a == constantObject2) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
143 if (a == null) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
144 return 10; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
145 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
146 return 1; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
147 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
148 } else { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
149 if (a == constantObject2 || a == constantObject3) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
150 if (a != null) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
151 return 11; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
152 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
153 return 2; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
154 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
155 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
156 if (a == constantObject1) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
157 return 3; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
158 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
159 if (a == constantObject2) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
160 return 4; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
161 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
162 return 5; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
163 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
164 |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
165 @Test |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
166 public void test6() { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
167 test("test6Snippet", CheckCastNode.class); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
168 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
169 |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
170 public static int test6Snippet(int i) throws IOException { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
171 Object o = null; |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
172 |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
173 if (i == 5) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
174 o = new FileInputStream("asdf"); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
175 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
176 if (i < 10) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
177 o = new ByteArrayInputStream(new byte[]{1, 2, 3}); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
178 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
179 if (i > 0) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
180 o = new BufferedInputStream(null); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
181 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
182 |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
183 return ((InputStream) o).available(); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
184 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
185 |
5425
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
186 @SuppressWarnings("unused") |
5085
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
187 private void test(String snippet, String referenceSnippet) { |
5425
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
188 // TODO(ls) temporarily disabled, reintroduce when a proper type system is available |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
189 if (false) { |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
190 StructuredGraph graph = parse(snippet); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
191 Debug.dump(graph, "Graph"); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
192 new CanonicalizerPhase(null, runtime(), null).apply(graph); |
6587
795df1687282
renamed CheckCastElimination to ConditionalElimination, plus a few small changes
Lukas Stadler <lukas.stadler@jku.at>
parents:
6529
diff
changeset
|
193 new ConditionalEliminationPhase().apply(graph); |
5425
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
194 new CanonicalizerPhase(null, runtime(), null).apply(graph); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
195 new GlobalValueNumberingPhase().apply(graph); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
196 StructuredGraph referenceGraph = parse(referenceSnippet); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
197 new CanonicalizerPhase(null, runtime(), null).apply(referenceGraph); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
198 new GlobalValueNumberingPhase().apply(referenceGraph); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
199 assertEquals(referenceGraph, graph); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
200 } |
5085
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
201 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
202 |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
203 @Override |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
204 protected void assertEquals(StructuredGraph expected, StructuredGraph graph) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
205 if (expected.getNodeCount() != graph.getNodeCount()) { |
5425
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
206 // Debug.dump(expected, "Node count not matching - expected"); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
207 // Debug.dump(graph, "Node count not matching - actual"); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
208 // System.out.println("================ expected"); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
209 // outputGraph(expected); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
210 // System.out.println("================ actual"); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
211 // outputGraph(graph); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
212 // new IdealGraphPrinterDumpHandler().dump(graph, "asdf"); |
5085
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
213 Assert.fail("Graphs do not have the same number of nodes: " + expected.getNodeCount() + " vs. " + graph.getNodeCount()); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
214 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
215 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
216 |
6360
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
217 public static void outputGraph(StructuredGraph graph, String message) { |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
218 System.out.println("========================= " + message); |
5085
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
219 SchedulePhase schedule = new SchedulePhase(); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
220 schedule.apply(graph); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
221 for (Block block : schedule.getCFG().getBlocks()) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
222 System.out.print("Block " + block + " "); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
223 if (block == schedule.getCFG().getStartBlock()) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
224 System.out.print("* "); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
225 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
226 System.out.print("-> "); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
227 for (Block succ : block.getSuccessors()) { |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
228 System.out.print(succ + " "); |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
229 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
230 System.out.println(); |
5248
066f1687ba24
rename: nodesFor -> blockToNodesMap
Doug Simon <doug.simon@oracle.com>
parents:
5085
diff
changeset
|
231 for (Node node : schedule.getBlockToNodesMap().get(block)) { |
6360
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
232 outputNode(node); |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
233 } |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
234 } |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
235 } |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
236 |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
237 private static void outputNode(Node node) { |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
238 System.out.print(" " + node + " (usage count: " + node.usages().size() + ") (inputs:"); |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
239 for (Node input : node.inputs()) { |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
240 System.out.print(" " + input.toString(Verbosity.Id)); |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
241 } |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
242 System.out.println(")"); |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
243 if (node instanceof MergeNode) { |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
244 for (PhiNode phi : ((MergeNode) node).phis()) { |
e5203e5843fc
first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents:
6334
diff
changeset
|
245 outputNode(phi); |
5085
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
246 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
247 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
248 } |
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
249 |
5425
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
250 @SuppressWarnings("unused") |
4648
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
251 private <T extends Node & Node.IterableNodeType> void test(String snippet, Class<T> clazz) { |
5425
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
252 // TODO(ls) temporarily disabled, reintroduce when a proper type system is available |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
253 if (false) { |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
254 StructuredGraph graph = parse(snippet); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
255 Debug.dump(graph, "Graph"); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
256 new CanonicalizerPhase(null, runtime(), null).apply(graph); |
6587
795df1687282
renamed CheckCastElimination to ConditionalElimination, plus a few small changes
Lukas Stadler <lukas.stadler@jku.at>
parents:
6529
diff
changeset
|
257 new ConditionalEliminationPhase().apply(graph); |
5425
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
258 new CanonicalizerPhase(null, runtime(), null).apply(graph); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
259 Debug.dump(graph, "Graph"); |
0364a2a874b8
changes towards a canonical representation of comparisons:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5248
diff
changeset
|
260 Assert.assertFalse("shouldn't have nodes of type " + clazz, graph.getNodes(clazz).iterator().hasNext()); |
5085
5bdaa08ba96b
add and enable new PropagateTypeCachePhase, add type system tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
261 } |
4648
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
262 } |
83b4cc4df77a
experimental: added PiNode and PropagateTypesPhase
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
263 } |