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