1 /* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 import other.Mutant; 18 19 /* 20 * Entry point and tests that are expected to succeed. 21 */ 22 public class Main { 23 24 /** 25 * Drives tests. 26 */ main(String[] args)27 public static void main(String[] args) { 28 29 // Test static put/get 30 testStaticInt(); 31 testStaticVolatileInt(); 32 testStaticWide(); 33 testStaticVolatileWide(); 34 testStaticObject(); 35 testStaticVolatileObject(); 36 testStaticBoolean(); 37 testStaticByte(); 38 testStaticChar(); 39 testStaticShort(); 40 41 // Test field put/get 42 JumboField fieldTest = new JumboField(); 43 testFieldInt(fieldTest); 44 testFieldVolatileInt(fieldTest); 45 testFieldWide(fieldTest); 46 testFieldVolatileWide(fieldTest); 47 testFieldObject(fieldTest); 48 testFieldVolatileObject(fieldTest); 49 testFieldBoolean(fieldTest); 50 testFieldByte(fieldTest); 51 testFieldChar(fieldTest); 52 testFieldShort(fieldTest); 53 54 // Test method invokes 55 JumboMethod methodTest = new JumboMethod(); 56 methodTest.testMethods(); 57 58 // Test remaining jumbo instructions 59 // const-class/jumbo, check-cast/jumbo, instance-of/jumbo, 60 // new-instance/jumbo, new-array/jumbo, filled-new-array/jumbo 61 // throw-verification-error/jumbo 62 JumboRegister registerTest = new JumboRegister(); 63 registerTest.testRegisters(); 64 } 65 66 // Test sput/jumbo & sget/jumbo testStaticInt()67 public static void testStaticInt() { 68 int putInt = 0x12345678; 69 JumboStatic.testInt = putInt; 70 int getInt = JumboStatic.testInt; 71 if (putInt != getInt) { 72 System.out.println("Static put int: " + putInt + 73 " does not match static get int: " + getInt); 74 } 75 } 76 77 // Test sput-wide/jumbo & sget-wide/jumbo testStaticWide()78 public static void testStaticWide() { 79 long putWide = 0xfedcba9876543210l; 80 JumboStatic.testWide = putWide; 81 long getWide = JumboStatic.testWide; 82 if (putWide != getWide) { 83 System.out.println("Static put wide: " + putWide + 84 " does not match static get wide: " + getWide); 85 } 86 } 87 88 // Test sput-object/jumbo & sget-object/jumbo testStaticObject()89 public static void testStaticObject() { 90 Object putObject = new Object(); 91 JumboStatic.testObject = putObject; 92 Object getObject = JumboStatic.testObject; 93 if (putObject != getObject) { 94 System.out.println("Static put object: " + putObject + 95 " does not match static get object: " + getObject); 96 } 97 } 98 99 // Test sput-volatile/jumbo & sget-volatile/jumbo testStaticVolatileInt()100 public static void testStaticVolatileInt() { 101 int putInt = 0x12345678; 102 JumboStatic.testVolatileInt = putInt; 103 int getInt = JumboStatic.testVolatileInt; 104 if (putInt != getInt) { 105 System.out.println("Static put int: " + putInt + 106 " does not match static get int: " + getInt); 107 } 108 } 109 110 // Test sput-wide-volatile/jumbo & sget-wide-volatile/jumbo testStaticVolatileWide()111 public static void testStaticVolatileWide() { 112 long putWide = 0xfedcba9876543210l; 113 JumboStatic.testVolatileWide = putWide; 114 long getWide = JumboStatic.testVolatileWide; 115 if (putWide != getWide) { 116 System.out.println("Static put wide: " + putWide + 117 " does not match static get wide: " + getWide); 118 } 119 } 120 121 // Test sput-object-volatile/jumbo & sget-object-volatile/jumbo testStaticVolatileObject()122 public static void testStaticVolatileObject() { 123 Object putObject = new Object(); 124 JumboStatic.testVolatileObject = putObject; 125 Object getObject = JumboStatic.testVolatileObject; 126 if (putObject != getObject) { 127 System.out.println("Static put object: " + putObject + 128 " does not match static get object: " + getObject); 129 } 130 } 131 132 // Test sput-boolean/jumbo & sget-boolean/jumbo testStaticBoolean()133 public static void testStaticBoolean() { 134 boolean putBoolean = true; 135 JumboStatic.testBoolean = putBoolean; 136 boolean getBoolean = JumboStatic.testBoolean; 137 if (putBoolean != getBoolean) { 138 System.out.println("Static put boolean: " + putBoolean + 139 " does not match static get boolean: " + getBoolean); 140 } 141 } 142 143 // Test sput-byte/jumbo & sget-byte/jumbo testStaticByte()144 public static void testStaticByte() { 145 byte putByte = 0x6D; 146 JumboStatic.testByte = putByte; 147 byte getByte = JumboStatic.testByte; 148 if (putByte != getByte) { 149 System.out.println("Static put byte: " + putByte + 150 " does not match static get byte: " + getByte); 151 } 152 } 153 154 // Test sput-char/jumbo & sget-char/jumbo testStaticChar()155 public static void testStaticChar() { 156 char putChar = 0xE5; 157 JumboStatic.testChar = putChar; 158 char getChar = JumboStatic.testChar; 159 if (putChar != getChar) { 160 System.out.println("Static put char: " + putChar + 161 " does not match static get char: " + getChar); 162 } 163 } 164 165 // Test sput-short/jumbo & sget-short/jumbo testStaticShort()166 public static void testStaticShort() { 167 short putShort = 0x7A3B; 168 JumboStatic.testShort = putShort; 169 short getShort = JumboStatic.testShort; 170 if (putShort != getShort) { 171 System.out.println("Static put short: " + putShort + 172 " does not match static get short: " + getShort); 173 } 174 } 175 176 // Test iput/jumbo & iget/jumbo testFieldInt(JumboField fieldTest)177 public static void testFieldInt(JumboField fieldTest) { 178 int putInt = 0x12345678; 179 fieldTest.testInt = putInt; 180 int getInt = fieldTest.testInt; 181 if (putInt != getInt) { 182 System.out.println("Field put int: " + putInt + 183 " does not match field get int: " + getInt); 184 } 185 } 186 187 // Test iput-wide/jumbo & iget-wide/jumbo testFieldWide(JumboField fieldTest)188 public static void testFieldWide(JumboField fieldTest) { 189 long putWide = 0xfedcba9876543210l; 190 fieldTest.testWide = putWide; 191 long getWide = fieldTest.testWide; 192 if (putWide != getWide) { 193 System.out.println("Field put wide: " + putWide + 194 " does not match field get wide: " + getWide); 195 } 196 } 197 198 // Test iput-object/jumbo & iget-object/jumbo testFieldObject(JumboField fieldTest)199 public static void testFieldObject(JumboField fieldTest) { 200 Object putObject = new Object(); 201 fieldTest.testObject = putObject; 202 Object getObject = fieldTest.testObject; 203 if (putObject != getObject) { 204 System.out.println("Field put object: " + putObject + 205 " does not match field get object: " + getObject); 206 } 207 } 208 209 // Test iput-volatile/jumbo & iget-volatile/jumbo testFieldVolatileInt(JumboField fieldTest)210 public static void testFieldVolatileInt(JumboField fieldTest) { 211 int putInt = 0x12345678; 212 fieldTest.testVolatileInt = putInt; 213 int getInt = fieldTest.testVolatileInt; 214 if (putInt != getInt) { 215 System.out.println("Field put int: " + putInt + 216 " does not match field get int: " + getInt); 217 } 218 } 219 220 // Test iput-wide-volatile/jumbo & iget-wide-volatile/jumbo testFieldVolatileWide(JumboField fieldTest)221 public static void testFieldVolatileWide(JumboField fieldTest) { 222 long putWide = 0xfedcba9876543210l; 223 fieldTest.testVolatileWide = putWide; 224 long getWide = fieldTest.testVolatileWide; 225 if (putWide != getWide) { 226 System.out.println("Field put wide: " + putWide + 227 " does not match field get wide: " + getWide); 228 } 229 } 230 231 // Test iput-object-volatile/jumbo & iget-object-volatile/jumbo testFieldVolatileObject(JumboField fieldTest)232 public static void testFieldVolatileObject(JumboField fieldTest) { 233 Object putObject = new Object(); 234 fieldTest.testVolatileObject = putObject; 235 Object getObject = fieldTest.testVolatileObject; 236 if (putObject != getObject) { 237 System.out.println("Field put object: " + putObject + 238 " does not match field get object: " + getObject); 239 } 240 } 241 242 // Test iput-boolean/jumbo & iget-boolean/jumbo testFieldBoolean(JumboField fieldTest)243 public static void testFieldBoolean(JumboField fieldTest) { 244 boolean putBoolean = true; 245 fieldTest.testBoolean = putBoolean; 246 boolean getBoolean = fieldTest.testBoolean; 247 if (putBoolean != getBoolean) { 248 System.out.println("Field put boolean: " + putBoolean + 249 " does not match field get boolean: " + getBoolean); 250 } 251 } 252 253 // Test iput-byte/jumbo & iget-byte/jumbo testFieldByte(JumboField fieldTest)254 public static void testFieldByte(JumboField fieldTest) { 255 byte putByte = 0x6D; 256 fieldTest.testByte = putByte; 257 byte getByte = fieldTest.testByte; 258 if (putByte != getByte) { 259 System.out.println("Field put byte: " + putByte + 260 " does not match field get byte: " + getByte); 261 } 262 } 263 264 // Test iput-char/jumbo & iget-char/jumbo testFieldChar(JumboField fieldTest)265 public static void testFieldChar(JumboField fieldTest) { 266 char putChar = 0xE5; 267 fieldTest.testChar = putChar; 268 char getChar = fieldTest.testChar; 269 if (putChar != getChar) { 270 System.out.println("Field put char: " + putChar + 271 " does not match field get char: " + getChar); 272 } 273 } 274 275 // Test iput-short/jumbo & iget-short/jumbo testFieldShort(JumboField fieldTest)276 public static void testFieldShort(JumboField fieldTest) { 277 short putShort = 0x7A3B; 278 fieldTest.testShort = putShort; 279 short getShort = fieldTest.testShort; 280 if (putShort != getShort) { 281 System.out.println("Field put short: " + putShort + 282 " does not match field get short: " + getShort); 283 } 284 } 285 } 286 287 class JumboStatic { 288 static int staticInt1; 289 static int staticInt2; 290 static int staticInt3; 291 static int staticInt4; 292 static int staticInt5; 293 static int staticInt6; 294 static int staticInt7; 295 static int staticInt8; 296 static int staticInt9; 297 static int staticInt10; 298 static int staticInt11; 299 static int staticInt12; 300 static int staticInt13; 301 static int staticInt14; 302 static int staticInt15; 303 static int staticInt16; 304 static int staticInt17; 305 static int staticInt18; 306 static int staticInt19; 307 static int staticInt20; 308 static int staticInt21; 309 static int staticInt22; 310 static int staticInt23; 311 static int staticInt24; 312 static int staticInt25; 313 static int staticInt26; 314 static int staticInt27; 315 static int staticInt28; 316 static int staticInt29; 317 static int staticInt30; 318 static int staticInt31; 319 static int staticInt32; 320 static int staticInt33; 321 static int staticInt34; 322 static int staticInt35; 323 static int staticInt36; 324 static int staticInt37; 325 static int staticInt38; 326 static int staticInt39; 327 static int staticInt40; 328 static int staticInt41; 329 static int staticInt42; 330 static int staticInt43; 331 static int staticInt44; 332 static int staticInt45; 333 static int staticInt46; 334 static int staticInt47; 335 static int staticInt48; 336 static int staticInt49; 337 static int staticInt50; 338 339 static int testInt; 340 static long testWide; 341 static Object testObject; 342 static boolean testBoolean; 343 static byte testByte; 344 static char testChar; 345 static short testShort; 346 static volatile int testVolatileInt; 347 static volatile long testVolatileWide; 348 static volatile Object testVolatileObject; 349 } 350 351 class JumboField { 352 int fieldInt1; 353 int fieldInt2; 354 int fieldInt3; 355 int fieldInt4; 356 int fieldInt5; 357 int fieldInt6; 358 int fieldInt7; 359 int fieldInt8; 360 int fieldInt9; 361 int fieldInt10; 362 int fieldInt11; 363 int fieldInt12; 364 int fieldInt13; 365 int fieldInt14; 366 int fieldInt15; 367 int fieldInt16; 368 int fieldInt17; 369 int fieldInt18; 370 int fieldInt19; 371 int fieldInt20; 372 int fieldInt21; 373 int fieldInt22; 374 int fieldInt23; 375 int fieldInt24; 376 int fieldInt25; 377 int fieldInt26; 378 int fieldInt27; 379 int fieldInt28; 380 int fieldInt29; 381 int fieldInt30; 382 int fieldInt31; 383 int fieldInt32; 384 int fieldInt33; 385 int fieldInt34; 386 int fieldInt35; 387 int fieldInt36; 388 int fieldInt37; 389 int fieldInt38; 390 int fieldInt39; 391 int fieldInt40; 392 int fieldInt41; 393 int fieldInt42; 394 int fieldInt43; 395 int fieldInt44; 396 int fieldInt45; 397 int fieldInt46; 398 int fieldInt47; 399 int fieldInt48; 400 int fieldInt49; 401 int fieldInt50; 402 403 int testInt; 404 long testWide; 405 Object testObject; 406 boolean testBoolean; 407 byte testByte; 408 char testChar; 409 short testShort; 410 volatile int testVolatileInt; 411 volatile long testVolatileWide; 412 volatile Object testVolatileObject; 413 } 414 415 class JumboMethodSuper { testSuper()416 void testSuper() { 417 System.out.println("Invoked super"); 418 } 419 } 420 421 interface JumboMethodInterface { testInterface()422 void testInterface(); 423 } 424 425 class JumboMethod extends JumboMethodSuper implements JumboMethodInterface { meth1()426 void meth1() { } meth2()427 void meth2() { } meth3()428 void meth3() { } meth4()429 void meth4() { } meth5()430 void meth5() { } meth6()431 void meth6() { } meth7()432 void meth7() { } meth8()433 void meth8() { } meth9()434 void meth9() { } meth10()435 void meth10() { } meth11()436 void meth11() { } meth12()437 void meth12() { } meth13()438 void meth13() { } meth14()439 void meth14() { } meth15()440 void meth15() { } meth16()441 void meth16() { } meth17()442 void meth17() { } meth18()443 void meth18() { } meth19()444 void meth19() { } meth20()445 void meth20() { } meth21()446 void meth21() { } meth22()447 void meth22() { } meth23()448 void meth23() { } meth24()449 void meth24() { } meth25()450 void meth25() { } meth26()451 void meth26() { } meth27()452 void meth27() { } meth28()453 void meth28() { } meth29()454 void meth29() { } meth30()455 void meth30() { } meth31()456 void meth31() { } meth32()457 void meth32() { } meth33()458 void meth33() { } meth34()459 void meth34() { } meth35()460 void meth35() { } meth36()461 void meth36() { } meth37()462 void meth37() { } meth38()463 void meth38() { } meth39()464 void meth39() { } meth40()465 void meth40() { } meth41()466 void meth41() { } meth42()467 void meth42() { } meth43()468 void meth43() { } meth44()469 void meth44() { } meth45()470 void meth45() { } meth46()471 void meth46() { } meth47()472 void meth47() { } meth48()473 void meth48() { } meth49()474 void meth49() { } meth50()475 void meth50() { } 476 testMethods()477 void testMethods() { 478 testVirtual(); 479 super.testSuper(); 480 testDirect(); 481 testStatic(); 482 ((JumboMethodInterface) this).testInterface(); 483 } 484 testVirtual()485 void testVirtual() { 486 System.out.println("Invoked virtual"); 487 } 488 testSuper()489 void testSuper() { 490 System.out.println("Invoked base"); 491 } 492 testDirect()493 private void testDirect() { 494 System.out.println("Invoked direct"); 495 } 496 testStatic()497 static void testStatic() { 498 System.out.println("Invoked static"); 499 } 500 testInterface()501 public void testInterface() { 502 System.out.println("Invoked interface"); 503 } 504 } 505 506 class JumboRegister { testRegisters()507 void testRegisters() { 508 // Create a bunch of registers 509 Class c1 = Thread.class; 510 Class c2 = Thread.class; 511 Class c3 = Thread.class; 512 Class c4 = Thread.class; 513 Class c5 = Thread.class; 514 Class c6 = Thread.class; 515 Class c7 = Thread.class; 516 Class c8 = Thread.class; 517 Class c9 = Thread.class; 518 Class c10 = Thread.class; 519 Class c11 = Thread.class; 520 Class c12 = Thread.class; 521 Class c13 = Thread.class; 522 Class c14 = Thread.class; 523 Class c15 = Thread.class; 524 Class c16 = Thread.class; 525 Class c17 = Thread.class; 526 Class c18 = Thread.class; 527 Class c19 = Thread.class; 528 Class c20 = Thread.class; 529 Class c21 = Thread.class; 530 Class c22 = Thread.class; 531 Class c23 = Thread.class; 532 Class c24 = Thread.class; 533 Class c25 = Thread.class; 534 Class c26 = Thread.class; 535 Class c27 = Thread.class; 536 Class c28 = Thread.class; 537 Class c29 = Thread.class; 538 Class c30 = Thread.class; 539 Class c31 = Thread.class; 540 Class c32 = Thread.class; 541 Class c33 = Thread.class; 542 Class c34 = Thread.class; 543 Class c35 = Thread.class; 544 Class c36 = Thread.class; 545 Class c37 = Thread.class; 546 Class c38 = Thread.class; 547 Class c39 = Thread.class; 548 Class c40 = Thread.class; 549 Class c41 = Thread.class; 550 Class c42 = Thread.class; 551 Class c43 = Thread.class; 552 Class c44 = Thread.class; 553 Class c45 = Thread.class; 554 Class c46 = Thread.class; 555 Class c47 = Thread.class; 556 Class c48 = Thread.class; 557 Class c49 = Thread.class; 558 Class c50 = Thread.class; 559 Class c51 = Thread.class; 560 Class c52 = Thread.class; 561 Class c53 = Thread.class; 562 Class c54 = Thread.class; 563 Class c55 = Thread.class; 564 Class c56 = Thread.class; 565 Class c57 = Thread.class; 566 Class c58 = Thread.class; 567 Class c59 = Thread.class; 568 Class c60 = Thread.class; 569 Class c61 = Thread.class; 570 Class c62 = Thread.class; 571 Class c63 = Thread.class; 572 Class c64 = Thread.class; 573 Class c65 = Thread.class; 574 Class c66 = Thread.class; 575 Class c67 = Thread.class; 576 Class c68 = Thread.class; 577 Class c69 = Thread.class; 578 Class c70 = Thread.class; 579 Class c71 = Thread.class; 580 Class c72 = Thread.class; 581 Class c73 = Thread.class; 582 Class c74 = Thread.class; 583 Class c75 = Thread.class; 584 Class c76 = Thread.class; 585 Class c77 = Thread.class; 586 Class c78 = Thread.class; 587 Class c79 = Thread.class; 588 Class c80 = Thread.class; 589 Class c81 = Thread.class; 590 Class c82 = Thread.class; 591 Class c83 = Thread.class; 592 Class c84 = Thread.class; 593 Class c85 = Thread.class; 594 Class c86 = Thread.class; 595 Class c87 = Thread.class; 596 Class c88 = Thread.class; 597 Class c89 = Thread.class; 598 Class c90 = Thread.class; 599 Class c91 = Thread.class; 600 Class c92 = Thread.class; 601 Class c93 = Thread.class; 602 Class c94 = Thread.class; 603 Class c95 = Thread.class; 604 Class c96 = Thread.class; 605 Class c97 = Thread.class; 606 Class c98 = Thread.class; 607 Class c99 = Thread.class; 608 Class c100 = Thread.class; 609 Class c101 = Thread.class; 610 Class c102 = Thread.class; 611 Class c103 = Thread.class; 612 Class c104 = Thread.class; 613 Class c105 = Thread.class; 614 Class c106 = Thread.class; 615 Class c107 = Thread.class; 616 Class c108 = Thread.class; 617 Class c109 = Thread.class; 618 Class c110 = Thread.class; 619 Class c111 = Thread.class; 620 Class c112 = Thread.class; 621 Class c113 = Thread.class; 622 Class c114 = Thread.class; 623 Class c115 = Thread.class; 624 Class c116 = Thread.class; 625 Class c117 = Thread.class; 626 Class c118 = Thread.class; 627 Class c119 = Thread.class; 628 Class c120 = Thread.class; 629 Class c121 = Thread.class; 630 Class c122 = Thread.class; 631 Class c123 = Thread.class; 632 Class c124 = Thread.class; 633 Class c125 = Thread.class; 634 Class c126 = Thread.class; 635 Class c127 = Thread.class; 636 Class c128 = Thread.class; 637 Class c129 = Thread.class; 638 Class c130 = Thread.class; 639 Class c131 = Thread.class; 640 Class c132 = Thread.class; 641 Class c133 = Thread.class; 642 Class c134 = Thread.class; 643 Class c135 = Thread.class; 644 Class c136 = Thread.class; 645 Class c137 = Thread.class; 646 Class c138 = Thread.class; 647 Class c139 = Thread.class; 648 Class c140 = Thread.class; 649 Class c141 = Thread.class; 650 Class c142 = Thread.class; 651 Class c143 = Thread.class; 652 Class c144 = Thread.class; 653 Class c145 = Thread.class; 654 Class c146 = Thread.class; 655 Class c147 = Thread.class; 656 Class c148 = Thread.class; 657 Class c149 = Thread.class; 658 Class c150 = Thread.class; 659 Class c151 = Thread.class; 660 Class c152 = Thread.class; 661 Class c153 = Thread.class; 662 Class c154 = Thread.class; 663 Class c155 = Thread.class; 664 Class c156 = Thread.class; 665 Class c157 = Thread.class; 666 Class c158 = Thread.class; 667 Class c159 = Thread.class; 668 Class c160 = Thread.class; 669 Class c161 = Thread.class; 670 Class c162 = Thread.class; 671 Class c163 = Thread.class; 672 Class c164 = Thread.class; 673 Class c165 = Thread.class; 674 Class c166 = Thread.class; 675 Class c167 = Thread.class; 676 Class c168 = Thread.class; 677 Class c169 = Thread.class; 678 Class c170 = Thread.class; 679 Class c171 = Thread.class; 680 Class c172 = Thread.class; 681 Class c173 = Thread.class; 682 Class c174 = Thread.class; 683 Class c175 = Thread.class; 684 Class c176 = Thread.class; 685 Class c177 = Thread.class; 686 Class c178 = Thread.class; 687 Class c179 = Thread.class; 688 Class c180 = Thread.class; 689 Class c181 = Thread.class; 690 Class c182 = Thread.class; 691 Class c183 = Thread.class; 692 Class c184 = Thread.class; 693 Class c185 = Thread.class; 694 Class c186 = Thread.class; 695 Class c187 = Thread.class; 696 Class c188 = Thread.class; 697 Class c189 = Thread.class; 698 Class c190 = Thread.class; 699 Class c191 = Thread.class; 700 Class c192 = Thread.class; 701 Class c193 = Thread.class; 702 Class c194 = Thread.class; 703 Class c195 = Thread.class; 704 Class c196 = Thread.class; 705 Class c197 = Thread.class; 706 Class c198 = Thread.class; 707 Class c199 = Thread.class; 708 Class c200 = Thread.class; 709 Class c201 = Thread.class; 710 Class c202 = Thread.class; 711 Class c203 = Thread.class; 712 Class c204 = Thread.class; 713 Class c205 = Thread.class; 714 Class c206 = Thread.class; 715 Class c207 = Thread.class; 716 Class c208 = Thread.class; 717 Class c209 = Thread.class; 718 Class c210 = Thread.class; 719 Class c211 = Thread.class; 720 Class c212 = Thread.class; 721 Class c213 = Thread.class; 722 Class c214 = Thread.class; 723 Class c215 = Thread.class; 724 Class c216 = Thread.class; 725 Class c217 = Thread.class; 726 Class c218 = Thread.class; 727 Class c219 = Thread.class; 728 Class c220 = Thread.class; 729 Class c221 = Thread.class; 730 Class c222 = Thread.class; 731 Class c223 = Thread.class; 732 Class c224 = Thread.class; 733 Class c225 = Thread.class; 734 Class c226 = Thread.class; 735 Class c227 = Thread.class; 736 Class c228 = Thread.class; 737 Class c229 = Thread.class; 738 Class c230 = Thread.class; 739 Class c231 = Thread.class; 740 Class c232 = Thread.class; 741 Class c233 = Thread.class; 742 Class c234 = Thread.class; 743 Class c235 = Thread.class; 744 Class c236 = Thread.class; 745 Class c237 = Thread.class; 746 Class c238 = Thread.class; 747 Class c239 = Thread.class; 748 Class c240 = Thread.class; 749 Class c241 = Thread.class; 750 Class c242 = Thread.class; 751 Class c243 = Thread.class; 752 Class c244 = Thread.class; 753 Class c245 = Thread.class; 754 Class c246 = Thread.class; 755 Class c247 = Thread.class; 756 Class c248 = Thread.class; 757 Class c249 = Thread.class; 758 Class c250 = Thread.class; 759 Class c251 = Thread.class; 760 Class c252 = Thread.class; 761 Class c253 = Thread.class; 762 Class c254 = Thread.class; 763 Class c255 = Thread.class; 764 765 // Test const-class/jumbo 766 Class c256 = Thread.class; 767 768 // Test check-cast/jumbo 769 770 // Test instance-of/jumbo 771 boolean b1 = c1 instanceof Object; 772 if (!b1) System.out.println("instance-of/jumbo returned wrong result"); 773 774 // Test new-instance/jumbo 775 Object o1 = new Object(); 776 777 // Test new-array/jumbo 778 int[] a1 = new int[10]; 779 a1[0] = 1; 780 a1[1] = 2; 781 a1[2] = 3; 782 a1[3] = 4; 783 a1[4] = 5; 784 a1[5] = 6; 785 a1[6] = 7; 786 a1[7] = 8; 787 a1[8] = 9; 788 a1[9] = 10; 789 790 // Test filled-new-array/jumbo 791 792 // Test throw-verification-error/jumbo 793 try { 794 MaybeAbstract ma = new MaybeAbstract(); 795 System.err.println("ERROR: MaybeAbstract succeeded unexpectedly"); 796 } catch (InstantiationError ie) { 797 System.out.println("Got expected InstantationError"); 798 } catch (Exception ex) { 799 System.err.println("Got unexpected MaybeAbstract failure"); 800 } 801 testMissingStuff(); 802 803 // Do something with those registers to force other ops to be jumbo 804 useRegs(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10); 805 useRegs(c11, c12, c13, c14, c15, c16, c17, c18, c19, c20); 806 useRegs(c21, c22, c23, c24, c25, c26, c27, c28, c29, c30); 807 useRegs(c31, c32, c33, c34, c35, c36, c37, c38, c39, c40); 808 useRegs(c41, c42, c43, c44, c45, c46, c47, c48, c49, c50); 809 useRegs(c51, c52, c53, c54, c55, c56, c57, c58, c59, c60); 810 useRegs(c61, c62, c63, c64, c65, c66, c67, c68, c69, c70); 811 useRegs(c71, c72, c73, c74, c75, c76, c77, c78, c79, c80); 812 useRegs(c81, c82, c83, c84, c85, c86, c87, c88, c89, c90); 813 useRegs(c91, c92, c93, c94, c95, c96, c97, c98, c99, c100); 814 useRegs(c101, c102, c103, c104, c105, c106, c107, c108, c109, c110); 815 useRegs(c111, c112, c113, c114, c115, c116, c117, c118, c119, c120); 816 useRegs(c121, c122, c123, c124, c125, c126, c127, c128, c129, c130); 817 useRegs(c131, c132, c133, c134, c135, c136, c137, c138, c139, c140); 818 useRegs(c141, c142, c143, c144, c145, c146, c147, c148, c149, c150); 819 useRegs(c151, c152, c153, c154, c155, c156, c157, c158, c159, c160); 820 useRegs(c161, c162, c163, c164, c165, c166, c167, c168, c169, c170); 821 useRegs(c171, c172, c173, c174, c175, c176, c177, c178, c179, c180); 822 useRegs(c181, c182, c183, c184, c185, c186, c187, c188, c189, c190); 823 useRegs(c191, c192, c193, c194, c195, c196, c197, c198, c199, c200); 824 useRegs(c201, c202, c203, c204, c205, c206, c207, c208, c209, c210); 825 useRegs(c211, c212, c213, c214, c215, c216, c217, c218, c219, c220); 826 useRegs(c221, c222, c223, c224, c225, c226, c227, c228, c229, c230); 827 useRegs(c231, c232, c233, c234, c235, c236, c237, c238, c239, c240); 828 useRegs(c241, c242, c243, c244, c245, c246, c247, c248, c249, c250); 829 useRegs(c251, c252, c253, c254, c255, c256, c256, c256, c256, c256); 830 831 useRegs(b1); 832 useRegs(o1); 833 useRegs(a1); 834 } 835 836 // Trigger more jumbo verification errors testMissingStuff()837 static void testMissingStuff() { 838 Mutant mutant = new Mutant(); 839 840 try { 841 int x = mutant.disappearingField; 842 } catch (NoSuchFieldError nsfe) { 843 System.out.println("Got expected NoSuchFieldError"); 844 } 845 846 try { 847 int y = Mutant.disappearingStaticField; 848 } catch (NoSuchFieldError nsfe) { 849 System.out.println("Got expected NoSuchFieldError"); 850 } 851 852 try { 853 mutant.disappearingMethod(); 854 } catch (NoSuchMethodError nsme) { 855 System.out.println("Got expected NoSuchMethodError"); 856 } 857 858 try { 859 Mutant.disappearingStaticMethod(); 860 } catch (NoSuchMethodError nsme) { 861 System.out.println("Got expected NoSuchMethodError"); 862 } 863 } 864 useRegs(Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7, Object o8, Object o9, Object o10)865 void useRegs(Object o1, Object o2, Object o3, Object o4, Object o5, 866 Object o6, Object o7, Object o8, Object o9, Object o10) { 867 } 868 useRegs(Object o1)869 void useRegs(Object o1) { } useRegs(boolean b1)870 void useRegs(boolean b1) { } 871 } 872