blob: 141a08983b7e94c5cbe8d2c1387a6173c876f680 [file] [log] [blame]
jeffhao5d1ac922011-09-29 17:41:15 -07001/*
2 * Copyright (C) 2007 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17import junit.framework.Assert;
Vladimir Marko85bef972017-02-17 10:18:57 +000018import java.util.Locale;
jeffhao5d1ac922011-09-29 17:41:15 -070019
20/**
21 * more string tests
22 */
23public class Main {
Vladimir Markocb64b852018-11-28 10:54:48 +000024 public static void main(String args[]) {
jeffhao5d1ac922011-09-29 17:41:15 -070025 String test = "0123456789";
26 String test1 = new String("0123456789"); // different object
27 String test2 = new String("0123456780"); // different value
28 String offset = new String("xxx0123456789yyy");
29 String sub = offset.substring(3, 13);
30 Object blah = new Object();
31
32 Assert.assertTrue(test.equals(test));
33 Assert.assertTrue(test.equals(test1));
34 Assert.assertFalse(test.equals(test2));
35
36 Assert.assertEquals(test.compareTo(test1), 0);
37 Assert.assertTrue(test1.compareTo(test2) > 0);
38 Assert.assertTrue(test2.compareTo(test1) < 0);
39
Alexei Zavjalov4554bfd2014-02-26 17:28:35 +070040 Assert.assertEquals("".compareTo(""), 0);
41 Assert.assertTrue(test.compareTo("") > 0);
42 Assert.assertTrue("".compareTo(test) < 0);
43
jeffhao5d1ac922011-09-29 17:41:15 -070044 /* compare string with a nonzero offset, in left/right side */
45 Assert.assertEquals(test.compareTo(sub), 0);
46 Assert.assertEquals(sub.compareTo(test), 0);
47 Assert.assertTrue(test.equals(sub));
48 Assert.assertTrue(sub.equals(test));
49 /* same base, one is a substring */
50 Assert.assertFalse(offset.equals(sub));
51 Assert.assertFalse(sub.equals(offset));
52 /* wrong class */
53 Assert.assertFalse(test.equals(blah));
54
55 /* null ptr - throw */
56 try {
57 test.compareTo(null);
58 Assert.fail("didn't get expected npe");
59 } catch (NullPointerException npe) {
60 System.out.println("Got expected npe");
61 }
62 /* null ptr - ok */
63 Assert.assertFalse(test.equals(null));
64
65 test = test.substring(1);
66 Assert.assertTrue(test.equals("123456789"));
67 Assert.assertFalse(test.equals(test1));
68
69 test = test.substring(1);
70 Assert.assertTrue(test.equals("23456789"));
71
72 test = test.substring(1);
73 Assert.assertTrue(test.equals("3456789"));
74
75 test = test.substring(1);
76 Assert.assertTrue(test.equals("456789"));
77
78 test = test.substring(3,5);
79 Assert.assertTrue(test.equals("78"));
80
81 test = "this/is/a/path";
82 String[] strings = test.split("/");
83 Assert.assertEquals(4, strings.length);
84
85 Assert.assertEquals("this is a path", test.replaceAll("/", " "));
86 Assert.assertEquals("this is a path", test.replace("/", " "));
Jeff Hao848f70a2014-01-15 13:49:50 -080087
Vladimir Markocb64b852018-11-28 10:54:48 +000088 String result = new String(new char[] { 'O', 'K' });
Jeff Hao848f70a2014-01-15 13:49:50 -080089 System.out.println(result);
Vladimir Marko9c9883b2016-10-17 14:45:29 +010090
91 testCompareToAndEquals();
92 testIndexOf();
Vladimir Marko16850ae2016-12-09 14:01:02 +000093
94 String s0_0 = "\u0000";
95 String s0_1 = new String(s0_0);
96 String s0_2 = new String(new char[] { '\u0000' });
97 String s0_3 = s0_0 + "";
98 System.out.println(
99 " " + $noinline$equals(s0_0, s0_0) +
100 " " + $noinline$equals(s0_0, s0_1) +
101 " " + $noinline$equals(s0_0, s0_2) +
102 " " + $noinline$equals(s0_0, s0_3));
103 System.out.println(
104 " " + $noinline$equals(s0_1, s0_0) +
105 " " + $noinline$equals(s0_1, s0_1) +
106 " " + $noinline$equals(s0_1, s0_2) +
107 " " + $noinline$equals(s0_1, s0_3));
108 System.out.println(
109 " " + $noinline$equals(s0_2, s0_0) +
110 " " + $noinline$equals(s0_2, s0_1) +
111 " " + $noinline$equals(s0_2, s0_2) +
112 " " + $noinline$equals(s0_2, s0_3));
113 System.out.println(
114 " " + $noinline$equals(s0_3, s0_0) +
115 " " + $noinline$equals(s0_3, s0_1) +
116 " " + $noinline$equals(s0_3, s0_2) +
117 " " + $noinline$equals(s0_3, s0_3));
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000118
119 testEqualsConstString();
120 testConstStringEquals();
Vladimir Marko85bef972017-02-17 10:18:57 +0000121
122 // Regression tests for String.setCharAt() breaking string compression invariants.
123 Locale en_US = new Locale("en", "US");
124 Assert.assertEquals("I", /* Small latin dotless i */ "\u0131".toUpperCase());
125 Assert.assertEquals("abc", "a\u0131c".replace('\u0131', 'b'));
126 Assert.assertEquals("a\u0131c", "abc".replace('b', '\u0131'));
Vladimir Marko26ec3ca2017-03-14 13:37:14 +0000127
128 // Regression test for scratch register exhaustion in String.equals() intrinsic on arm64.
129 Assert.assertFalse(result.equals("Very long constant string, so that the known constant count field cannot be embedded in a CMP immediate instruction on arm64. Since it can hold 12-bit values, optionally shifted left by 12, let's go somewhere over 2^12, i.e. 4096. That should trigger the bug with or without string compression. 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/"));
jeffhao5d1ac922011-09-29 17:41:15 -0700130 }
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100131
132 public static void testCompareToAndEquals() {
133 String[] strings = {
134 // Special: empty string.
135 "",
136 // Category 0, ASCII strings:
137 // "0123456789abcdef".substring(0, index + 1)
138 "0",
139 "01",
140 "012",
141 "0123",
142 "01234",
143 "012345",
144 "0123456",
145 "01234567",
146 "012345678",
147 "0123456789",
148 "0123456789a",
149 "0123456789ab",
150 "0123456789abc",
151 "0123456789abcd",
152 "0123456789abcde",
153 "0123456789abcdef",
154 // Category 1, ASCII strings:
155 // "0123456789abcdef".substring(0, index) + "x"
156 "x",
157 "0x",
158 "01x",
159 "012x",
160 "0123x",
161 "01234x",
162 "012345x",
163 "0123456x",
164 "01234567x",
165 "012345678x",
166 "0123456789x",
167 "0123456789ax",
168 "0123456789abx",
169 "0123456789abcx",
170 "0123456789abcdx",
171 "0123456789abcdex",
172 // Category 2, ASCII strings,
173 // "0123456789abcdef".substring(0, index) + "x" +
174 // "0123456789abcdef".substring(index + 1)
175 "x123456789abcdef",
176 "0x23456789abcdef",
177 "01x3456789abcdef",
178 "012x456789abcdef",
179 "0123x56789abcdef",
180 "01234x6789abcdef",
181 "012345x789abcdef",
182 "0123456x89abcdef",
183 "01234567x9abcdef",
184 "012345678xabcdef",
185 "0123456789xbcdef",
186 "0123456789axcdef",
187 "0123456789abxdef",
188 "0123456789abcxef",
189 "0123456789abcdxf",
190 "0123456789abcdex",
191 // Category 3, ASCII strings:
192 // "z" + "0123456789abcdef".substring(1, index + 1)
193 "z",
194 "z1",
195 "z12",
196 "z123",
197 "z1234",
198 "z12345",
199 "z123456",
200 "z1234567",
201 "z12345678",
202 "z123456789",
203 "z123456789a",
204 "z123456789ab",
205 "z123456789abc",
206 "z123456789abcd",
207 "z123456789abcde",
208 "z123456789abcdef",
209 // Category 4, non-ASCII strings:
210 // "0123456789abcdef".substring(0, index) + "\u0440"
211 "\u0440",
212 "0\u0440",
213 "01\u0440",
214 "012\u0440",
215 "0123\u0440",
216 "01234\u0440",
217 "012345\u0440",
218 "0123456\u0440",
219 "01234567\u0440",
220 "012345678\u0440",
221 "0123456789\u0440",
222 "0123456789a\u0440",
223 "0123456789ab\u0440",
224 "0123456789abc\u0440",
225 "0123456789abcd\u0440",
226 "0123456789abcde\u0440",
227 // Category 5, non-ASCII strings:
228 // "0123456789abcdef".substring(0, index) + "\u0440" +
229 // "0123456789abcdef".substring(index + 1)
230 "\u0440123456789abcdef",
231 "0\u044023456789abcdef",
232 "01\u04403456789abcdef",
233 "012\u0440456789abcdef",
234 "0123\u044056789abcdef",
235 "01234\u04406789abcdef",
236 "012345\u0440789abcdef",
237 "0123456\u044089abcdef",
238 "01234567\u04409abcdef",
239 "012345678\u0440abcdef",
240 "0123456789\u0440bcdef",
241 "0123456789a\u0440cdef",
242 "0123456789ab\u0440def",
243 "0123456789abc\u0440ef",
244 "0123456789abcd\u0440f",
245 "0123456789abcde\u0440",
246 // Category 6, ASCII strings:
247 // "\u0443" + "0123456789abcdef".substring(1, index + 1)
248 "\u0443",
249 "\u04431",
250 "\u044312",
251 "\u0443123",
252 "\u04431234",
253 "\u044312345",
254 "\u0443123456",
255 "\u04431234567",
256 "\u044312345678",
257 "\u0443123456789",
258 "\u0443123456789a",
259 "\u0443123456789ab",
260 "\u0443123456789abc",
261 "\u0443123456789abcd",
262 "\u0443123456789abcde",
263 "\u0443123456789abcdef",
264 // Category 7, non-ASCII strings:
265 // "0123456789abcdef".substring(0, index) + "\u0482"
266 "\u0482",
267 "0\u0482",
268 "01\u0482",
269 "012\u0482",
270 "0123\u0482",
271 "01234\u0482",
272 "012345\u0482",
273 "0123456\u0482",
274 "01234567\u0482",
275 "012345678\u0482",
276 "0123456789\u0482",
277 "0123456789a\u0482",
278 "0123456789ab\u0482",
279 "0123456789abc\u0482",
280 "0123456789abcd\u0482",
281 "0123456789abcde\u0482",
282 // Category 8, non-ASCII strings:
283 // "0123456789abcdef".substring(0, index) + "\u0482" +
284 // "0123456789abcdef".substring(index + 1)
285 "\u0482123456789abcdef",
286 "0\u048223456789abcdef",
287 "01\u04823456789abcdef",
288 "012\u0482456789abcdef",
289 "0123\u048256789abcdef",
290 "01234\u04826789abcdef",
291 "012345\u0482789abcdef",
292 "0123456\u048289abcdef",
293 "01234567\u04829abcdef",
294 "012345678\u0482abcdef",
295 "0123456789\u0482bcdef",
296 "0123456789a\u0482cdef",
297 "0123456789ab\u0482def",
298 "0123456789abc\u0482ef",
299 "0123456789abcd\u0482f",
300 "0123456789abcde\u0482",
301 // Category 9, ASCII strings:
302 // "\u0489" + "0123456789abcdef".substring(1, index + 1)
303 "\u0489",
304 "\u04891",
305 "\u048912",
306 "\u0489123",
307 "\u04891234",
308 "\u048912345",
309 "\u0489123456",
310 "\u04891234567",
311 "\u048912345678",
312 "\u0489123456789",
313 "\u0489123456789a",
314 "\u0489123456789ab",
315 "\u0489123456789abc",
316 "\u0489123456789abcd",
317 "\u0489123456789abcde",
318 "\u0489123456789abcdef",
319 };
320 int length = strings.length;
321 Assert.assertEquals(1 + 16 * 10, length);
322 for (int i = 0; i != length; ++i) {
323 String lhs = strings[i];
324 for (int j = 0; j != length; ++j) {
325 String rhs = strings[j];
326 int result = $noinline$compareTo(lhs, rhs);
327 final int expected;
328 if (i == 0 || j == 0 || i == j) {
329 // One of the strings is empty or the strings are the same.
330 expected = lhs.length() - rhs.length();
331 } else {
332 int i_category = (i - 1) / 16;
333 int i_index = (i - 1) % 16;
334 int j_category = (j - 1) / 16;
335 int j_index = (j - 1) % 16;
336 int min_ij_index = (i_index < j_index) ? i_index : j_index;
337 if (i_category == j_category) {
338 switch (i_category) {
339 case 0: case 3: case 6: case 9:
340 // Differs in length.
341 expected = lhs.length() - rhs.length();
342 break;
343 case 1: case 2: case 4: case 5: case 7: case 8:
344 // Differs in charAt(min_ij_index).
345 expected = lhs.charAt(min_ij_index) - rhs.charAt(min_ij_index);
346 break;
347 default: throw new Error("Unexpected category.");
348 }
349 } else if (i_category == 3 || i_category == 6 || i_category == 9 ||
350 j_category == 3 || j_category == 6 || j_category == 9) {
351 // In these categories, charAt(0) differs from other categories' strings.
352 expected = lhs.charAt(0) - rhs.charAt(0);
353 } else if (// Category 0 string is a prefix to any longer string in
354 // remaining categories.
355 (i_category == 0 && i_index < j_index) ||
356 (j_category == 0 && j_index < i_index) ||
357 // Category 2 string is a prefix to category 3 string at the same
358 // index. Similar for categories 4 and 5 and also 7 and 8.
359 // This includes matching last strings of these pairs of categories.
360 (i_index == j_index &&
361 ((i_category == 1 && j_category == 2) ||
362 (i_category == 2 && j_category == 1) ||
363 (i_category == 4 && j_category == 5) ||
364 (i_category == 5 && j_category == 4) ||
365 (i_category == 7 && j_category == 8) ||
366 (i_category == 8 && j_category == 7)))) {
367 // Differs in length.
368 expected = lhs.length() - rhs.length();
369 } else {
370 // The remaining cases differ in charAt(min_ij_index), the characters
371 // before that are "0123456789abcdef".substring(0, min_ij_index).
372 for (int k = 0; k < min_ij_index; ++k) {
373 Assert.assertEquals("0123456789abcdef".charAt(k), lhs.charAt(k));
374 Assert.assertEquals("0123456789abcdef".charAt(k), rhs.charAt(k));
375 }
376 expected = lhs.charAt(min_ij_index) - rhs.charAt(min_ij_index);
377 Assert.assertFalse(expected == 0);
378 }
379 }
380 if (expected != result) {
381 throw new Error(
382 "Mismatch at i=" + i + ", j=" + j + ", expected=" + expected +
383 ", result=" + result);
384 }
385 boolean equalsExpected =
386 (i == j) ||
387 // Last string in categories 1 and 2.
388 (i == 32 && j == 48) || (i == 48 && j == 32) ||
389 // Last string in categories 4 and 5.
390 (i == 80 && j == 96) || (i == 96 && j == 80) ||
391 // Last string in categories 7 and 8.
392 (i == 128 && j == 144) || (i == 144 && j == 128);
393 Assert.assertEquals(equalsExpected, $noinline$equals(lhs, rhs));
394 }
395 }
396
397 try {
398 $noinline$compareTo("", null);
399 Assert.fail();
400 } catch (NullPointerException expected) {
401 }
402 try {
403 $noinline$compareTo(null, "");
404 Assert.fail();
405 } catch (NullPointerException expected) {
406 }
407
408 Assert.assertFalse($noinline$equals("", null));
409 try {
410 $noinline$equals(null, "");
411 Assert.fail();
412 } catch (NullPointerException expected) {
413 }
414 }
415
416 public static void testIndexOf() {
417 String[] prefixes = {
418 "",
419 "0",
420 "01",
421 "012",
422 "0123",
423 "01234",
424 "012345",
425 "0123456",
426 "01234567",
427 "012345678",
428 "0123456789",
429 "0123456789a",
430 "0123456789ab",
431 "0123456789abc",
432 "0123456789abcd",
433 "0123456789abcdef",
434 };
435 String[] cores = {
436 "",
437 "x",
438 "xx",
439 "xxx",
440 "xxxx",
441 "xxxxx",
442 "xxxxxx",
443 "xxxxxxx",
444 "xxxxxxxx",
445 "xzx",
446 "xxzx",
447 "xxxzx",
448 "xxxxzx",
449 "xxxxxzx",
450 "xxxxxxzx",
451 "xxxxxxxzx",
452 "xxxxxxxxzx",
453 "\u0440",
454 "\u0440\u0440",
455 "\u0440\u0440\u0440",
456 "\u0440\u0440\u0440\u0440",
457 "\u0440\u0440\u0440\u0440\u0440",
458 "\u0440\u0440\u0440\u0440\u0440\u0440",
459 "\u0440\u0440\u0440\u0440\u0440\u0440\u0440",
460 "\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440",
461 "\u0440z\u0440",
462 "\u0440\u0440z\u0440",
463 "\u0440\u0440\u0440z\u0440",
464 "\u0440\u0440\u0440\u0440z\u0440",
465 "\u0440\u0440\u0440\u0440\u0440z\u0440",
466 "\u0440\u0440\u0440\u0440\u0440\u0440z\u0440",
467 "\u0440\u0440\u0440\u0440\u0440\u0440\u0440z\u0440",
468 "\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440z\u0440",
Vladimir Markofdaf0f42016-10-13 19:29:53 +0100469 "\u0000",
470 "\u0000\u0000",
471 "\u0000\u0000\u0000",
472 "\u0000\u0000\u0000\u0000",
473 "\u0000\u0000\u0000\u0000\u0000",
474 "\u0000\u0000\u0000\u0000\u0000\u0000",
475 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000",
476 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000",
477 "\u0000z\u0000",
478 "\u0000\u0000z\u0000",
479 "\u0000\u0000\u0000z\u0000",
480 "\u0000\u0000\u0000\u0000z\u0000",
481 "\u0000\u0000\u0000\u0000\u0000z\u0000",
482 "\u0000\u0000\u0000\u0000\u0000\u0000z\u0000",
483 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000z\u0000",
484 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000z\u0000",
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100485 };
486 String[] suffixes = {
487 "",
488 "y",
489 "yy",
490 "yyy",
491 "yyyy",
492 "yyyyy",
493 "yyyyyy",
494 "yyyyyyy",
495 "yyyyyyyy",
496 "\u0441",
497 "y\u0441",
498 "yy\u0441",
499 "yyy\u0441",
500 "yyyy\u0441",
501 "yyyyy\u0441",
502 "yyyyyy\u0441",
503 "yyyyyyy\u0441",
504 "yyyyyyyy\u0441",
505 };
506 for (String p : prefixes) {
507 for (String c : cores) {
508 for (String s : suffixes) {
509 String full = p + c + s;
510 int expX = (c.isEmpty() || c.charAt(0) != 'x') ? -1 : p.length();
511 int exp0440 = (c.isEmpty() || c.charAt(0) != '\u0440') ? -1 : p.length();
Vladimir Markofdaf0f42016-10-13 19:29:53 +0100512 int exp0000 = (c.isEmpty() || c.charAt(0) != '\u0000') ? -1 : p.length();
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100513 Assert.assertEquals(expX, $noinline$indexOf(full, 'x'));
514 Assert.assertEquals(exp0440, $noinline$indexOf(full, '\u0440'));
Vladimir Markofdaf0f42016-10-13 19:29:53 +0100515 Assert.assertEquals(exp0000, $noinline$indexOf(full, '\u0000'));
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100516 Assert.assertEquals(expX, $noinline$indexOf(full, 'x', -1));
517 Assert.assertEquals(exp0440, $noinline$indexOf(full, '\u0440', -1));
Vladimir Markofdaf0f42016-10-13 19:29:53 +0100518 Assert.assertEquals(exp0000, $noinline$indexOf(full, '\u0000', -1));
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100519 Assert.assertEquals(-1, $noinline$indexOf(full, 'x', full.length() + 1));
520 Assert.assertEquals(-1, $noinline$indexOf(full, '\u0440', full.length() + 1));
Vladimir Markofdaf0f42016-10-13 19:29:53 +0100521 Assert.assertEquals(-1, $noinline$indexOf(full, '\u0000', full.length() + 1));
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100522 for (int from = 0; from != full.length(); ++from) {
523 final int eX;
524 final int e0440;
Vladimir Markofdaf0f42016-10-13 19:29:53 +0100525 final int e0000;
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100526 if (from <= p.length()) {
527 eX = expX;
528 e0440 = exp0440;
Vladimir Markofdaf0f42016-10-13 19:29:53 +0100529 e0000 = exp0000;
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100530 } else if (from >= p.length() + c.length()) {
531 eX = -1;
532 e0440 = -1;
Vladimir Markofdaf0f42016-10-13 19:29:53 +0100533 e0000 = -1;
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100534 } else if (full.charAt(from) == 'z') {
535 eX = (full.charAt(from + 1) != 'x') ? -1 : from + 1;
536 e0440 = (full.charAt(from + 1) != '\u0440') ? -1 : from + 1;
Vladimir Markofdaf0f42016-10-13 19:29:53 +0100537 e0000 = (full.charAt(from + 1) != '\u0000') ? -1 : from + 1;
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100538 } else {
539 eX = (full.charAt(from) != 'x') ? -1 : from;
540 e0440 = (full.charAt(from) != '\u0440') ? -1 : from;
Vladimir Markofdaf0f42016-10-13 19:29:53 +0100541 e0000 = (full.charAt(from) != '\u0000') ? -1 : from;
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100542 }
543 Assert.assertEquals(eX, $noinline$indexOf(full, 'x', from));
544 Assert.assertEquals(e0440, $noinline$indexOf(full, '\u0440', from));
Vladimir Markofdaf0f42016-10-13 19:29:53 +0100545 Assert.assertEquals(e0000, $noinline$indexOf(full, '\u0000', from));
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100546 }
547 }
548 }
549 }
550 }
551
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000552 public static void testEqualsConstString() {
553 Assert.assertTrue($noinline$equalsConstString0(""));
554 Assert.assertFalse($noinline$equalsConstString0("1"));
555
Vladimir Marko984519c2017-08-23 10:45:29 +0100556 Assert.assertTrue($noinline$equalsConstString3("012"));
557 Assert.assertFalse($noinline$equalsConstString3("01"));
558 Assert.assertFalse($noinline$equalsConstString3("0123"));
559 Assert.assertFalse($noinline$equalsConstString3("01x"));
560 Assert.assertFalse($noinline$equalsConstString3("01\u0440"));
561
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000562 Assert.assertTrue($noinline$equalsConstString7("0123456"));
563 Assert.assertFalse($noinline$equalsConstString7("012345"));
564 Assert.assertFalse($noinline$equalsConstString7("01234567"));
565 Assert.assertFalse($noinline$equalsConstString7("012345x"));
566 Assert.assertFalse($noinline$equalsConstString7("012345\u0440"));
567
Vladimir Marko984519c2017-08-23 10:45:29 +0100568 Assert.assertTrue($noinline$equalsConstString12("012345678901"));
569 Assert.assertFalse($noinline$equalsConstString12("01234567890"));
570 Assert.assertFalse($noinline$equalsConstString12("0123456789012"));
571 Assert.assertFalse($noinline$equalsConstString12("01234567890x"));
572 Assert.assertFalse($noinline$equalsConstString12("01234567890\u0440"));
573
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000574 Assert.assertTrue($noinline$equalsConstString14("01234567890123"));
575 Assert.assertFalse($noinline$equalsConstString14("0123456789012"));
576 Assert.assertFalse($noinline$equalsConstString14("012345678901234"));
577 Assert.assertFalse($noinline$equalsConstString14("0123456789012x"));
578 Assert.assertFalse($noinline$equalsConstString14("0123456789012\u0440"));
579
580 Assert.assertTrue($noinline$equalsConstString24("012345678901234567890123"));
581 Assert.assertFalse($noinline$equalsConstString24("01234567890123456789012"));
582 Assert.assertFalse($noinline$equalsConstString24("0123456789012345678901234"));
583 Assert.assertFalse($noinline$equalsConstString24("01234567890123456789012x"));
584 Assert.assertFalse($noinline$equalsConstString24("01234567890123456789012\u0440"));
585
586 Assert.assertTrue($noinline$equalsConstString29("01234567890123456789012345678"));
587 Assert.assertFalse($noinline$equalsConstString29("0123456789012345678901234567"));
588 Assert.assertFalse($noinline$equalsConstString29("012345678901234567890123456789"));
589 Assert.assertFalse($noinline$equalsConstString29("0123456789012345678901234567x"));
590 Assert.assertFalse($noinline$equalsConstString29("0123456789012345678901234567\u0440"));
591
592 Assert.assertTrue($noinline$equalsConstString35("01234567890123456789012345678901234"));
593 Assert.assertFalse($noinline$equalsConstString35("0123456789012345678901234567890123"));
594 Assert.assertFalse($noinline$equalsConstString35("012345678901234567890123456789012345"));
595 Assert.assertFalse($noinline$equalsConstString35("0123456789012345678901234567890123x"));
596 Assert.assertFalse(
597 $noinline$equalsConstString35("0123456789012345678901234567890123\u0440"));
598
Vladimir Marko984519c2017-08-23 10:45:29 +0100599 Assert.assertTrue($noinline$equalsConstNonAsciiString3("\u044012"));
600 Assert.assertFalse($noinline$equalsConstNonAsciiString3("\u04401"));
601 Assert.assertFalse($noinline$equalsConstNonAsciiString3("\u0440123"));
602 Assert.assertFalse($noinline$equalsConstNonAsciiString3("\u04401x"));
603 Assert.assertFalse($noinline$equalsConstNonAsciiString3("012"));
604
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000605 Assert.assertTrue($noinline$equalsConstNonAsciiString7("\u0440123456"));
606 Assert.assertFalse($noinline$equalsConstNonAsciiString7("\u044012345"));
607 Assert.assertFalse($noinline$equalsConstNonAsciiString7("\u04401234567"));
608 Assert.assertFalse($noinline$equalsConstNonAsciiString7("\u044012345x"));
609 Assert.assertFalse($noinline$equalsConstNonAsciiString7("0123456"));
610
Vladimir Marko984519c2017-08-23 10:45:29 +0100611 Assert.assertTrue($noinline$equalsConstNonAsciiString12("\u044012345678901"));
612 Assert.assertFalse($noinline$equalsConstNonAsciiString12("\u04401234567890"));
613 Assert.assertFalse($noinline$equalsConstNonAsciiString12("\u0440123456789012"));
614 Assert.assertFalse($noinline$equalsConstNonAsciiString12("\u04401234567890x"));
615 Assert.assertFalse($noinline$equalsConstNonAsciiString12("012345678901"));
616
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000617 Assert.assertTrue($noinline$equalsConstNonAsciiString14("\u04401234567890123"));
618 Assert.assertFalse($noinline$equalsConstNonAsciiString14("\u0440123456789012"));
619 Assert.assertFalse($noinline$equalsConstNonAsciiString14("\u044012345678901234"));
620 Assert.assertFalse($noinline$equalsConstNonAsciiString14("\u0440123456789012x"));
621 Assert.assertFalse($noinline$equalsConstNonAsciiString14("01234567890123"));
622
623 Assert.assertTrue($noinline$equalsConstNonAsciiString24("\u044012345678901234567890123"));
624 Assert.assertFalse($noinline$equalsConstNonAsciiString24("\u04401234567890123456789012"));
625 Assert.assertFalse($noinline$equalsConstNonAsciiString24("\u0440123456789012345678901234"));
626 Assert.assertFalse($noinline$equalsConstNonAsciiString24("\u04401234567890123456789012x"));
627 Assert.assertFalse($noinline$equalsConstNonAsciiString24("\012345678901234567890123"));
628
629 Assert.assertTrue(
630 $noinline$equalsConstNonAsciiString29("\u04401234567890123456789012345678"));
631 Assert.assertFalse(
632 $noinline$equalsConstNonAsciiString29("\u0440123456789012345678901234567"));
633 Assert.assertFalse(
634 $noinline$equalsConstNonAsciiString29("\u044012345678901234567890123456789"));
635 Assert.assertFalse(
636 $noinline$equalsConstNonAsciiString29("\u0440123456789012345678901234567x"));
637 Assert.assertFalse($noinline$equalsConstNonAsciiString29("01234567890123456789012345678"));
638
639 Assert.assertTrue(
640 $noinline$equalsConstNonAsciiString35("\u04401234567890123456789012345678901234"));
641 Assert.assertFalse(
642 $noinline$equalsConstNonAsciiString35("\u0440123456789012345678901234567890123"));
643 Assert.assertFalse(
644 $noinline$equalsConstNonAsciiString35("\u044012345678901234567890123456789012345"));
645 Assert.assertFalse(
646 $noinline$equalsConstNonAsciiString35("\u0440123456789012345678901234567890123x"));
647 Assert.assertFalse(
648 $noinline$equalsConstNonAsciiString35("01234567890123456789012345678901234"));
649 }
650
651 public static void testConstStringEquals() {
652 Assert.assertTrue($noinline$constString0Equals(""));
653 Assert.assertFalse($noinline$constString0Equals("1"));
654
Vladimir Marko984519c2017-08-23 10:45:29 +0100655 Assert.assertTrue($noinline$constString3Equals("012"));
656 Assert.assertFalse($noinline$constString3Equals("01"));
657 Assert.assertFalse($noinline$constString3Equals("0123"));
658 Assert.assertFalse($noinline$constString3Equals("01x"));
659 Assert.assertFalse($noinline$constString3Equals("01\u0440"));
660
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000661 Assert.assertTrue($noinline$constString7Equals("0123456"));
662 Assert.assertFalse($noinline$constString7Equals("012345"));
663 Assert.assertFalse($noinline$constString7Equals("01234567"));
664 Assert.assertFalse($noinline$constString7Equals("012345x"));
665 Assert.assertFalse($noinline$constString7Equals("012345\u0440"));
666
Vladimir Marko984519c2017-08-23 10:45:29 +0100667 Assert.assertTrue($noinline$constString12Equals("012345678901"));
668 Assert.assertFalse($noinline$constString12Equals("01234567890"));
669 Assert.assertFalse($noinline$constString12Equals("0123456789012"));
670 Assert.assertFalse($noinline$constString12Equals("01234567890x"));
671 Assert.assertFalse($noinline$constString12Equals("01234567890\u0440"));
672
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000673 Assert.assertTrue($noinline$constString14Equals("01234567890123"));
674 Assert.assertFalse($noinline$constString14Equals("0123456789012"));
675 Assert.assertFalse($noinline$constString14Equals("012345678901234"));
676 Assert.assertFalse($noinline$constString14Equals("0123456789012x"));
677 Assert.assertFalse($noinline$constString14Equals("0123456789012\u0440"));
678
679 Assert.assertTrue($noinline$constString24Equals("012345678901234567890123"));
680 Assert.assertFalse($noinline$constString24Equals("01234567890123456789012"));
681 Assert.assertFalse($noinline$constString24Equals("0123456789012345678901234"));
682 Assert.assertFalse($noinline$constString24Equals("01234567890123456789012x"));
683 Assert.assertFalse($noinline$constString24Equals("01234567890123456789012\u0440"));
684
685 Assert.assertTrue($noinline$constString29Equals("01234567890123456789012345678"));
686 Assert.assertFalse($noinline$constString29Equals("0123456789012345678901234567"));
687 Assert.assertFalse($noinline$constString29Equals("012345678901234567890123456789"));
688 Assert.assertFalse($noinline$constString29Equals("0123456789012345678901234567x"));
689 Assert.assertFalse($noinline$constString29Equals("0123456789012345678901234567\u0440"));
690
691 Assert.assertTrue($noinline$constString35Equals("01234567890123456789012345678901234"));
692 Assert.assertFalse($noinline$constString35Equals("0123456789012345678901234567890123"));
693 Assert.assertFalse($noinline$constString35Equals("012345678901234567890123456789012345"));
694 Assert.assertFalse($noinline$constString35Equals("0123456789012345678901234567890123x"));
695 Assert.assertFalse(
696 $noinline$constString35Equals("0123456789012345678901234567890123\u0040"));
697
Vladimir Marko984519c2017-08-23 10:45:29 +0100698 Assert.assertTrue($noinline$constNonAsciiString3Equals("\u044012"));
699 Assert.assertFalse($noinline$constNonAsciiString3Equals("\u04401"));
700 Assert.assertFalse($noinline$constNonAsciiString3Equals("\u0440123"));
701 Assert.assertFalse($noinline$constNonAsciiString3Equals("\u04401x"));
702 Assert.assertFalse($noinline$constNonAsciiString3Equals("0123456"));
703
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000704 Assert.assertTrue($noinline$constNonAsciiString7Equals("\u0440123456"));
705 Assert.assertFalse($noinline$constNonAsciiString7Equals("\u044012345"));
706 Assert.assertFalse($noinline$constNonAsciiString7Equals("\u04401234567"));
707 Assert.assertFalse($noinline$constNonAsciiString7Equals("\u044012345x"));
708 Assert.assertFalse($noinline$constNonAsciiString7Equals("0123456"));
709
Vladimir Marko984519c2017-08-23 10:45:29 +0100710 Assert.assertTrue($noinline$constNonAsciiString12Equals("\u044012345678901"));
711 Assert.assertFalse($noinline$constNonAsciiString12Equals("\u04401234567890"));
712 Assert.assertFalse($noinline$constNonAsciiString12Equals("\u0440123456789012"));
713 Assert.assertFalse($noinline$constNonAsciiString12Equals("\u04401234567890x"));
714 Assert.assertFalse($noinline$constNonAsciiString12Equals("012345678901"));
715
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000716 Assert.assertTrue($noinline$constNonAsciiString14Equals("\u04401234567890123"));
717 Assert.assertFalse($noinline$constNonAsciiString14Equals("\u0440123456789012"));
718 Assert.assertFalse($noinline$constNonAsciiString14Equals("\u044012345678901234"));
719 Assert.assertFalse($noinline$constNonAsciiString14Equals("\u0440123456789012x"));
720 Assert.assertFalse($noinline$constNonAsciiString14Equals("01234567890123"));
721
722 Assert.assertTrue($noinline$constNonAsciiString24Equals("\u044012345678901234567890123"));
723 Assert.assertFalse($noinline$constNonAsciiString24Equals("\u04401234567890123456789012"));
724 Assert.assertFalse($noinline$constNonAsciiString24Equals("\u0440123456789012345678901234"));
725 Assert.assertFalse($noinline$constNonAsciiString24Equals("\u04401234567890123456789012x"));
726 Assert.assertFalse($noinline$constNonAsciiString24Equals("\012345678901234567890123"));
727
728 Assert.assertTrue(
729 $noinline$constNonAsciiString29Equals("\u04401234567890123456789012345678"));
730 Assert.assertFalse(
731 $noinline$constNonAsciiString29Equals("\u0440123456789012345678901234567"));
732 Assert.assertFalse(
733 $noinline$constNonAsciiString29Equals("\u044012345678901234567890123456789"));
734 Assert.assertFalse(
735 $noinline$constNonAsciiString29Equals("\u0440123456789012345678901234567x"));
736 Assert.assertFalse($noinline$constNonAsciiString29Equals("01234567890123456789012345678"));
737
738 Assert.assertTrue(
739 $noinline$constNonAsciiString35Equals("\u04401234567890123456789012345678901234"));
740 Assert.assertFalse(
741 $noinline$constNonAsciiString35Equals("\u0440123456789012345678901234567890123"));
742 Assert.assertFalse(
743 $noinline$constNonAsciiString35Equals("\u044012345678901234567890123456789012345"));
744 Assert.assertFalse(
745 $noinline$constNonAsciiString35Equals("\u0440123456789012345678901234567890123x"));
746 Assert.assertFalse(
747 $noinline$constNonAsciiString35Equals("01234567890123456789012345678901234"));
Vladimir Markoa44c4452017-07-13 18:49:35 +0100748
749 // Regression test for incorrectly creating an uncompressed string when the
750 // string should be compressed. Only the low 8 bits are relevant but the whole
751 // `hibyte` was erroneously tested. Bug: 63661357
752 Assert.assertTrue("A".equals(new String(new byte[] { (byte)'A' }, /* hibyte */ 0x100)));
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000753 }
754
755 public static boolean $noinline$equalsConstString0(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000756 return s.equals("");
757 }
758
Vladimir Marko984519c2017-08-23 10:45:29 +0100759 public static boolean $noinline$equalsConstString3(String s) {
760 return s.equals("012");
761 }
762
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000763 public static boolean $noinline$equalsConstString7(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000764 return s.equals("0123456");
765 }
766
Vladimir Marko984519c2017-08-23 10:45:29 +0100767 public static boolean $noinline$equalsConstString12(String s) {
768 return s.equals("012345678901");
769 }
770
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000771 public static boolean $noinline$equalsConstString14(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000772 return s.equals("01234567890123");
773 }
774
775 public static boolean $noinline$equalsConstString24(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000776 return s.equals("012345678901234567890123");
777 }
778
779 public static boolean $noinline$equalsConstString29(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000780 return s.equals("01234567890123456789012345678");
781 }
782
783 public static boolean $noinline$equalsConstString35(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000784 return s.equals("01234567890123456789012345678901234");
785 }
786
Vladimir Marko984519c2017-08-23 10:45:29 +0100787 public static boolean $noinline$equalsConstNonAsciiString3(String s) {
788 return s.equals("\u044012");
789 }
790
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000791 public static boolean $noinline$equalsConstNonAsciiString7(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000792 return s.equals("\u0440123456");
793 }
794
Vladimir Marko984519c2017-08-23 10:45:29 +0100795 public static boolean $noinline$equalsConstNonAsciiString12(String s) {
796 return s.equals("\u044012345678901");
797 }
798
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000799 public static boolean $noinline$equalsConstNonAsciiString14(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000800 return s.equals("\u04401234567890123");
801 }
802
803 public static boolean $noinline$equalsConstNonAsciiString24(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000804 return s.equals("\u044012345678901234567890123");
805 }
806
807 public static boolean $noinline$equalsConstNonAsciiString29(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000808 return s.equals("\u04401234567890123456789012345678");
809 }
810
811 public static boolean $noinline$equalsConstNonAsciiString35(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000812 return s.equals("\u04401234567890123456789012345678901234");
813 }
814
815 public static boolean $noinline$constString0Equals(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000816 return s.equals("");
817 }
818
Vladimir Marko984519c2017-08-23 10:45:29 +0100819 public static boolean $noinline$constString3Equals(String s) {
820 return "012".equals(s);
821 }
822
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000823 public static boolean $noinline$constString7Equals(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000824 return "0123456".equals(s);
825 }
826
Vladimir Marko984519c2017-08-23 10:45:29 +0100827 public static boolean $noinline$constString12Equals(String s) {
828 return "012345678901".equals(s);
829 }
830
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000831 public static boolean $noinline$constString14Equals(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000832 return "01234567890123".equals(s);
833 }
834
835 public static boolean $noinline$constString24Equals(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000836 return "012345678901234567890123".equals(s);
837 }
838
839 public static boolean $noinline$constString29Equals(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000840 return "01234567890123456789012345678".equals(s);
841 }
842
843 public static boolean $noinline$constString35Equals(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000844 return "01234567890123456789012345678901234".equals(s);
845 }
846
Vladimir Marko984519c2017-08-23 10:45:29 +0100847 public static boolean $noinline$constNonAsciiString3Equals(String s) {
848 return "\u044012".equals(s);
849 }
850
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000851 public static boolean $noinline$constNonAsciiString7Equals(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000852 return "\u0440123456".equals(s);
853 }
854
Vladimir Marko984519c2017-08-23 10:45:29 +0100855 public static boolean $noinline$constNonAsciiString12Equals(String s) {
856 return "\u044012345678901".equals(s);
857 }
858
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000859 public static boolean $noinline$constNonAsciiString14Equals(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000860 return "\u04401234567890123".equals(s);
861 }
862
863 public static boolean $noinline$constNonAsciiString24Equals(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000864 return "\u044012345678901234567890123".equals(s);
865 }
866
867 public static boolean $noinline$constNonAsciiString29Equals(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000868 return "\u04401234567890123456789012345678".equals(s);
869 }
870
871 public static boolean $noinline$constNonAsciiString35Equals(String s) {
Vladimir Markoe39f14f2017-02-10 15:44:25 +0000872 return "\u04401234567890123456789012345678901234".equals(s);
873 }
874
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100875 public static int $noinline$compareTo(String lhs, String rhs) {
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100876 return lhs.compareTo(rhs);
877 }
878
879 public static boolean $noinline$equals(String lhs, String rhs) {
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100880 return lhs.equals(rhs);
881 }
882
883 public static int $noinline$indexOf(String lhs, int ch) {
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100884 return lhs.indexOf(ch);
885 }
886
887 public static int $noinline$indexOf(String lhs, int ch, int fromIndex) {
Vladimir Marko9c9883b2016-10-17 14:45:29 +0100888 return lhs.indexOf(ch, fromIndex);
889 }
jeffhao5d1ac922011-09-29 17:41:15 -0700890}