test/compiler/6934604/TestByteBoxing.java

Mon, 28 Jul 2014 15:06:38 -0700

author
fzhinkin
date
Mon, 28 Jul 2014 15:06:38 -0700
changeset 6997
dbb05f6d93c4
parent 0
f90c822e73f8
permissions
-rw-r--r--

8051344: JVM crashed in Compile::start() during method parsing w/ UseRTMDeopt turned on
Summary: call rtm_deopt() only if there were no compilation bailouts before.
Reviewed-by: kvn

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation.
aoqi@0 8 *
aoqi@0 9 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 12 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 13 * accompanied this code).
aoqi@0 14 *
aoqi@0 15 * You should have received a copy of the GNU General Public License version
aoqi@0 16 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 18 *
aoqi@0 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 20 * or visit www.oracle.com if you need additional information or have any
aoqi@0 21 * questions.
aoqi@0 22 */
aoqi@0 23
aoqi@0 24 /*
aoqi@0 25 * @test
aoqi@0 26 * @bug 6934604
aoqi@0 27 * @summary enable parts of EliminateAutoBox by default
aoqi@0 28 * @run main/othervm -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:+EliminateAutoBox TestByteBoxing
aoqi@0 29 * @run main/othervm -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:+EliminateAutoBox
aoqi@0 30 * -XX:CompileCommand=exclude,TestByteBoxing.dummy -XX:CompileCommand=exclude,TestByteBoxing.foo -XX:CompileCommand=exclude,TestByteBoxing.foob TestByteBoxing
aoqi@0 31 * @run main/othervm -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-EliminateAutoBox
aoqi@0 32 * -XX:CompileCommand=exclude,TestByteBoxing.dummy -XX:CompileCommand=exclude,TestByteBoxing.foo -XX:CompileCommand=exclude,TestByteBoxing.foob TestByteBoxing
aoqi@0 33 *
aoqi@0 34 */
aoqi@0 35
aoqi@0 36 public class TestByteBoxing {
aoqi@0 37
aoqi@0 38 static final Byte ibc = new Byte((byte)1);
aoqi@0 39
aoqi@0 40 //===============================================
aoqi@0 41 // Non-inlined methods to test deoptimization info
aoqi@0 42 static void dummy() { }
aoqi@0 43 static byte foo(byte i) { return i; }
aoqi@0 44 static Byte foob(byte i) { return Byte.valueOf(i); }
aoqi@0 45
aoqi@0 46
aoqi@0 47 static byte simple(byte i) {
aoqi@0 48 Byte ib = new Byte(i);
aoqi@0 49 return ib;
aoqi@0 50 }
aoqi@0 51
aoqi@0 52 static byte simpleb(byte i) {
aoqi@0 53 Byte ib = Byte.valueOf(i);
aoqi@0 54 return ib;
aoqi@0 55 }
aoqi@0 56
aoqi@0 57 static byte simplec() {
aoqi@0 58 Byte ib = ibc;
aoqi@0 59 return ib;
aoqi@0 60 }
aoqi@0 61
aoqi@0 62 static byte simplef(byte i) {
aoqi@0 63 Byte ib = foob(i);
aoqi@0 64 return ib;
aoqi@0 65 }
aoqi@0 66
aoqi@0 67 static byte simplep(Byte ib) {
aoqi@0 68 return ib;
aoqi@0 69 }
aoqi@0 70
aoqi@0 71 static byte simple2(byte i) {
aoqi@0 72 Byte ib1 = new Byte(i);
aoqi@0 73 Byte ib2 = new Byte((byte)(i+1));
aoqi@0 74 return (byte)(ib1 + ib2);
aoqi@0 75 }
aoqi@0 76
aoqi@0 77 static byte simpleb2(byte i) {
aoqi@0 78 Byte ib1 = Byte.valueOf(i);
aoqi@0 79 Byte ib2 = Byte.valueOf((byte)(i+1));
aoqi@0 80 return (byte)(ib1 + ib2);
aoqi@0 81 }
aoqi@0 82
aoqi@0 83 static byte simplem2(byte i) {
aoqi@0 84 Byte ib1 = new Byte(i);
aoqi@0 85 Byte ib2 = Byte.valueOf((byte)(i+1));
aoqi@0 86 return (byte)(ib1 + ib2);
aoqi@0 87 }
aoqi@0 88
aoqi@0 89 static byte simplep2(byte i, Byte ib1) {
aoqi@0 90 Byte ib2 = Byte.valueOf((byte)(i+1));
aoqi@0 91 return (byte)(ib1 + ib2);
aoqi@0 92 }
aoqi@0 93
aoqi@0 94 static byte simplec2(byte i) {
aoqi@0 95 Byte ib1 = ibc;
aoqi@0 96 Byte ib2 = Byte.valueOf((byte)(i+1));
aoqi@0 97 return (byte)(ib1 + ib2);
aoqi@0 98 }
aoqi@0 99
aoqi@0 100 //===============================================
aoqi@0 101 static byte test(byte i) {
aoqi@0 102 Byte ib = new Byte(i);
aoqi@0 103 if ((i&1) == 0)
aoqi@0 104 ib = (byte)(i+1);
aoqi@0 105 return ib;
aoqi@0 106 }
aoqi@0 107
aoqi@0 108 static byte testb(byte i) {
aoqi@0 109 Byte ib = i;
aoqi@0 110 if ((i&1) == 0)
aoqi@0 111 ib = (byte)(i+1);
aoqi@0 112 return ib;
aoqi@0 113 }
aoqi@0 114
aoqi@0 115 static byte testm(byte i) {
aoqi@0 116 Byte ib = i;
aoqi@0 117 if ((i&1) == 0)
aoqi@0 118 ib = new Byte((byte)(i+1));
aoqi@0 119 return ib;
aoqi@0 120 }
aoqi@0 121
aoqi@0 122 static byte testp(byte i, Byte ib) {
aoqi@0 123 if ((i&1) == 0)
aoqi@0 124 ib = new Byte((byte)(i+1));
aoqi@0 125 return ib;
aoqi@0 126 }
aoqi@0 127
aoqi@0 128 static byte testc(byte i) {
aoqi@0 129 Byte ib = ibc;
aoqi@0 130 if ((i&1) == 0)
aoqi@0 131 ib = new Byte((byte)(i+1));
aoqi@0 132 return ib;
aoqi@0 133 }
aoqi@0 134
aoqi@0 135 static byte test2(byte i) {
aoqi@0 136 Byte ib1 = new Byte(i);
aoqi@0 137 Byte ib2 = new Byte((byte)(i+1));
aoqi@0 138 if ((i&1) == 0) {
aoqi@0 139 ib1 = new Byte((byte)(i+1));
aoqi@0 140 ib2 = new Byte((byte)(i+2));
aoqi@0 141 }
aoqi@0 142 return (byte)(ib1+ib2);
aoqi@0 143 }
aoqi@0 144
aoqi@0 145 static byte testb2(byte i) {
aoqi@0 146 Byte ib1 = i;
aoqi@0 147 Byte ib2 = (byte)(i+1);
aoqi@0 148 if ((i&1) == 0) {
aoqi@0 149 ib1 = (byte)(i+1);
aoqi@0 150 ib2 = (byte)(i+2);
aoqi@0 151 }
aoqi@0 152 return (byte)(ib1 + ib2);
aoqi@0 153 }
aoqi@0 154
aoqi@0 155 static byte testm2(byte i) {
aoqi@0 156 Byte ib1 = new Byte(i);
aoqi@0 157 Byte ib2 = (byte)(i+1);
aoqi@0 158 if ((i&1) == 0) {
aoqi@0 159 ib1 = new Byte((byte)(i+1));
aoqi@0 160 ib2 = (byte)(i+2);
aoqi@0 161 }
aoqi@0 162 return (byte)(ib1 + ib2);
aoqi@0 163 }
aoqi@0 164
aoqi@0 165 static byte testp2(byte i, Byte ib1) {
aoqi@0 166 Byte ib2 = (byte)(i+1);
aoqi@0 167 if ((i&1) == 0) {
aoqi@0 168 ib1 = new Byte((byte)(i+1));
aoqi@0 169 ib2 = (byte)(i+2);
aoqi@0 170 }
aoqi@0 171 return (byte)(ib1 + ib2);
aoqi@0 172 }
aoqi@0 173
aoqi@0 174 static byte testc2(byte i) {
aoqi@0 175 Byte ib1 = ibc;
aoqi@0 176 Byte ib2 = (byte)(i+1);
aoqi@0 177 if ((i&1) == 0) {
aoqi@0 178 ib1 = (byte)(ibc+1);
aoqi@0 179 ib2 = (byte)(i+2);
aoqi@0 180 }
aoqi@0 181 return (byte)(ib1 + ib2);
aoqi@0 182 }
aoqi@0 183
aoqi@0 184 //===============================================
aoqi@0 185 static byte sum(byte[] a) {
aoqi@0 186 byte result = 1;
aoqi@0 187 for (Byte i : a)
aoqi@0 188 result += i;
aoqi@0 189 return result;
aoqi@0 190 }
aoqi@0 191
aoqi@0 192 static byte sumb(byte[] a) {
aoqi@0 193 Byte result = 1;
aoqi@0 194 for (Byte i : a)
aoqi@0 195 result = (byte)(result + i);
aoqi@0 196 return result;
aoqi@0 197 }
aoqi@0 198
aoqi@0 199 static byte sumc(byte[] a) {
aoqi@0 200 Byte result = ibc;
aoqi@0 201 for (Byte i : a)
aoqi@0 202 result = (byte)(result + i);
aoqi@0 203 return result;
aoqi@0 204 }
aoqi@0 205
aoqi@0 206 static byte sumf(byte[] a) {
aoqi@0 207 Byte result = foob((byte)1);
aoqi@0 208 for (Byte i : a)
aoqi@0 209 result = (byte)(result + i);
aoqi@0 210 return result;
aoqi@0 211 }
aoqi@0 212
aoqi@0 213 static byte sump(byte[] a, Byte result) {
aoqi@0 214 for (Byte i : a)
aoqi@0 215 result = (byte)(result + i);
aoqi@0 216 return result;
aoqi@0 217 }
aoqi@0 218
aoqi@0 219 static byte sum2(byte[] a) {
aoqi@0 220 byte result1 = 1;
aoqi@0 221 byte result2 = 1;
aoqi@0 222 for (Byte i : a) {
aoqi@0 223 result1 += i;
aoqi@0 224 result2 += i + 1;
aoqi@0 225 }
aoqi@0 226 return (byte)(result1 + result2);
aoqi@0 227 }
aoqi@0 228
aoqi@0 229 static byte sumb2(byte[] a) {
aoqi@0 230 Byte result1 = 1;
aoqi@0 231 Byte result2 = 1;
aoqi@0 232 for (Byte i : a) {
aoqi@0 233 result1 = (byte)(result1 + i);
aoqi@0 234 result2 = (byte)(result2 + i + 1);
aoqi@0 235 }
aoqi@0 236 return (byte)(result1 + result2);
aoqi@0 237 }
aoqi@0 238
aoqi@0 239 static byte summ2(byte[] a) {
aoqi@0 240 Byte result1 = 1;
aoqi@0 241 Byte result2 = new Byte((byte)1);
aoqi@0 242 for (Byte i : a) {
aoqi@0 243 result1 = (byte)(result1 + i);
aoqi@0 244 result2 = (byte)(result2 + new Byte((byte)(i + 1)));
aoqi@0 245 }
aoqi@0 246 return (byte)(result1 + result2);
aoqi@0 247 }
aoqi@0 248
aoqi@0 249 static byte sump2(byte[] a, Byte result2) {
aoqi@0 250 Byte result1 = 1;
aoqi@0 251 for (Byte i : a) {
aoqi@0 252 result1 = (byte)(result1 + i);
aoqi@0 253 result2 = (byte)(result2 + i + 1);
aoqi@0 254 }
aoqi@0 255 return (byte)(result1 + result2);
aoqi@0 256 }
aoqi@0 257
aoqi@0 258 static byte sumc2(byte[] a) {
aoqi@0 259 Byte result1 = 1;
aoqi@0 260 Byte result2 = ibc;
aoqi@0 261 for (Byte i : a) {
aoqi@0 262 result1 = (byte)(result1 + i);
aoqi@0 263 result2 = (byte)(result2 + i + ibc);
aoqi@0 264 }
aoqi@0 265 return (byte)(result1 + result2);
aoqi@0 266 }
aoqi@0 267
aoqi@0 268 //===============================================
aoqi@0 269 static byte remi_sum() {
aoqi@0 270 Byte j = new Byte((byte)1);
aoqi@0 271 for (int i = 0; i< 1000; i++) {
aoqi@0 272 j = new Byte((byte)(j + 1));
aoqi@0 273 }
aoqi@0 274 return j;
aoqi@0 275 }
aoqi@0 276
aoqi@0 277 static byte remi_sumb() {
aoqi@0 278 Byte j = Byte.valueOf((byte)1);
aoqi@0 279 for (int i = 0; i< 1000; i++) {
aoqi@0 280 j = (byte)(j + 1);
aoqi@0 281 }
aoqi@0 282 return j;
aoqi@0 283 }
aoqi@0 284
aoqi@0 285 static byte remi_sumf() {
aoqi@0 286 Byte j = foob((byte)1);
aoqi@0 287 for (int i = 0; i< 1000; i++) {
aoqi@0 288 j = (byte)(j + 1);
aoqi@0 289 }
aoqi@0 290 return j;
aoqi@0 291 }
aoqi@0 292
aoqi@0 293 static byte remi_sump(Byte j) {
aoqi@0 294 for (int i = 0; i< 1000; i++) {
aoqi@0 295 j = new Byte((byte)(j + 1));
aoqi@0 296 }
aoqi@0 297 return j;
aoqi@0 298 }
aoqi@0 299
aoqi@0 300 static byte remi_sumc() {
aoqi@0 301 Byte j = ibc;
aoqi@0 302 for (int i = 0; i< 1000; i++) {
aoqi@0 303 j = (byte)(j + ibc);
aoqi@0 304 }
aoqi@0 305 return j;
aoqi@0 306 }
aoqi@0 307
aoqi@0 308 static byte remi_sum2() {
aoqi@0 309 Byte j1 = new Byte((byte)1);
aoqi@0 310 Byte j2 = new Byte((byte)1);
aoqi@0 311 for (int i = 0; i< 1000; i++) {
aoqi@0 312 j1 = new Byte((byte)(j1 + 1));
aoqi@0 313 j2 = new Byte((byte)(j2 + 2));
aoqi@0 314 }
aoqi@0 315 return (byte)(j1 + j2);
aoqi@0 316 }
aoqi@0 317
aoqi@0 318 static byte remi_sumb2() {
aoqi@0 319 Byte j1 = Byte.valueOf((byte)1);
aoqi@0 320 Byte j2 = Byte.valueOf((byte)1);
aoqi@0 321 for (int i = 0; i< 1000; i++) {
aoqi@0 322 j1 = (byte)(j1 + 1);
aoqi@0 323 j2 = (byte)(j2 + 2);
aoqi@0 324 }
aoqi@0 325 return (byte)(j1 + j2);
aoqi@0 326 }
aoqi@0 327
aoqi@0 328 static byte remi_summ2() {
aoqi@0 329 Byte j1 = new Byte((byte)1);
aoqi@0 330 Byte j2 = Byte.valueOf((byte)1);
aoqi@0 331 for (int i = 0; i< 1000; i++) {
aoqi@0 332 j1 = new Byte((byte)(j1 + 1));
aoqi@0 333 j2 = (byte)(j2 + 2);
aoqi@0 334 }
aoqi@0 335 return (byte)(j1 + j2);
aoqi@0 336 }
aoqi@0 337
aoqi@0 338 static byte remi_sump2(Byte j1) {
aoqi@0 339 Byte j2 = Byte.valueOf((byte)1);
aoqi@0 340 for (int i = 0; i< 1000; i++) {
aoqi@0 341 j1 = new Byte((byte)(j1 + 1));
aoqi@0 342 j2 = (byte)(j2 + 2);
aoqi@0 343 }
aoqi@0 344 return (byte)(j1 + j2);
aoqi@0 345 }
aoqi@0 346
aoqi@0 347 static byte remi_sumc2() {
aoqi@0 348 Byte j1 = ibc;
aoqi@0 349 Byte j2 = Byte.valueOf((byte)1);
aoqi@0 350 for (int i = 0; i< 1000; i++) {
aoqi@0 351 j1 = (byte)(j1 + ibc);
aoqi@0 352 j2 = (byte)(j2 + 2);
aoqi@0 353 }
aoqi@0 354 return (byte)(j1 + j2);
aoqi@0 355 }
aoqi@0 356
aoqi@0 357
aoqi@0 358 //===============================================
aoqi@0 359 // Safepointa and debug info for deoptimization
aoqi@0 360 static byte simple_deop(byte i) {
aoqi@0 361 Byte ib = new Byte(foo(i));
aoqi@0 362 dummy();
aoqi@0 363 return ib;
aoqi@0 364 }
aoqi@0 365
aoqi@0 366 static byte simpleb_deop(byte i) {
aoqi@0 367 Byte ib = Byte.valueOf(foo(i));
aoqi@0 368 dummy();
aoqi@0 369 return ib;
aoqi@0 370 }
aoqi@0 371
aoqi@0 372 static byte simplef_deop(byte i) {
aoqi@0 373 Byte ib = foob(i);
aoqi@0 374 dummy();
aoqi@0 375 return ib;
aoqi@0 376 }
aoqi@0 377
aoqi@0 378 static byte simplep_deop(Byte ib) {
aoqi@0 379 dummy();
aoqi@0 380 return ib;
aoqi@0 381 }
aoqi@0 382
aoqi@0 383 static byte simplec_deop(byte i) {
aoqi@0 384 Byte ib = ibc;
aoqi@0 385 dummy();
aoqi@0 386 return ib;
aoqi@0 387 }
aoqi@0 388
aoqi@0 389 static byte test_deop(byte i) {
aoqi@0 390 Byte ib = new Byte(foo(i));
aoqi@0 391 if ((i&1) == 0)
aoqi@0 392 ib = foo((byte)(i+1));
aoqi@0 393 dummy();
aoqi@0 394 return ib;
aoqi@0 395 }
aoqi@0 396
aoqi@0 397 static byte testb_deop(byte i) {
aoqi@0 398 Byte ib = foo(i);
aoqi@0 399 if ((i&1) == 0)
aoqi@0 400 ib = foo((byte)(i+1));
aoqi@0 401 dummy();
aoqi@0 402 return ib;
aoqi@0 403 }
aoqi@0 404
aoqi@0 405 static byte testf_deop(byte i) {
aoqi@0 406 Byte ib = foob(i);
aoqi@0 407 if ((i&1) == 0)
aoqi@0 408 ib = foo((byte)(i+1));
aoqi@0 409 dummy();
aoqi@0 410 return ib;
aoqi@0 411 }
aoqi@0 412
aoqi@0 413 static byte testp_deop(byte i, Byte ib) {
aoqi@0 414 if ((i&1) == 0)
aoqi@0 415 ib = foo((byte)(i+1));
aoqi@0 416 dummy();
aoqi@0 417 return ib;
aoqi@0 418 }
aoqi@0 419
aoqi@0 420 static byte testc_deop(byte i) {
aoqi@0 421 Byte ib = ibc;
aoqi@0 422 if ((i&1) == 0)
aoqi@0 423 ib = foo((byte)(i+1));
aoqi@0 424 dummy();
aoqi@0 425 return ib;
aoqi@0 426 }
aoqi@0 427
aoqi@0 428 static byte sum_deop(byte[] a) {
aoqi@0 429 byte result = 1;
aoqi@0 430 for (Byte i : a)
aoqi@0 431 result += foo(i);
aoqi@0 432 dummy();
aoqi@0 433 return result;
aoqi@0 434 }
aoqi@0 435
aoqi@0 436 static byte sumb_deop(byte[] a) {
aoqi@0 437 Byte result = 1;
aoqi@0 438 for (Byte i : a)
aoqi@0 439 result = (byte)(result + foo(i));
aoqi@0 440 dummy();
aoqi@0 441 return result;
aoqi@0 442 }
aoqi@0 443
aoqi@0 444 static byte sumf_deop(byte[] a) {
aoqi@0 445 Byte result = 1;
aoqi@0 446 for (Byte i : a)
aoqi@0 447 result = (byte)(result + foob(i));
aoqi@0 448 dummy();
aoqi@0 449 return result;
aoqi@0 450 }
aoqi@0 451
aoqi@0 452 static byte sump_deop(byte[] a, Byte result) {
aoqi@0 453 for (Byte i : a)
aoqi@0 454 result = (byte)(result + foob(i));
aoqi@0 455 dummy();
aoqi@0 456 return result;
aoqi@0 457 }
aoqi@0 458
aoqi@0 459 static byte sumc_deop(byte[] a) {
aoqi@0 460 Byte result = ibc;
aoqi@0 461 for (Byte i : a)
aoqi@0 462 result = (byte)(result + foo(i));
aoqi@0 463 dummy();
aoqi@0 464 return result;
aoqi@0 465 }
aoqi@0 466
aoqi@0 467 static byte remi_sum_deop() {
aoqi@0 468 Byte j = new Byte(foo((byte)1));
aoqi@0 469 for (int i = 0; i< 1000; i++) {
aoqi@0 470 j = new Byte(foo((byte)(j + 1)));
aoqi@0 471 }
aoqi@0 472 dummy();
aoqi@0 473 return j;
aoqi@0 474 }
aoqi@0 475
aoqi@0 476 static byte remi_sumb_deop() {
aoqi@0 477 Byte j = Byte.valueOf(foo((byte)1));
aoqi@0 478 for (int i = 0; i< 1000; i++) {
aoqi@0 479 j = foo((byte)(j + 1));
aoqi@0 480 }
aoqi@0 481 dummy();
aoqi@0 482 return j;
aoqi@0 483 }
aoqi@0 484
aoqi@0 485 static byte remi_sumf_deop() {
aoqi@0 486 Byte j = foob((byte)1);
aoqi@0 487 for (int i = 0; i< 1000; i++) {
aoqi@0 488 j = foo((byte)(j + 1));
aoqi@0 489 }
aoqi@0 490 dummy();
aoqi@0 491 return j;
aoqi@0 492 }
aoqi@0 493
aoqi@0 494 static byte remi_sump_deop(Byte j) {
aoqi@0 495 for (int i = 0; i< 1000; i++) {
aoqi@0 496 j = foo((byte)(j + 1));
aoqi@0 497 }
aoqi@0 498 dummy();
aoqi@0 499 return j;
aoqi@0 500 }
aoqi@0 501
aoqi@0 502 static byte remi_sumc_deop() {
aoqi@0 503 Byte j = ibc;
aoqi@0 504 for (int i = 0; i< 1000; i++) {
aoqi@0 505 j = foo((byte)(j + 1));
aoqi@0 506 }
aoqi@0 507 dummy();
aoqi@0 508 return j;
aoqi@0 509 }
aoqi@0 510
aoqi@0 511 //===============================================
aoqi@0 512 // Conditional increment
aoqi@0 513 static byte remi_sum_cond() {
aoqi@0 514 Byte j = new Byte((byte)1);
aoqi@0 515 for (int i = 0; i< 1000; i++) {
aoqi@0 516 if ((i&1) == 0) {
aoqi@0 517 j = new Byte((byte)(j + 1));
aoqi@0 518 }
aoqi@0 519 }
aoqi@0 520 return j;
aoqi@0 521 }
aoqi@0 522
aoqi@0 523 static byte remi_sumb_cond() {
aoqi@0 524 Byte j = Byte.valueOf((byte)1);
aoqi@0 525 for (int i = 0; i< 1000; i++) {
aoqi@0 526 if ((i&1) == 0) {
aoqi@0 527 j = (byte)(j + 1);
aoqi@0 528 }
aoqi@0 529 }
aoqi@0 530 return j;
aoqi@0 531 }
aoqi@0 532
aoqi@0 533 static byte remi_sumf_cond() {
aoqi@0 534 Byte j = foob((byte)1);
aoqi@0 535 for (int i = 0; i< 1000; i++) {
aoqi@0 536 if ((i&1) == 0) {
aoqi@0 537 j = (byte)(j + 1);
aoqi@0 538 }
aoqi@0 539 }
aoqi@0 540 return j;
aoqi@0 541 }
aoqi@0 542
aoqi@0 543 static byte remi_sump_cond(Byte j) {
aoqi@0 544 for (int i = 0; i< 1000; i++) {
aoqi@0 545 if ((i&1) == 0) {
aoqi@0 546 j = (byte)(j + 1);
aoqi@0 547 }
aoqi@0 548 }
aoqi@0 549 return j;
aoqi@0 550 }
aoqi@0 551
aoqi@0 552 static byte remi_sumc_cond() {
aoqi@0 553 Byte j = ibc;
aoqi@0 554 for (int i = 0; i< 1000; i++) {
aoqi@0 555 if ((i&1) == 0) {
aoqi@0 556 j = (byte)(j + ibc);
aoqi@0 557 }
aoqi@0 558 }
aoqi@0 559 return j;
aoqi@0 560 }
aoqi@0 561
aoqi@0 562 static byte remi_sum2_cond() {
aoqi@0 563 Byte j1 = new Byte((byte)1);
aoqi@0 564 Byte j2 = new Byte((byte)1);
aoqi@0 565 for (int i = 0; i< 1000; i++) {
aoqi@0 566 if ((i&1) == 0) {
aoqi@0 567 j1 = new Byte((byte)(j1 + 1));
aoqi@0 568 } else {
aoqi@0 569 j2 = new Byte((byte)(j2 + 2));
aoqi@0 570 }
aoqi@0 571 }
aoqi@0 572 return (byte)(j1 + j2);
aoqi@0 573 }
aoqi@0 574
aoqi@0 575 static byte remi_sumb2_cond() {
aoqi@0 576 Byte j1 = Byte.valueOf((byte)1);
aoqi@0 577 Byte j2 = Byte.valueOf((byte)1);
aoqi@0 578 for (int i = 0; i< 1000; i++) {
aoqi@0 579 if ((i&1) == 0) {
aoqi@0 580 j1 = (byte)(j1 + 1);
aoqi@0 581 } else {
aoqi@0 582 j2 = (byte)(j2 + 2);
aoqi@0 583 }
aoqi@0 584 }
aoqi@0 585 return (byte)(j1 + j2);
aoqi@0 586 }
aoqi@0 587
aoqi@0 588 static byte remi_summ2_cond() {
aoqi@0 589 Byte j1 = new Byte((byte)1);
aoqi@0 590 Byte j2 = Byte.valueOf((byte)1);
aoqi@0 591 for (int i = 0; i< 1000; i++) {
aoqi@0 592 if ((i&1) == 0) {
aoqi@0 593 j1 = new Byte((byte)(j1 + 1));
aoqi@0 594 } else {
aoqi@0 595 j2 = (byte)(j2 + 2);
aoqi@0 596 }
aoqi@0 597 }
aoqi@0 598 return (byte)(j1 + j2);
aoqi@0 599 }
aoqi@0 600
aoqi@0 601 static byte remi_sump2_cond(Byte j1) {
aoqi@0 602 Byte j2 = Byte.valueOf((byte)1);
aoqi@0 603 for (int i = 0; i< 1000; i++) {
aoqi@0 604 if ((i&1) == 0) {
aoqi@0 605 j1 = new Byte((byte)(j1 + 1));
aoqi@0 606 } else {
aoqi@0 607 j2 = (byte)(j2 + 2);
aoqi@0 608 }
aoqi@0 609 }
aoqi@0 610 return (byte)(j1 + j2);
aoqi@0 611 }
aoqi@0 612
aoqi@0 613 static byte remi_sumc2_cond() {
aoqi@0 614 Byte j1 = ibc;
aoqi@0 615 Byte j2 = Byte.valueOf((byte)1);
aoqi@0 616 for (int i = 0; i< 1000; i++) {
aoqi@0 617 if ((i&1) == 0) {
aoqi@0 618 j1 = (byte)(j1 + ibc);
aoqi@0 619 } else {
aoqi@0 620 j2 = (byte)(j2 + 2);
aoqi@0 621 }
aoqi@0 622 }
aoqi@0 623 return (byte)(j1 + j2);
aoqi@0 624 }
aoqi@0 625
aoqi@0 626
aoqi@0 627 public static void main(String[] args) {
aoqi@0 628 final int ntests = 70;
aoqi@0 629
aoqi@0 630 String[] test_name = new String[] {
aoqi@0 631 "simple", "simpleb", "simplec", "simplef", "simplep",
aoqi@0 632 "simple2", "simpleb2", "simplec2", "simplem2", "simplep2",
aoqi@0 633 "simple_deop", "simpleb_deop", "simplec_deop", "simplef_deop", "simplep_deop",
aoqi@0 634 "test", "testb", "testc", "testm", "testp",
aoqi@0 635 "test2", "testb2", "testc2", "testm2", "testp2",
aoqi@0 636 "test_deop", "testb_deop", "testc_deop", "testf_deop", "testp_deop",
aoqi@0 637 "sum", "sumb", "sumc", "sumf", "sump",
aoqi@0 638 "sum2", "sumb2", "sumc2", "summ2", "sump2",
aoqi@0 639 "sum_deop", "sumb_deop", "sumc_deop", "sumf_deop", "sump_deop",
aoqi@0 640 "remi_sum", "remi_sumb", "remi_sumc", "remi_sumf", "remi_sump",
aoqi@0 641 "remi_sum2", "remi_sumb2", "remi_sumc2", "remi_summ2", "remi_sump2",
aoqi@0 642 "remi_sum_deop", "remi_sumb_deop", "remi_sumc_deop", "remi_sumf_deop", "remi_sump_deop",
aoqi@0 643 "remi_sum_cond", "remi_sumb_cond", "remi_sumc_cond", "remi_sumf_cond", "remi_sump_cond",
aoqi@0 644 "remi_sum2_cond", "remi_sumb2_cond", "remi_sumc2_cond", "remi_summ2_cond", "remi_sump2_cond"
aoqi@0 645 };
aoqi@0 646
aoqi@0 647 final int[] val = new int[] {
aoqi@0 648 -5488, -5488, 12000, -5488, -5488,
aoqi@0 649 1024, 1024, -5552, 1024, 1024,
aoqi@0 650 -5488, -5488, 12000, -5488, -5488,
aoqi@0 651 512, 512, 6256, 512, 512,
aoqi@0 652 13024, 13024, -5584, 13024, 13024,
aoqi@0 653 512, 512, 6256, 512, 512,
aoqi@0 654 45, 45, 45, 45, 45,
aoqi@0 655 66, 66, 66, 66, 66,
aoqi@0 656 45, 45, 45, 45, 45,
aoqi@0 657 -23, -23, -23, -23, -23,
aoqi@0 658 -70, -70, -70, -70, -70,
aoqi@0 659 -23, -23, -23, -23, -23,
aoqi@0 660 -11, -11, -11, -11, -11,
aoqi@0 661 -34, -34, -34, -34, -34
aoqi@0 662 };
aoqi@0 663
aoqi@0 664 int[] res = new int[ntests];
aoqi@0 665 for (int i = 0; i < ntests; i++) {
aoqi@0 666 res[i] = 0;
aoqi@0 667 }
aoqi@0 668
aoqi@0 669
aoqi@0 670 for (int i = 0; i < 12000; i++) {
aoqi@0 671 res[0] += simple((byte)i);
aoqi@0 672 res[1] += simpleb((byte)i);
aoqi@0 673 res[2] += simplec();
aoqi@0 674 res[3] += simplef((byte)i);
aoqi@0 675 res[4] += simplep((byte)i);
aoqi@0 676
aoqi@0 677 res[5] += simple2((byte)i);
aoqi@0 678 res[6] += simpleb2((byte)i);
aoqi@0 679 res[7] += simplec2((byte)i);
aoqi@0 680 res[8] += simplem2((byte)i);
aoqi@0 681 res[9] += simplep2((byte)i, (byte)i);
aoqi@0 682
aoqi@0 683 res[10] += simple_deop((byte)i);
aoqi@0 684 res[11] += simpleb_deop((byte)i);
aoqi@0 685 res[12] += simplec_deop((byte)i);
aoqi@0 686 res[13] += simplef_deop((byte)i);
aoqi@0 687 res[14] += simplep_deop((byte)i);
aoqi@0 688
aoqi@0 689 res[15] += test((byte)i);
aoqi@0 690 res[16] += testb((byte)i);
aoqi@0 691 res[17] += testc((byte)i);
aoqi@0 692 res[18] += testm((byte)i);
aoqi@0 693 res[19] += testp((byte)i, (byte)i);
aoqi@0 694
aoqi@0 695 res[20] += test2((byte)i);
aoqi@0 696 res[21] += testb2((byte)i);
aoqi@0 697 res[22] += testc2((byte)i);
aoqi@0 698 res[23] += testm2((byte)i);
aoqi@0 699 res[24] += testp2((byte)i, (byte)i);
aoqi@0 700
aoqi@0 701 res[25] += test_deop((byte)i);
aoqi@0 702 res[26] += testb_deop((byte)i);
aoqi@0 703 res[27] += testc_deop((byte)i);
aoqi@0 704 res[28] += testf_deop((byte)i);
aoqi@0 705 res[29] += testp_deop((byte)i, (byte)i);
aoqi@0 706 }
aoqi@0 707
aoqi@0 708 byte[] ia = new byte[1000];
aoqi@0 709 for (int i = 0; i < 1000; i++) {
aoqi@0 710 ia[i] = (byte)i;
aoqi@0 711 }
aoqi@0 712
aoqi@0 713 for (int i = 0; i < 100; i++) {
aoqi@0 714 res[30] = sum(ia);
aoqi@0 715 res[31] = sumb(ia);
aoqi@0 716 res[32] = sumc(ia);
aoqi@0 717 res[33] = sumf(ia);
aoqi@0 718 res[34] = sump(ia, (byte)1);
aoqi@0 719
aoqi@0 720 res[35] = sum2(ia);
aoqi@0 721 res[36] = sumb2(ia);
aoqi@0 722 res[37] = sumc2(ia);
aoqi@0 723 res[38] = summ2(ia);
aoqi@0 724 res[39] = sump2(ia, (byte)1);
aoqi@0 725
aoqi@0 726 res[40] = sum_deop(ia);
aoqi@0 727 res[41] = sumb_deop(ia);
aoqi@0 728 res[42] = sumc_deop(ia);
aoqi@0 729 res[43] = sumf_deop(ia);
aoqi@0 730 res[44] = sump_deop(ia, (byte)1);
aoqi@0 731
aoqi@0 732 res[45] = remi_sum();
aoqi@0 733 res[46] = remi_sumb();
aoqi@0 734 res[47] = remi_sumc();
aoqi@0 735 res[48] = remi_sumf();
aoqi@0 736 res[49] = remi_sump((byte)1);
aoqi@0 737
aoqi@0 738 res[50] = remi_sum2();
aoqi@0 739 res[51] = remi_sumb2();
aoqi@0 740 res[52] = remi_sumc2();
aoqi@0 741 res[53] = remi_summ2();
aoqi@0 742 res[54] = remi_sump2((byte)1);
aoqi@0 743
aoqi@0 744 res[55] = remi_sum_deop();
aoqi@0 745 res[56] = remi_sumb_deop();
aoqi@0 746 res[57] = remi_sumc_deop();
aoqi@0 747 res[58] = remi_sumf_deop();
aoqi@0 748 res[59] = remi_sump_deop((byte)1);
aoqi@0 749
aoqi@0 750 res[60] = remi_sum_cond();
aoqi@0 751 res[61] = remi_sumb_cond();
aoqi@0 752 res[62] = remi_sumc_cond();
aoqi@0 753 res[63] = remi_sumf_cond();
aoqi@0 754 res[64] = remi_sump_cond((byte)1);
aoqi@0 755
aoqi@0 756 res[65] = remi_sum2_cond();
aoqi@0 757 res[66] = remi_sumb2_cond();
aoqi@0 758 res[67] = remi_sumc2_cond();
aoqi@0 759 res[68] = remi_summ2_cond();
aoqi@0 760 res[69] = remi_sump2_cond((byte)1);
aoqi@0 761 }
aoqi@0 762
aoqi@0 763 int failed = 0;
aoqi@0 764 for (int i = 0; i < ntests; i++) {
aoqi@0 765 if (res[i] != val[i]) {
aoqi@0 766 System.err.println(test_name[i] + ": " + res[i] + " != " + val[i]);
aoqi@0 767 failed++;
aoqi@0 768 }
aoqi@0 769 }
aoqi@0 770 if (failed > 0) {
aoqi@0 771 System.err.println("Failed " + failed + " tests.");
aoqi@0 772 throw new InternalError();
aoqi@0 773 } else {
aoqi@0 774 System.out.println("Passed.");
aoqi@0 775 }
aoqi@0 776 }
aoqi@0 777 }

mercurial