test/compiler/7179138/Test7179138_1.java

Thu, 11 Apr 2013 21:45:21 -0700

author
amurillo
date
Thu, 11 Apr 2013 21:45:21 -0700
changeset 4915
5201379fe487
parent 0
f90c822e73f8
permissions
-rw-r--r--

Added tag hs25-b28 for changeset 6d88a566d369

     1 /*
     2  * Copyright 2012 Skip Balk.  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 it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     8  *
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12  * version 2 for more details (a copy is included in the LICENSE file that
    13  * accompanied this code).
    14  *
    15  * You should have received a copy of the GNU General Public License version
    16  * 2 along with this work; if not, write to the Free Software Foundation,
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18  *
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20  * or visit www.oracle.com if you need additional information or have any
    21  * questions.
    22  */
    24 /*
    25  * @test
    26  * @bug 7179138
    27  * @summary Incorrect result with String concatenation optimization
    28  * @run main/othervm -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation Test7179138_1
    29  *
    30  * @author Skip Balk
    31  */
    33 public class Test7179138_1 {
    34     public static void main(String[] args) throws Exception {
    35         System.out.println("Java Version: " + System.getProperty("java.vm.version"));
    36         long[] durations = new long[60];
    37         for (int i = 0; i < 100000; i++) {
    38             // this empty for-loop is required to reproduce this bug
    39             for (long duration : durations) {
    40                 // do nothing
    41             }
    42             {
    43                 String s = "test";
    44                 int len = s.length();
    46                 s = new StringBuilder(String.valueOf(s)).append(s).toString();
    47                 len = len + len;
    49                 s = new StringBuilder(String.valueOf(s)).append(s).toString();
    50                 len = len + len;
    52                 s = new StringBuilder(String.valueOf(s)).append(s).toString();
    53                 len = len + len;
    55                 if (s.length() != len) {
    56                     System.out.println("Failed at iteration: " + i);
    57                     System.out.println("Length mismatch: " + s.length() + " <> " + len);
    58                     System.out.println("Expected: \"" + "test" + "test" + "test" + "test" + "test" + "test" + "test" + "test" + "\"");
    59                     System.out.println("Actual:   \"" + s + "\"");
    60                     System.exit(97);
    61                 }
    62             }
    63         }
    64     }
    65 }

mercurial