test/hotspot/jtreg/gc/shenandoah/compiler/TestClone.java
changeset 58339 c7d9df2e470c
equal deleted inserted replaced
58338:faf791c5a710 58339:c7d9df2e470c
       
     1 /*
       
     2  * Copyright (c) 2019, Red Hat, Inc. 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  */
       
    23 
       
    24 /*
       
    25  * @test TestClone
       
    26  * @summary Test clone barriers work correctly
       
    27  * @key gc
       
    28  * @requires vm.gc.Shenandoah & !vm.graal.enabled
       
    29  *
       
    30  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
    31  *                   -XX:+UseShenandoahGC
       
    32  *                   TestClone
       
    33  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
    34  *                   -XX:+UseShenandoahGC
       
    35  *                   -Xint
       
    36  *                   TestClone
       
    37  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
    38  *                   -XX:+UseShenandoahGC
       
    39  *                   -XX:-TieredCompilation
       
    40  *                   TestClone
       
    41  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
    42  *                   -XX:+UseShenandoahGC
       
    43  *                   -XX:TieredStopAtLevel=1
       
    44  *                   TestClone
       
    45  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
    46  *                   -XX:+UseShenandoahGC
       
    47  *                   -XX:TieredStopAtLevel=4
       
    48  *                   TestClone
       
    49  */
       
    50 
       
    51 /*
       
    52  * @test TestClone
       
    53  * @summary Test clone barriers work correctly
       
    54  * @key gc
       
    55  * @requires vm.gc.Shenandoah & !vm.graal.enabled
       
    56  *
       
    57  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
    58  *                   -XX:+UseShenandoahGC
       
    59  *                   -XX:+ShenandoahVerify
       
    60  *                   TestClone
       
    61  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
    62  *                   -XX:+UseShenandoahGC
       
    63  *                   -XX:+ShenandoahVerify
       
    64  *                   -Xint
       
    65  *                   TestClone
       
    66  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
    67  *                   -XX:+UseShenandoahGC
       
    68  *                   -XX:+ShenandoahVerify
       
    69  *                   -XX:-TieredCompilation
       
    70  *                   TestClone
       
    71  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
    72  *                   -XX:+UseShenandoahGC
       
    73  *                   -XX:+ShenandoahVerify
       
    74  *                   -XX:TieredStopAtLevel=1
       
    75  *                   TestClone
       
    76  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
    77  *                   -XX:+UseShenandoahGC
       
    78  *                   -XX:+ShenandoahVerify
       
    79  *                   -XX:TieredStopAtLevel=4
       
    80  *                   TestClone
       
    81  */
       
    82 
       
    83 /*
       
    84  * @test TestClone
       
    85  * @summary Test clone barriers work correctly
       
    86  * @key gc
       
    87  * @requires vm.gc.Shenandoah & !vm.graal.enabled
       
    88  *
       
    89  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
    90  *                   -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
       
    91  *                   TestClone
       
    92  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
    93  *                   -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
       
    94  *                   -Xint
       
    95  *                   TestClone
       
    96  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
    97  *                   -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
       
    98  *                   -XX:-TieredCompilation
       
    99  *                   TestClone
       
   100  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   101  *                   -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
       
   102  *                   -XX:TieredStopAtLevel=1
       
   103  *                   TestClone
       
   104  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   105  *                   -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
       
   106  *                   -XX:TieredStopAtLevel=4
       
   107  *                   TestClone
       
   108  */
       
   109 
       
   110 /*
       
   111  * @test TestClone
       
   112  * @summary Test clone barriers work correctly
       
   113  * @key gc
       
   114  * @requires vm.gc.Shenandoah & !vm.graal.enabled & (vm.bits == "64")
       
   115  *
       
   116  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   117  *                   -XX:-UseCompressedOops
       
   118  *                   -XX:+UseShenandoahGC
       
   119  *                   TestClone
       
   120  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   121  *                   -XX:-UseCompressedOops
       
   122  *                   -XX:+UseShenandoahGC
       
   123  *                   -Xint
       
   124  *                   TestClone
       
   125  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   126  *                   -XX:-UseCompressedOops
       
   127  *                   -XX:+UseShenandoahGC
       
   128  *                   -XX:-TieredCompilation
       
   129  *                   TestClone
       
   130  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   131  *                   -XX:-UseCompressedOops
       
   132  *                   -XX:+UseShenandoahGC
       
   133  *                   -XX:TieredStopAtLevel=1
       
   134  *                   TestClone
       
   135  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   136  *                   -XX:-UseCompressedOops
       
   137  *                   -XX:+UseShenandoahGC
       
   138  *                   -XX:TieredStopAtLevel=4
       
   139  *                   TestClone
       
   140  */
       
   141 
       
   142 /*
       
   143  * @test TestClone
       
   144  * @summary Test clone barriers work correctly
       
   145  * @key gc
       
   146  * @requires vm.gc.Shenandoah & !vm.graal.enabled & (vm.bits == "64")
       
   147  *
       
   148  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   149  *                   -XX:-UseCompressedOops
       
   150  *                   -XX:+UseShenandoahGC
       
   151  *                   -XX:+ShenandoahVerify
       
   152  *                   TestClone
       
   153  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   154  *                   -XX:-UseCompressedOops
       
   155  *                   -XX:+UseShenandoahGC
       
   156  *                   -XX:+ShenandoahVerify
       
   157  *                   -Xint
       
   158  *                   TestClone
       
   159  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   160  *                   -XX:-UseCompressedOops
       
   161  *                   -XX:+UseShenandoahGC
       
   162  *                   -XX:+ShenandoahVerify
       
   163  *                   -XX:-TieredCompilation
       
   164  *                   TestClone
       
   165  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   166  *                   -XX:-UseCompressedOops
       
   167  *                   -XX:+UseShenandoahGC
       
   168  *                   -XX:+ShenandoahVerify
       
   169  *                   -XX:TieredStopAtLevel=1
       
   170  *                   TestClone
       
   171  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   172  *                   -XX:-UseCompressedOops
       
   173  *                   -XX:+UseShenandoahGC
       
   174  *                   -XX:+ShenandoahVerify
       
   175  *                   -XX:TieredStopAtLevel=4
       
   176  *                   TestClone
       
   177  */
       
   178 
       
   179 /*
       
   180  * @test TestClone
       
   181  * @summary Test clone barriers work correctly
       
   182  * @key gc
       
   183  * @requires vm.gc.Shenandoah & !vm.graal.enabled & (vm.bits == "64")
       
   184  *
       
   185  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   186  *                   -XX:-UseCompressedOops
       
   187  *                   -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
       
   188  *                   TestClone
       
   189  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   190  *                   -XX:-UseCompressedOops
       
   191  *                   -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
       
   192  *                   -Xint
       
   193  *                   TestClone
       
   194  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   195  *                   -XX:-UseCompressedOops
       
   196  *                   -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
       
   197  *                   -XX:-TieredCompilation
       
   198  *                   TestClone
       
   199  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   200  *                   -XX:-UseCompressedOops
       
   201  *                   -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
       
   202  *                   -XX:TieredStopAtLevel=1
       
   203  *                   TestClone
       
   204  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -Xms1g -Xmx1g
       
   205  *                   -XX:-UseCompressedOops
       
   206  *                   -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=aggressive
       
   207  *                   -XX:TieredStopAtLevel=4
       
   208  *                   TestClone
       
   209  */
       
   210 
       
   211 
       
   212 public class TestClone {
       
   213 
       
   214     public static void main(String[] args) throws Exception {
       
   215         for (int i = 0; i < 10000; i++) {
       
   216             Object[] src = new Object[i];
       
   217             for (int c = 0; c < src.length; c++) {
       
   218                 src[c] = new Object();
       
   219             }
       
   220             testWith(src);
       
   221         }
       
   222     }
       
   223 
       
   224     static void testWith(Object[] src) {
       
   225         Object[] dst = src.clone();
       
   226         int srcLen = src.length;
       
   227         int dstLen = dst.length;
       
   228         if (srcLen != dstLen) {
       
   229             throw new IllegalStateException("Lengths do not match: " + srcLen + " vs " + dstLen);
       
   230         }
       
   231         for (int c = 0; c < src.length; c++) {
       
   232             Object s = src[c];
       
   233             Object d = dst[c];
       
   234             if (s != d) {
       
   235                 throw new IllegalStateException("Elements do not match at " + c + ": " + s + " vs " + d);
       
   236             }
       
   237         }
       
   238     }
       
   239 }