annotate graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ArraysSubstitutionsTest.java @ 18158:31ad929e1afd

factored out _netbeansinit_project function
author Doug Simon <doug.simon@oracle.com>
date Wed, 22 Oct 2014 20:20:42 +0200
parents 86ec7f6f71b3
children 9619ba4daf4c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13973
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
1 /*
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
2 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
4 *
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
7 * published by the Free Software Foundation.
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
8 *
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
13 * accompanied this code).
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
14 *
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
18 *
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
21 * questions.
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
22 */
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
23 package com.oracle.graal.replacements.test;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
24
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
25 import java.util.*;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
26
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
27 import org.junit.*;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
28
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
29 import com.oracle.graal.api.code.*;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
30 import com.oracle.graal.nodes.*;
14611
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
31 import com.oracle.graal.phases.*;
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
32 import com.oracle.graal.phases.common.*;
15470
c55f44b3c5e5 remove NodesToDoubles, refactoring of node probability and inlining relevance computation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14611
diff changeset
33 import com.oracle.graal.phases.common.inlining.*;
14611
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
34 import com.oracle.graal.phases.tiers.*;
13973
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
35 import com.oracle.graal.replacements.*;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
36 import com.oracle.graal.replacements.nodes.*;
14611
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
37 import com.oracle.graal.virtual.phases.ea.*;
13973
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
38
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
39 /**
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
40 * Tests {@link ArraysSubstitutions}.
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
41 */
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
42 public class ArraysSubstitutionsTest extends MethodSubstitutionTest {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
43
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
44 private static final int N = 10;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
45
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
46 @Test
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
47 public void testEqualsBoolean() {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
48 Object[] args1 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
49 Object[] args2 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
50 int n = 0;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
51
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
52 // equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
53 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
54 args1[n] = new boolean[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
55 args2[n] = new boolean[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
56 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
57
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
58 // non-equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
59 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
60 boolean[] a2 = new boolean[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
61 if (i > 0) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
62 a2[i - 1] = true;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
63 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
64 args1[n] = new boolean[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
65 args2[n] = a2;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
66 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
67 Class<?>[] parameterTypes = new Class<?>[]{boolean[].class, boolean[].class};
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
68 testSubstitution("arraysEqualsBoolean", ArrayEqualsNode.class, Arrays.class, "equals", parameterTypes, false, args1, args2);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
69 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
70
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
71 @SuppressWarnings("all")
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
72 public static boolean arraysEqualsBoolean(boolean[] a, boolean[] b) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
73 return Arrays.equals(a, b);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
74 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
75
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
76 @Test
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
77 public void testEqualsByte() {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
78 Object[] args1 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
79 Object[] args2 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
80 int n = 0;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
81
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
82 // equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
83 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
84 args1[n] = new byte[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
85 args2[n] = new byte[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
86 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
87
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
88 // non-equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
89 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
90 byte[] a2 = new byte[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
91 if (i > 0) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
92 a2[i - 1] = 1;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
93 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
94 args1[n] = new byte[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
95 args2[n] = a2;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
96 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
97
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
98 Class<?>[] parameterTypes = new Class<?>[]{byte[].class, byte[].class};
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
99 testSubstitution("arraysEqualsByte", ArrayEqualsNode.class, Arrays.class, "equals", parameterTypes, false, args1, args2);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
100 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
101
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
102 @SuppressWarnings("all")
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
103 public static boolean arraysEqualsByte(byte[] a, byte[] b) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
104 return Arrays.equals(a, b);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
105 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
106
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
107 @Test
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
108 public void testEqualsChar() {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
109 Object[] args1 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
110 Object[] args2 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
111 int n = 0;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
112
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
113 // equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
114 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
115 args1[n] = new char[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
116 args2[n] = new char[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
117 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
118
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
119 // non-equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
120 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
121 char[] a2 = new char[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
122 if (i > 0) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
123 a2[i - 1] = 1;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
124 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
125 args1[n] = new char[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
126 args2[n] = a2;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
127 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
128
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
129 Class<?>[] parameterTypes = new Class<?>[]{char[].class, char[].class};
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
130 testSubstitution("arraysEqualsChar", ArrayEqualsNode.class, Arrays.class, "equals", parameterTypes, false, args1, args2);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
131 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
132
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
133 @SuppressWarnings("all")
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
134 public static boolean arraysEqualsChar(char[] a, char[] b) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
135 return Arrays.equals(a, b);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
136 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
137
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
138 @Test
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
139 public void testEqualsShort() {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
140 Object[] args1 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
141 Object[] args2 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
142 int n = 0;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
143
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
144 // equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
145 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
146 args1[n] = new short[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
147 args2[n] = new short[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
148 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
149
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
150 // non-equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
151 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
152 short[] a2 = new short[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
153 if (i > 0) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
154 a2[i - 1] = 1;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
155 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
156 args1[n] = new short[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
157 args2[n] = a2;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
158 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
159
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
160 Class<?>[] parameterTypes = new Class<?>[]{short[].class, short[].class};
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
161 testSubstitution("arraysEqualsShort", ArrayEqualsNode.class, Arrays.class, "equals", parameterTypes, false, args1, args2);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
162 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
163
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
164 @SuppressWarnings("all")
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
165 public static boolean arraysEqualsShort(short[] a, short[] b) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
166 return Arrays.equals(a, b);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
167 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
168
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
169 @Test
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
170 public void testEqualsInt() {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
171 Object[] args1 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
172 Object[] args2 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
173 int n = 0;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
174
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
175 // equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
176 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
177 args1[n] = new int[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
178 args2[n] = new int[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
179 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
180
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
181 // non-equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
182 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
183 int[] a2 = new int[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
184 if (i > 0) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
185 a2[i - 1] = 1;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
186 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
187 args1[n] = new int[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
188 args2[n] = a2;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
189 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
190
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
191 Class<?>[] parameterTypes = new Class<?>[]{int[].class, int[].class};
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
192 testSubstitution("arraysEqualsInt", ArrayEqualsNode.class, Arrays.class, "equals", parameterTypes, false, args1, args2);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
193 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
194
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
195 @SuppressWarnings("all")
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
196 public static boolean arraysEqualsInt(int[] a, int[] b) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
197 return Arrays.equals(a, b);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
198 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
199
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
200 @Test
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
201 public void testEqualsLong() {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
202 Object[] args1 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
203 Object[] args2 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
204 int n = 0;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
205
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
206 // equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
207 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
208 args1[n] = new long[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
209 args2[n] = new long[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
210 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
211
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
212 // non-equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
213 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
214 long[] a2 = new long[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
215 if (i > 0) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
216 a2[i - 1] = 1;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
217 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
218 args1[n] = new long[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
219 args2[n] = a2;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
220 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
221
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
222 Class<?>[] parameterTypes = new Class<?>[]{long[].class, long[].class};
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
223 testSubstitution("arraysEqualsLong", ArrayEqualsNode.class, Arrays.class, "equals", parameterTypes, false, args1, args2);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
224 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
225
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
226 @SuppressWarnings("all")
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
227 public static boolean arraysEqualsLong(long[] a, long[] b) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
228 return Arrays.equals(a, b);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
229 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
230
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
231 @Test
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
232 public void testEqualsFloat() {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
233 Object[] args1 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
234 Object[] args2 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
235 int n = 0;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
236
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
237 // equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
238 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
239 args1[n] = new float[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
240 args2[n] = new float[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
241 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
242
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
243 // non-equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
244 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
245 float[] a2 = new float[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
246 if (i > 0) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
247 a2[i - 1] = 1;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
248 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
249 args1[n] = new float[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
250 args2[n] = a2;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
251 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
252
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
253 Class<?>[] parameterTypes = new Class<?>[]{float[].class, float[].class};
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
254 testSubstitution("arraysEqualsFloat", ArrayEqualsNode.class, Arrays.class, "equals", parameterTypes, false, args1, args2);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
255 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
256
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
257 @SuppressWarnings("all")
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
258 public static boolean arraysEqualsFloat(float[] a, float[] b) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
259 return Arrays.equals(a, b);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
260 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
261
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
262 @Test
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
263 public void testEqualsDouble() {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
264 Object[] args1 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
265 Object[] args2 = new Object[N];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
266 int n = 0;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
267
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
268 // equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
269 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
270 args1[n] = new double[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
271 args2[n] = new double[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
272 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
273
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
274 // non-equal arrays
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
275 for (int i = 0; i < N / 2; i++, n++) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
276 double[] a2 = new double[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
277 if (i > 0) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
278 a2[i - 1] = 1;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
279 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
280 args1[n] = new double[i];
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
281 args2[n] = a2;
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
282 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
283
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
284 Class<?>[] parameterTypes = new Class<?>[]{double[].class, double[].class};
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
285 testSubstitution("arraysEqualsDouble", ArrayEqualsNode.class, Arrays.class, "equals", parameterTypes, false, args1, args2);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
286 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
287
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
288 @SuppressWarnings("all")
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
289 public static boolean arraysEqualsDouble(double[] a, double[] b) {
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
290 return Arrays.equals(a, b);
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
291 }
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
292
14585
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
293 @Test
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
294 public void testEqualsNodeGVN() {
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
295 test("testEqualsNodeGVNSnippet", true);
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
296 }
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
297
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
298 public static int[] intArrayCompare = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
299 public static int[] intArray;
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
300
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
301 public static boolean testEqualsNodeGVNSnippet(boolean b) {
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
302 int[] newIntArray = new int[]{0, 2, 3, 4, 5, 6, 7, 8, 9};
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
303 intArray = newIntArray;
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
304
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
305 if (b) {
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
306 newIntArray[0] = 1;
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
307 return Arrays.equals(newIntArray, intArrayCompare);
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
308 } else {
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
309 newIntArray[0] = 1;
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
310 return Arrays.equals(newIntArray, intArrayCompare);
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
311 }
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
312 }
7e9409cb656f make ArrayEqualsNode fixed instead of floating
Lukas Stadler <lukas.stadler@oracle.com>
parents: 13973
diff changeset
313
14611
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
314 @Test
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
315 public void testConstants() {
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
316 test("testConstantsSnippet");
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
317 }
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
318
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
319 public static final int[] constantArray1 = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
320 public static final int[] constantArray2 = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
321
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
322 public static boolean testConstantsSnippet() {
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
323 constantArray2[0] = 10;
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
324 try {
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
325 return Arrays.equals(constantArray1, constantArray2);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
326 } finally {
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
327 constantArray2[0] = 1;
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
328 }
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
329 }
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
330
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
331 @Test
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
332 public void testCanonicalLength() {
16714
1668de777c42 renamed GraalCompilerTest.parse to GraalCompilerTest.parseEager and improved javadoc for all parse* methods
Doug Simon <doug.simon@oracle.com>
parents: 15622
diff changeset
333 StructuredGraph graph = parseEager("testCanonicalLengthSnippet");
14611
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
334 Assumptions assumptions = new Assumptions(false);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
335 HighTierContext context = new HighTierContext(getProviders(), assumptions, null, getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
336 new InliningPhase(new CanonicalizerPhase(true)).apply(graph, context);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
337 new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders(), assumptions));
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
338
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
339 Assert.assertTrue(graph.getNodes(ReturnNode.class).first().result().asConstant().asLong() == 0);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
340 }
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
341
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
342 public static final int[] constantArray3 = new int[]{1, 2, 3};
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
343
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
344 public static boolean testCanonicalLengthSnippet() {
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
345 return Arrays.equals(constantArray1, constantArray3);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
346 }
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
347
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
348 @Test
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
349 public void testCanonicalEqual() {
16714
1668de777c42 renamed GraalCompilerTest.parse to GraalCompilerTest.parseEager and improved javadoc for all parse* methods
Doug Simon <doug.simon@oracle.com>
parents: 15622
diff changeset
350 StructuredGraph graph = parseEager("testCanonicalEqualSnippet");
14611
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
351 Assumptions assumptions = new Assumptions(false);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
352 HighTierContext context = new HighTierContext(getProviders(), assumptions, null, getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
353 new InliningPhase(new CanonicalizerPhase(true)).apply(graph, context);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
354 new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders(), assumptions));
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
355
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
356 Assert.assertTrue(graph.getNodes(ReturnNode.class).first().result().asConstant().asLong() == 1);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
357 }
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
358
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
359 public static boolean testCanonicalEqualSnippet() {
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
360 return Arrays.equals(constantArray1, constantArray1);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
361 }
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
362
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
363 @Test
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
364 public void testVirtualEqual() {
16714
1668de777c42 renamed GraalCompilerTest.parse to GraalCompilerTest.parseEager and improved javadoc for all parse* methods
Doug Simon <doug.simon@oracle.com>
parents: 15622
diff changeset
365 StructuredGraph graph = parseEager("testVirtualEqualSnippet");
14611
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
366 Assumptions assumptions = new Assumptions(false);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
367 HighTierContext context = new HighTierContext(getProviders(), assumptions, null, getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
368 new InliningPhase(new CanonicalizerPhase(true)).apply(graph, context);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
369 new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders(), assumptions));
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
370 new PartialEscapePhase(false, new CanonicalizerPhase(false)).apply(graph, context);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
371 new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders(), assumptions));
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
372
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
373 Assert.assertTrue(graph.getNodes(ReturnNode.class).first().result().asConstant().asLong() == 1);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
374 }
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
375
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
376 public static boolean testVirtualEqualSnippet() {
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
377 int[] array1 = new int[]{1, 2, 3, 4};
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
378 int[] array2 = new int[]{1, 2, 3, 4};
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
379 return Arrays.equals(array1, array2);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
380 }
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
381
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
382 @Test
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
383 public void testVirtualNotEqual() {
16714
1668de777c42 renamed GraalCompilerTest.parse to GraalCompilerTest.parseEager and improved javadoc for all parse* methods
Doug Simon <doug.simon@oracle.com>
parents: 15622
diff changeset
384 StructuredGraph graph = parseEager("testVirtualNotEqualSnippet");
14611
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
385 Assumptions assumptions = new Assumptions(false);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
386 HighTierContext context = new HighTierContext(getProviders(), assumptions, null, getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
387 new InliningPhase(new CanonicalizerPhase(true)).apply(graph, context);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
388 new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders(), assumptions));
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
389 new PartialEscapePhase(false, new CanonicalizerPhase(false)).apply(graph, context);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
390 new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders(), assumptions));
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
391
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
392 Assert.assertTrue(graph.getNodes(ReturnNode.class).first().result().asConstant().asLong() == 0);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
393 }
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
394
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
395 public static boolean testVirtualNotEqualSnippet(int x) {
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
396 int[] array1 = new int[]{1, 2, 100, x};
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
397 int[] array2 = new int[]{1, 2, 3, 4};
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
398 return Arrays.equals(array1, array2);
1d853e629891 fixed canonicalization of ArrayEqualsNode, added Virtualizable implementation
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14585
diff changeset
399 }
13973
faa6fda7ee36 added Arrays.equals substitutions
twisti
parents:
diff changeset
400 }