1 /*
   2  * Copyright (c) 2016, Oracle and/or its affiliates. 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 package org.graalvm.compiler.nodes.test;
  24 
  25 import org.junit.Test;
  26 
  27 import org.graalvm.compiler.core.test.GraalCompilerTest;
  28 import org.graalvm.compiler.java.LargeLocalLiveness;
  29 import org.graalvm.compiler.java.SmallLocalLiveness;
  30 
  31 public class LoopLivenessTest extends GraalCompilerTest {
  32 
  33     /**
  34      * Exercise {@link SmallLocalLiveness} with 64 loops.
  35      */
  36     public static void manyLoopsSmall() {
  37         for (int i = 0; i < 10; i++) {
  38             for (int j = 0; j < 10; j++) {
  39             }
  40         }
  41         for (int i = 0; i < 10; i++) {
  42             for (int j = 0; j < 10; j++) {
  43             }
  44         }
  45         for (int i = 0; i < 10; i++) {
  46             for (int j = 0; j < 10; j++) {
  47             }
  48         }
  49         for (int i = 0; i < 10; i++) {
  50             for (int j = 0; j < 10; j++) {
  51             }
  52         }
  53         for (int i = 0; i < 10; i++) {
  54             for (int j = 0; j < 10; j++) {
  55             }
  56         }
  57         for (int i = 0; i < 10; i++) {
  58             for (int j = 0; j < 10; j++) {
  59             }
  60         }
  61         for (int i = 0; i < 10; i++) {
  62             for (int j = 0; j < 10; j++) {
  63             }
  64         }
  65         for (int i = 0; i < 10; i++) {
  66             for (int j = 0; j < 10; j++) {
  67             }
  68         }
  69         for (int i = 0; i < 10; i++) {
  70             for (int j = 0; j < 10; j++) {
  71             }
  72         }
  73         for (int i = 0; i < 10; i++) {
  74             for (int j = 0; j < 10; j++) {
  75             }
  76         }
  77         for (int i = 0; i < 10; i++) {
  78             for (int j = 0; j < 10; j++) {
  79             }
  80         }
  81         for (int i = 0; i < 10; i++) {
  82             for (int j = 0; j < 10; j++) {
  83             }
  84         }
  85         for (int i = 0; i < 10; i++) {
  86             for (int j = 0; j < 10; j++) {
  87             }
  88         }
  89         for (int i = 0; i < 10; i++) {
  90             for (int j = 0; j < 10; j++) {
  91             }
  92         }
  93         for (int i = 0; i < 10; i++) {
  94             for (int j = 0; j < 10; j++) {
  95             }
  96         }
  97         for (int i = 0; i < 10; i++) {
  98             for (int j = 0; j < 10; j++) {
  99             }
 100         }
 101         for (int i = 0; i < 10; i++) {
 102             for (int j = 0; j < 10; j++) {
 103             }
 104         }
 105         for (int i = 0; i < 10; i++) {
 106             for (int j = 0; j < 10; j++) {
 107             }
 108         }
 109         for (int i = 0; i < 10; i++) {
 110             for (int j = 0; j < 10; j++) {
 111             }
 112         }
 113         for (int i = 0; i < 10; i++) {
 114             for (int j = 0; j < 10; j++) {
 115             }
 116         }
 117         for (int i = 0; i < 10; i++) {
 118             for (int j = 0; j < 10; j++) {
 119             }
 120         }
 121         for (int i = 0; i < 10; i++) {
 122             for (int j = 0; j < 10; j++) {
 123             }
 124         }
 125         for (int i = 0; i < 10; i++) {
 126             for (int j = 0; j < 10; j++) {
 127             }
 128         }
 129         for (int i = 0; i < 10; i++) {
 130             for (int j = 0; j < 10; j++) {
 131             }
 132         }
 133         for (int i = 0; i < 10; i++) {
 134             for (int j = 0; j < 10; j++) {
 135             }
 136         }
 137         for (int i = 0; i < 10; i++) {
 138             for (int j = 0; j < 10; j++) {
 139             }
 140         }
 141         for (int i = 0; i < 10; i++) {
 142             for (int j = 0; j < 10; j++) {
 143             }
 144         }
 145         for (int i = 0; i < 10; i++) {
 146             for (int j = 0; j < 10; j++) {
 147             }
 148         }
 149         for (int i = 0; i < 10; i++) {
 150             for (int j = 0; j < 10; j++) {
 151             }
 152         }
 153         for (int i = 0; i < 10; i++) {
 154             for (int j = 0; j < 10; j++) {
 155             }
 156         }
 157         for (int i = 0; i < 10; i++) {
 158             for (int j = 0; j < 10; j++) {
 159             }
 160         }
 161         for (int i = 0; i < 10; i++) {
 162             for (int j = 0; j < 10; j++) {
 163             }
 164         }
 165     }
 166 
 167     /**
 168      * Exercise {@link LargeLocalLiveness} with 64 loops.
 169      */
 170     @SuppressWarnings("unused")
 171     public static void manyLoopsLarge() {
 172         int i0;
 173         int i1;
 174         int i2;
 175         int i3;
 176         int i4;
 177         int i5;
 178         int i6;
 179         int i7;
 180         int i8;
 181         int i9;
 182         int i10;
 183         int i11;
 184         int i12;
 185         int i13;
 186         int i14;
 187         int i15;
 188         int i16;
 189         int i17;
 190         int i18;
 191         int i19;
 192         int i20;
 193         int i21;
 194         int i22;
 195         int i23;
 196         int i24;
 197         int i25;
 198         int i26;
 199         int i27;
 200         int i28;
 201         int i29;
 202         int i30;
 203         int i31;
 204         int i32;
 205         int i33;
 206         int i34;
 207         int i35;
 208         int i36;
 209         int i37;
 210         int i38;
 211         int i39;
 212         int i40;
 213         int i41;
 214         int i42;
 215         int i43;
 216         int i44;
 217         int i45;
 218         int i46;
 219         int i47;
 220         int i48;
 221         int i49;
 222         int i50;
 223         int i51;
 224         int i52;
 225         int i53;
 226         int i54;
 227         int i55;
 228         int i56;
 229         int i57;
 230         int i58;
 231         int i59;
 232         int i60;
 233         int i61;
 234         int i62;
 235         int i63;
 236         for (int i = 0; i < 10; i++) {
 237             for (int j = 0; j < 10; j++) {
 238             }
 239         }
 240         for (int i = 0; i < 10; i++) {
 241             for (int j = 0; j < 10; j++) {
 242             }
 243         }
 244         for (int i = 0; i < 10; i++) {
 245             for (int j = 0; j < 10; j++) {
 246             }
 247         }
 248         for (int i = 0; i < 10; i++) {
 249             for (int j = 0; j < 10; j++) {
 250             }
 251         }
 252         for (int i = 0; i < 10; i++) {
 253             for (int j = 0; j < 10; j++) {
 254             }
 255         }
 256         for (int i = 0; i < 10; i++) {
 257             for (int j = 0; j < 10; j++) {
 258             }
 259         }
 260         for (int i = 0; i < 10; i++) {
 261             for (int j = 0; j < 10; j++) {
 262             }
 263         }
 264         for (int i = 0; i < 10; i++) {
 265             for (int j = 0; j < 10; j++) {
 266             }
 267         }
 268         for (int i = 0; i < 10; i++) {
 269             for (int j = 0; j < 10; j++) {
 270             }
 271         }
 272         for (int i = 0; i < 10; i++) {
 273             for (int j = 0; j < 10; j++) {
 274             }
 275         }
 276         for (int i = 0; i < 10; i++) {
 277             for (int j = 0; j < 10; j++) {
 278             }
 279         }
 280         for (int i = 0; i < 10; i++) {
 281             for (int j = 0; j < 10; j++) {
 282             }
 283         }
 284         for (int i = 0; i < 10; i++) {
 285             for (int j = 0; j < 10; j++) {
 286             }
 287         }
 288         for (int i = 0; i < 10; i++) {
 289             for (int j = 0; j < 10; j++) {
 290             }
 291         }
 292         for (int i = 0; i < 10; i++) {
 293             for (int j = 0; j < 10; j++) {
 294             }
 295         }
 296         for (int i = 0; i < 10; i++) {
 297             for (int j = 0; j < 10; j++) {
 298             }
 299         }
 300         for (int i = 0; i < 10; i++) {
 301             for (int j = 0; j < 10; j++) {
 302             }
 303         }
 304         for (int i = 0; i < 10; i++) {
 305             for (int j = 0; j < 10; j++) {
 306             }
 307         }
 308         for (int i = 0; i < 10; i++) {
 309             for (int j = 0; j < 10; j++) {
 310             }
 311         }
 312         for (int i = 0; i < 10; i++) {
 313             for (int j = 0; j < 10; j++) {
 314             }
 315         }
 316         for (int i = 0; i < 10; i++) {
 317             for (int j = 0; j < 10; j++) {
 318             }
 319         }
 320         for (int i = 0; i < 10; i++) {
 321             for (int j = 0; j < 10; j++) {
 322             }
 323         }
 324         for (int i = 0; i < 10; i++) {
 325             for (int j = 0; j < 10; j++) {
 326             }
 327         }
 328         for (int i = 0; i < 10; i++) {
 329             for (int j = 0; j < 10; j++) {
 330             }
 331         }
 332         for (int i = 0; i < 10; i++) {
 333             for (int j = 0; j < 10; j++) {
 334             }
 335         }
 336         for (int i = 0; i < 10; i++) {
 337             for (int j = 0; j < 10; j++) {
 338             }
 339         }
 340         for (int i = 0; i < 10; i++) {
 341             for (int j = 0; j < 10; j++) {
 342             }
 343         }
 344         for (int i = 0; i < 10; i++) {
 345             for (int j = 0; j < 10; j++) {
 346             }
 347         }
 348         for (int i = 0; i < 10; i++) {
 349             for (int j = 0; j < 10; j++) {
 350             }
 351         }
 352         for (int i = 0; i < 10; i++) {
 353             for (int j = 0; j < 10; j++) {
 354             }
 355         }
 356         for (int i = 0; i < 10; i++) {
 357             for (int j = 0; j < 10; j++) {
 358             }
 359         }
 360         for (int i = 0; i < 10; i++) {
 361             for (int j = 0; j < 10; j++) {
 362             }
 363         }
 364     }
 365 
 366     @Test
 367     public void testManyLoopsSmall() {
 368         test("manyLoopsSmall");
 369     }
 370 
 371     @Test
 372     public void testManyLoopsLarge() {
 373         test("manyLoopsLarge");
 374     }
 375 }