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 }