Path: blob/master/test/hotspot/jtreg/compiler/intrinsics/Test8237524.java
41152 views
/*1* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.2* Copyright (c) 2020, Arm Limited. All rights reserved.3* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.4*5* This code is free software; you can redistribute it and/or modify it6* under the terms of the GNU General Public License version 2 only, as7* published by the Free Software Foundation.8*9* This code is distributed in the hope that it will be useful, but WITHOUT10* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or11* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License12* version 2 for more details (a copy is included in the LICENSE file that13* accompanied this code).14*15* You should have received a copy of the GNU General Public License version16* 2 along with this work; if not, write to the Free Software Foundation,17* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.18*19* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA20* or visit www.oracle.com if you need additional information or have any21* questions.22*/2324/*25* @test26* @bug 823752427* @summary String.compareTo() may return incorrect result in this case28*29* @modules java.base/java.lang:open30*31* @run main/othervm -XX:+CompactStrings compiler.intrinsics.Test823752432*/3334package compiler.intrinsics;3536import java.lang.reflect.Constructor;3738public class Test8237524 {3940private static int stringCompareTo(String s1, String s2) {41return s1.compareTo(s2);42}4344public static void main(String[] args) throws Exception {45Constructor<String> c = String.class.getDeclaredConstructor(byte[].class, byte.class);46c.setAccessible(true);4748byte[] bytes = new byte[] {49'Y', 'm', '_', 'l', 'V', 'n', 'W', 'S', 'w', 'm', 'W', 'S'50};5152String s1 = c.newInstance(bytes, (byte) 0); // a Latin string53String s2 = c.newInstance(bytes, (byte) 1); // a Chinese string5455for (int i = 0; i < 50000; i++) {56if (stringCompareTo(s1, s2) >= 0) {57System.out.println("FAIL. s1 should be less than s2 according to Java API Spec");58System.exit(1);59}60}61}62}63646566