1 /* 2 * Copyright (c) 2018, 2024, 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 // This file contains multiple illegal inline type classes that should cause 26 // ClassFormatError exceptions when attempted to be loaded. 27 // 28 // Many of these test were originally generated from this Java file and then 29 // modified to cause ClassFormatError or ClassCircularityError exceptions. The 30 // '(bad)' comments in most of the tests show where the modifications were made. 31 // 32 // final inline class Value { 33 // static final Value VT = makeValue(0x01234567); 34 // final int int_v; 35 // Value() { 36 // int_v = 1; 37 // } 38 // static Value makeValue(int x) { 39 // Value v = Value.default; 40 // v = __WithField(v.int_v, x); 41 // return v; 42 // } 43 // } 44 45 46 // Test that class modifiers cannot have both ACC_PRIMITIVE and ACC_ABSTRACT set. 47 // 48 class ValueAbstract { 49 0xCAFEBABE; 50 0; // minor version 51 66; // version 52 [28] { // Constant Pool 53 ; // first element is empty 54 Method #7 #23; // #1 at 0x0A 55 Field #3 #24; // #2 at 0x0F 56 class #9; // #3 at 0x14 57 int 0x01234567; // #4 at 0x17 58 Method #3 #25; // #5 at 0x1C 59 Field #3 #26; // #6 at 0x21 60 class #27; // #7 at 0x26 61 Utf8 "VT"; // #8 at 0x29 62 Utf8 "ValueAbstract"; // #9 at 0x2E 63 Utf8 "ValueTypes"; // #10 at 0x36 64 Utf8 "LValueAbstract;"; // #11 at 0x43 65 Utf8 "int_v"; // #12 at 0x4D 66 Utf8 "I"; // #13 at 0x55 67 Utf8 "<init>"; // #14 at 0x59 68 Utf8 "()V"; // #15 at 0x62 69 Utf8 "Code"; // #16 at 0x68 70 Utf8 "LineNumberTable"; // #17 at 0x6F 71 Utf8 "makeValueAbstract"; // #18 at 0x81 72 Utf8 "(I)LValueAbstract;"; // #19 at 0x8D 73 Utf8 "<clinit>"; // #20 at 0x9A 74 Utf8 "SourceFile"; // #21 at 0xA5 75 Utf8 "ValueAbstract.java"; // #22 at 0xB2 76 NameAndType #14 #15; // #23 at 0xBF 77 NameAndType #12 #13; // #24 at 0xC4 78 NameAndType #18 #19; // #25 at 0xC9 79 NameAndType #8 #11; // #26 at 0xCE 80 Utf8 "java/lang/Object"; // #27 at 0xD3 81 } // Constant Pool 82 83 0x0C30; // access [ ACC_PRIMITIVE ACC_ABSTRACT(bad) ACC_SUPER ACC_FINAL ] 84 #3;// this_cpx 85 #7;// super_cpx 86 87 [0] { // Interfaces 88 } // Interfaces 89 90 [2] { // fields 91 { // Member at 0xF0 92 0x0118; // access 93 #8; // name_cpx 94 #11; // sig_cpx 95 [0] { // Attributes 96 } // Attributes 97 } // Member 98 ; 99 { // Member at 0xF8 100 0x0010; // access 101 #12; // name_cpx 102 #13; // sig_cpx 103 [0] { // Attributes 104 } // Attributes 105 } // Member 106 } // fields 107 108 [3] { // methods 109 { // Member at 0x0102 110 0x0000; // access 111 #14; // name_cpx 112 #15; // sig_cpx 113 [1] { // Attributes 114 Attr(#16, 42) { // Code at 0x010A 115 2; // max_stack 116 1; // max_locals 117 Bytes[10]{ 118 0x2AB700012A04B500; 119 0x02B1; 120 }; 121 [0] { // Traps 122 } // end Traps 123 [1] { // Attributes 124 Attr(#17, 14) { // LineNumberTable at 0x0126 125 [3] { // LineNumberTable 126 0 4; // at 0x0132 127 4 5; // at 0x0136 128 9 6; // at 0x013A 129 } 130 } // end LineNumberTable 131 } // Attributes 132 } // end Code 133 } // Attributes 134 } // Member 135 ; 136 { // Member at 0x013A 137 0x0008; // access 138 #18; // name_cpx 139 #19; // sig_cpx 140 [1] { // Attributes 141 Attr(#16, 44) { // Code at 0x0142 142 2; // max_stack 143 2; // max_locals 144 Bytes[12]{ 145 0xCB00034C2B1ACC00; 146 0x024C2BB0; 147 }; 148 [0] { // Traps 149 } // end Traps 150 [1] { // Attributes 151 Attr(#17, 14) { // LineNumberTable at 0x0160 152 [3] { // LineNumberTable 153 0 8; // at 0x016C 154 4 9; // at 0x0170 155 10 10; // at 0x0174 156 } 157 } // end LineNumberTable 158 } // Attributes 159 } // end Code 160 } // Attributes 161 } // Member 162 ; 163 { // Member at 0x0174 164 0x0008; // access 165 #20; // name_cpx 166 #15; // sig_cpx 167 [1] { // Attributes 168 Attr(#16, 33) { // Code at 0x017C 169 1; // max_stack 170 0; // max_locals 171 Bytes[9]{ 172 0x1204B80005B30006; 173 0xB1; 174 }; 175 [0] { // Traps 176 } // end Traps 177 [1] { // Attributes 178 Attr(#17, 6) { // LineNumberTable at 0x0197 179 [1] { // LineNumberTable 180 0 2; // at 0x01A3 181 } 182 } // end LineNumberTable 183 } // Attributes 184 } // end Code 185 } // Attributes 186 } // Member 187 } // methods 188 189 [2] { // Attributes 190 Attr(#21, 2) { // SourceFile at 0x01A5 191 #22; 192 } // end SourceFile 193 ; 194 Attr(#10, 4) { // ValueTypes at 0x01AD 195 0x00010003; 196 } // end ValueTypes 197 } // Attributes 198 } // end class ValueAbstract 199 200 ////////////////////////////////////////////////////////////////////// 201 202 // Test that class modifiers cannot have both ACC_PRIMITIVE and ACC_ENUM set. 203 // 204 class ValueEnum { 205 0xCAFEBABE; 206 0; // minor version 207 66; // version 208 [28] { // Constant Pool 209 ; // first element is empty 210 Method #7 #23; // #1 at 0x0A 211 Field #3 #24; // #2 at 0x0F 212 class #9; // #3 at 0x14 213 int 0x01234567; // #4 at 0x17 214 Method #3 #25; // #5 at 0x1C 215 Field #3 #26; // #6 at 0x21 216 class #27; // #7 at 0x26 217 Utf8 "VT"; // #8 at 0x29 218 Utf8 "ValueEnum"; // #9 at 0x2E 219 Utf8 "ValueTypes"; // #10 at 0x36 220 Utf8 "LValueEnum;"; // #11 at 0x43 221 Utf8 "int_v"; // #12 at 0x4D 222 Utf8 "I"; // #13 at 0x55 223 Utf8 "<init>"; // #14 at 0x59 224 Utf8 "()V"; // #15 at 0x62 225 Utf8 "Code"; // #16 at 0x68 226 Utf8 "LineNumberTable"; // #17 at 0x6F 227 Utf8 "makeValueEnum"; // #18 at 0x81 228 Utf8 "(I)LValueEnum;"; // #19 at 0x8D 229 Utf8 "<clinit>"; // #20 at 0x9A 230 Utf8 "SourceFile"; // #21 at 0xA5 231 Utf8 "ValueEnum.java"; // #22 at 0xB2 232 NameAndType #14 #15; // #23 at 0xBF 233 NameAndType #12 #13; // #24 at 0xC4 234 NameAndType #18 #19; // #25 at 0xC9 235 NameAndType #8 #11; // #26 at 0xCE 236 Utf8 "java/lang/Object"; // #27 at 0xD3 237 } // Constant Pool 238 239 0x04850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_ENUM(bad) ACC_FINAL ] 240 #3;// this_cpx 241 #7;// super_cpx 242 243 [0] { // Interfaces 244 } // Interfaces 245 246 [2] { // fields 247 { // Member at 0xF0 248 0x0118; // access 249 #8; // name_cpx 250 #11; // sig_cpx 251 [0] { // Attributes 252 } // Attributes 253 } // Member 254 ; 255 { // Member at 0xF8 256 0x0010; // access 257 #12; // name_cpx 258 #13; // sig_cpx 259 [0] { // Attributes 260 } // Attributes 261 } // Member 262 } // fields 263 264 [3] { // methods 265 { // Member at 0x0102 266 0x0000; // access 267 #14; // name_cpx 268 #15; // sig_cpx 269 [1] { // Attributes 270 Attr(#16, 42) { // Code at 0x010A 271 2; // max_stack 272 1; // max_locals 273 Bytes[10]{ 274 0x2AB700012A04B500; 275 0x02B1; 276 }; 277 [0] { // Traps 278 } // end Traps 279 [1] { // Attributes 280 Attr(#17, 14) { // LineNumberTable at 0x0126 281 [3] { // LineNumberTable 282 0 4; // at 0x0132 283 4 5; // at 0x0136 284 9 6; // at 0x013A 285 } 286 } // end LineNumberTable 287 } // Attributes 288 } // end Code 289 } // Attributes 290 } // Member 291 ; 292 { // Member at 0x013A 293 0x0008; // access 294 #18; // name_cpx 295 #19; // sig_cpx 296 [1] { // Attributes 297 Attr(#16, 44) { // Code at 0x0142 298 2; // max_stack 299 2; // max_locals 300 Bytes[12]{ 301 0xCB00034C2B1ACC00; 302 0x024C2BB0; 303 }; 304 [0] { // Traps 305 } // end Traps 306 [1] { // Attributes 307 Attr(#17, 14) { // LineNumberTable at 0x0160 308 [3] { // LineNumberTable 309 0 8; // at 0x016C 310 4 9; // at 0x0170 311 10 10; // at 0x0174 312 } 313 } // end LineNumberTable 314 } // Attributes 315 } // end Code 316 } // Attributes 317 } // Member 318 ; 319 { // Member at 0x0174 320 0x0008; // access 321 #20; // name_cpx 322 #15; // sig_cpx 323 [1] { // Attributes 324 Attr(#16, 33) { // Code at 0x017C 325 1; // max_stack 326 0; // max_locals 327 Bytes[9]{ 328 0x1204B80005B30006; 329 0xB1; 330 }; 331 [0] { // Traps 332 } // end Traps 333 [1] { // Attributes 334 Attr(#17, 6) { // LineNumberTable at 0x0197 335 [1] { // LineNumberTable 336 0 2; // at 0x01A3 337 } 338 } // end LineNumberTable 339 } // Attributes 340 } // end Code 341 } // Attributes 342 } // Member 343 } // methods 344 345 [2] { // Attributes 346 Attr(#21, 2) { // SourceFile at 0x01A5 347 #22; 348 } // end SourceFile 349 ; 350 Attr(#10, 4) { // ValueTypes at 0x01AD 351 0x00010003; 352 } // end ValueTypes 353 } // Attributes 354 } // end class ValueEnum 355 356 ////////////////////////////////////////////////////////////////////// 357 358 // Test that inline type fields must be final. 359 // 360 class ValueFieldNotFinal { 361 0xCAFEBABE; 362 0; // minor version 363 66; // version 364 [28] { // Constant Pool 365 ; // first element is empty 366 Method #7 #23; // #1 at 0x0A 367 Field #3 #24; // #2 at 0x0F 368 class #9; // #3 at 0x14 369 int 0x01234567; // #4 at 0x17 370 Method #3 #25; // #5 at 0x1C 371 Field #3 #26; // #6 at 0x21 372 class #27; // #7 at 0x26 373 Utf8 "VT"; // #8 at 0x29 374 Utf8 "ValueFieldNotFinal"; // #9 at 0x2E 375 Utf8 "ValueTypes"; // #10 at 0x36 376 Utf8 "LValueFieldNotFinal;"; // #11 at 0x43 377 Utf8 "int_v"; // #12 at 0x4D 378 Utf8 "I"; // #13 at 0x55 379 Utf8 "<init>"; // #14 at 0x59 380 Utf8 "()V"; // #15 at 0x62 381 Utf8 "Code"; // #16 at 0x68 382 Utf8 "LineNumberTable"; // #17 at 0x6F 383 Utf8 "makeValueFieldNotFinal"; // #18 at 0x81 384 Utf8 "(I)LValueFieldNotFinal;"; // #19 at 0x8D 385 Utf8 "<clinit>"; // #20 at 0x9A 386 Utf8 "SourceFile"; // #21 at 0xA5 387 Utf8 "ValueFieldNotFinal.java"; // #22 at 0xB2 388 NameAndType #14 #15; // #23 at 0xBF 389 NameAndType #12 #13; // #24 at 0xC4 390 NameAndType #18 #19; // #25 at 0xC9 391 NameAndType #8 #11; // #26 at 0xCE 392 Utf8 "java/lang/Object"; // #27 at 0xD3 393 } // Constant Pool 394 395 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 396 #3;// this_cpx 397 #7;// super_cpx 398 399 [0] { // Interfaces 400 } // Interfaces 401 402 [2] { // fields 403 { // Member at 0xF0 404 0x0118; // access 405 #8; // name_cpx 406 #11; // sig_cpx 407 [0] { // Attributes 408 } // Attributes 409 } // Member 410 ; 411 { // Member at 0xF8 412 0x0000; // access [ Field not ACC_FINAL(bad) ] 413 #12; // name_cpx 414 #13; // sig_cpx 415 [0] { // Attributes 416 } // Attributes 417 } // Member 418 } // fields 419 420 [3] { // methods 421 { // Member at 0x0102 422 0x0000; // access 423 #14; // name_cpx 424 #15; // sig_cpx 425 [1] { // Attributes 426 Attr(#16, 42) { // Code at 0x010A 427 2; // max_stack 428 1; // max_locals 429 Bytes[10]{ 430 0x2AB700012A04B500; 431 0x02B1; 432 }; 433 [0] { // Traps 434 } // end Traps 435 [1] { // Attributes 436 Attr(#17, 14) { // LineNumberTable at 0x0126 437 [3] { // LineNumberTable 438 0 4; // at 0x0132 439 4 5; // at 0x0136 440 9 6; // at 0x013A 441 } 442 } // end LineNumberTable 443 } // Attributes 444 } // end Code 445 } // Attributes 446 } // Member 447 ; 448 { // Member at 0x013A 449 0x0008; // access 450 #18; // name_cpx 451 #19; // sig_cpx 452 [1] { // Attributes 453 Attr(#16, 44) { // Code at 0x0142 454 2; // max_stack 455 2; // max_locals 456 Bytes[12]{ 457 0xCB00034C2B1ACC00; 458 0x024C2BB0; 459 }; 460 [0] { // Traps 461 } // end Traps 462 [1] { // Attributes 463 Attr(#17, 14) { // LineNumberTable at 0x0160 464 [3] { // LineNumberTable 465 0 8; // at 0x016C 466 4 9; // at 0x0170 467 10 10; // at 0x0174 468 } 469 } // end LineNumberTable 470 } // Attributes 471 } // end Code 472 } // Attributes 473 } // Member 474 ; 475 { // Member at 0x0174 476 0x0008; // access 477 #20; // name_cpx 478 #15; // sig_cpx 479 [1] { // Attributes 480 Attr(#16, 33) { // Code at 0x017C 481 1; // max_stack 482 0; // max_locals 483 Bytes[9]{ 484 0x1204B80005B30006; 485 0xB1; 486 }; 487 [0] { // Traps 488 } // end Traps 489 [1] { // Attributes 490 Attr(#17, 6) { // LineNumberTable at 0x0197 491 [1] { // LineNumberTable 492 0 2; // at 0x01A3 493 } 494 } // end LineNumberTable 495 } // Attributes 496 } // end Code 497 } // Attributes 498 } // Member 499 } // methods 500 501 [2] { // Attributes 502 Attr(#21, 2) { // SourceFile at 0x01A5 503 #22; 504 } // end SourceFile 505 ; 506 Attr(#10, 4) { // ValueTypes at 0x01AD 507 0x00010003; 508 } // end ValueTypes 509 } // Attributes 510 } // end class ValueFieldNotFinal 511 512 ////////////////////////////////////////////////////////////////////// 513 514 // Test that class modifiers cannot have both ACC_PRIMITIVE and ACC_INTERFACE set. 515 // 516 class ValueInterface { 517 0xCAFEBABE; 518 0; // minor version 519 66; // version 520 [27] { // Constant Pool 521 ; // first element is empty 522 Method #7 #21; // #1 at 0x0A 523 Field #3 #22; // #2 at 0x0F 524 class #23; // #3 at 0x14 525 int 0x01234567; // #4 at 0x17 526 Method #3 #24; // #5 at 0x1C 527 Field #3 #25; // #6 at 0x21 528 class #26; // #7 at 0x26 529 Utf8 "VT"; // #8 at 0x29 530 Utf8 "LValueInterface;"; // #9 at 0x2E 531 Utf8 "int_v"; // #10 at 0x3C 532 Utf8 "I"; // #11 at 0x44 533 Utf8 "<init>"; // #12 at 0x48 534 Utf8 "()V"; // #13 at 0x51 535 Utf8 "Code"; // #14 at 0x57 536 Utf8 "LineNumberTable"; // #15 at 0x5E 537 Utf8 "makeValueInterface"; // #16 at 0x70 538 Utf8 "(I)LValueInterface;"; // #17 at 0x80 539 Utf8 "<clinit>"; // #18 at 0x91 540 Utf8 "SourceFile"; // #19 at 0x9C 541 Utf8 "ValueInterface.java"; // #20 at 0xA9 542 NameAndType #12 #13; // #21 at 0xBA 543 NameAndType #10 #11; // #22 at 0xBF 544 Utf8 "ValueInterface"; // #23 at 0xC4 545 NameAndType #16 #17; // #24 at 0xD0 546 NameAndType #8 #9; // #25 at 0xD5 547 Utf8 "java/lang/Object"; // #26 at 0xDA 548 } // Constant Pool 549 550 0x0A30; // access [ ACC_PRIMITIVE ACC_INTERFACE(bad) ACC_SUPER ACC_FINAL ] 551 #3;// this_cpx 552 #7;// super_cpx 553 554 [0] { // Interfaces 555 } // Interfaces 556 557 [2] { // fields 558 { // Member at 0xF7 559 0x0018; // access 560 #8; // name_cpx 561 #9; // sig_cpx 562 [0] { // Attributes 563 } // Attributes 564 } // Member 565 ; 566 { // Member at 0xFF 567 0x0010; // access 568 #10; // name_cpx 569 #11; // sig_cpx 570 [0] { // Attributes 571 } // Attributes 572 } // Member 573 } // fields 574 575 [1] { // methods 576 { // Member at 0x0141 577 0x0008; // access 578 #16; // name_cpx 579 #17; // sig_cpx 580 [1] { // Attributes 581 Attr(#14, 44) { // Code at 0x0149 582 2; // max_stack 583 2; // max_locals 584 Bytes[12]{ 585 0xCB00034C2B1ACC00; 586 0x024C2BB0; 587 }; 588 [0] { // Traps 589 } // end Traps 590 [1] { // Attributes 591 Attr(#15, 14) { // LineNumberTable at 0x0167 592 [3] { // LineNumberTable 593 0 8; // at 0x0173 594 4 9; // at 0x0177 595 10 10; // at 0x017B 596 } 597 } // end LineNumberTable 598 } // Attributes 599 } // end Code 600 } // Attributes 601 } // Member 602 } // methods 603 604 [1] { // Attributes 605 Attr(#19, 2) { // SourceFile at 0x01AC 606 #20; 607 } // end SourceFile 608 } // Attributes 609 } // end class ValueInterface 610 611 ////////////////////////////////////////////////////////////////////// 612 613 // Test that inline type instance methods cannot be synchronized. 614 // 615 // final inline class ValueMethodSynch { 616 // final int int_v; 617 // 618 // ValueMethodSynch() { int_v = 1; } 619 // 620 // int getInt(int x) { return x; } 621 // } 622 623 class ValueMethodSynch { 624 0xCAFEBABE; 625 0; // minor version 626 66; // version 627 [46] { // Constant Pool 628 ; // first element is empty 629 class #23; // #1 at 0x0A 630 Field #1 #24; // #2 at 0x0D 631 InvokeDynamic 0s #27; // #3 at 0x12 632 InvokeDynamic 0s #28; // #4 at 0x17 633 InvokeDynamic 0s #29; // #5 at 0x1C 634 class #30; // #6 at 0x21 635 Utf8 "int_v"; // #7 at 0x24 636 Utf8 "I"; // #8 at 0x2C 637 Utf8 "getInt"; // #9 at 0x30 638 Utf8 "(I)I"; // #10 at 0x39 639 Utf8 "Code"; // #11 at 0x40 640 Utf8 "LineNumberTable"; // #12 at 0x47 641 Utf8 "hashCode"; // #13 at 0x59 642 Utf8 "()I"; // #14 at 0x64 643 Utf8 "equals"; // #15 at 0x6A 644 Utf8 "(Ljava/lang/Object;)Z"; // #16 at 0x73 645 Utf8 "toString"; // #17 at 0x8B 646 Utf8 "()Ljava/lang/String;"; // #18 at 0x96 647 Utf8 "<init>"; // #19 at 0xAD 648 Utf8 "()QValueMethodSynch;"; // #20 at 0xB6 649 Utf8 "SourceFile"; // #21 at 0xCD 650 Utf8 "ValueMethodSynch.java"; // #22 at 0xDA 651 Utf8 "ValueMethodSynch"; // #23 at 0xF2 652 NameAndType #7 #8; // #24 at 0x0105 653 Utf8 "BootstrapMethods"; // #25 at 0x010A 654 MethodHandle 6b #31; // #26 at 0x011D 655 NameAndType #13 #32; // #27 at 0x0121 656 NameAndType #15 #33; // #28 at 0x0126 657 NameAndType #17 #34; // #29 at 0x012B 658 Utf8 "java/lang/Object"; // #30 at 0x0130 659 Method #35 #36; // #31 at 0x0143 660 Utf8 "(QValueMethodSynch;)I"; // #32 at 0x0148 661 Utf8 "(QValueMethodSynch;Ljava/lang/Object;)Z"; // #33 at 0x0160 662 Utf8 "(QValueMethodSynch;)Ljava/lang/String;"; // #34 at 0x018A 663 class #37; // #35 at 0x01B3 664 NameAndType #38 #42; // #36 at 0x01B6 665 Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #37 at 0x01BB 666 Utf8 "makeBootstrapMethod"; // #38 at 0x01E4 667 class #44; // #39 at 0x01FA 668 Utf8 "Lookup"; // #40 at 0x01FD 669 Utf8 "InnerClasses"; // #41 at 0x0206 670 Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #42 at 0x0215 671 class #45; // #43 at 0x028B 672 Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #44 at 0x028E 673 Utf8 "java/lang/invoke/MethodHandles"; // #45 at 0x02B6 674 } // Constant Pool 675 676 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 677 #1;// this_cpx 678 #6;// super_cpx 679 680 [0] { // Interfaces 681 } // Interfaces 682 683 [1] { // fields 684 { // Member at 0x02E1 685 0x0010; // access 686 #7; // name_cpx 687 #8; // sig_cpx 688 [0] { // Attributes 689 } // Attributes 690 } // Member 691 } // fields 692 693 [5] { // methods 694 { // Member at 0x02EB 695 0x0020; // access [ ACC_SYNCHRONIZED(bad) ] 696 #9; // name_cpx 697 #10; // sig_cpx 698 [1] { // Attributes 699 Attr(#11, 26) { // Code at 0x02F3 700 1; // max_stack 701 2; // max_locals 702 Bytes[2]{ 703 0x1BAC; 704 }; 705 [0] { // Traps 706 } // end Traps 707 [1] { // Attributes 708 Attr(#12, 6) { // LineNumberTable at 0x0307 709 [1] { // LineNumberTable 710 0 9; // at 0x0313 711 } 712 } // end LineNumberTable 713 } // Attributes 714 } // end Code 715 } // Attributes 716 } // Member 717 ; 718 { // Member at 0x0313 719 0x0011; // access 720 #13; // name_cpx 721 #14; // sig_cpx 722 [1] { // Attributes 723 Attr(#11, 31) { // Code at 0x031B 724 1; // max_stack 725 1; // max_locals 726 Bytes[7]{ 727 0x2ABA00030000AC; 728 }; 729 [0] { // Traps 730 } // end Traps 731 [1] { // Attributes 732 Attr(#12, 6) { // LineNumberTable at 0x0334 733 [1] { // LineNumberTable 734 0 1; // at 0x0340 735 } 736 } // end LineNumberTable 737 } // Attributes 738 } // end Code 739 } // Attributes 740 } // Member 741 ; 742 { // Member at 0x0340 743 0x0011; // access 744 #15; // name_cpx 745 #16; // sig_cpx 746 [1] { // Attributes 747 Attr(#11, 32) { // Code at 0x0348 748 2; // max_stack 749 2; // max_locals 750 Bytes[8]{ 751 0x2A2BBA00040000AC; 752 }; 753 [0] { // Traps 754 } // end Traps 755 [1] { // Attributes 756 Attr(#12, 6) { // LineNumberTable at 0x0362 757 [1] { // LineNumberTable 758 0 1; // at 0x036E 759 } 760 } // end LineNumberTable 761 } // Attributes 762 } // end Code 763 } // Attributes 764 } // Member 765 ; 766 { // Member at 0x036E 767 0x0011; // access 768 #17; // name_cpx 769 #18; // sig_cpx 770 [1] { // Attributes 771 Attr(#11, 31) { // Code at 0x0376 772 1; // max_stack 773 1; // max_locals 774 Bytes[7]{ 775 0x2ABA00050000B0; 776 }; 777 [0] { // Traps 778 } // end Traps 779 [1] { // Attributes 780 Attr(#12, 6) { // LineNumberTable at 0x038F 781 [1] { // LineNumberTable 782 0 1; // at 0x039B 783 } 784 } // end LineNumberTable 785 } // Attributes 786 } // end Code 787 } // Attributes 788 } // Member 789 ; 790 { // Member at 0x039B 791 0x0008; // access 792 #19; // name_cpx 793 #20; // sig_cpx 794 [1] { // Attributes 795 Attr(#11, 45) { // Code at 0x03A3 796 2; // max_stack 797 1; // max_locals 798 Bytes[13]{ 799 0xCB00014B042A5FCC; 800 0x00024B2AB0; 801 }; 802 [0] { // Traps 803 } // end Traps 804 [1] { // Attributes 805 Attr(#12, 14) { // LineNumberTable at 0x03C2 806 [3] { // LineNumberTable 807 0 4; // at 0x03CE 808 4 5; // at 0x03D2 809 11 6; // at 0x03D6 810 } 811 } // end LineNumberTable 812 } // Attributes 813 } // end Code 814 } // Attributes 815 } // Member 816 } // methods 817 818 [3] { // Attributes 819 Attr(#21, 2) { // SourceFile at 0x03D8 820 #22; 821 } // end SourceFile 822 ; 823 Attr(#41, 10) { // InnerClasses at 0x03E0 824 [1] { // InnerClasses 825 #39 #43 #40 25; // at 0x03F0 826 } 827 } // end InnerClasses 828 ; 829 Attr(#25, 6) { // BootstrapMethods at 0x03F0 830 [1] { // bootstrap_methods 831 { // bootstrap_method 832 #26; // bootstrap_method_ref 833 [0] { // bootstrap_arguments 834 } // bootstrap_arguments 835 } // bootstrap_method 836 } 837 } // end BootstrapMethods 838 } // Attributes 839 } // end class ValueMethodSynch 840 841 ////////////////////////////////////////////////////////////////////// 842 843 // Inline types Circ and Circ2 have fields of each other's type. This should 844 // cause a ClassCircularityError exception when one of them is being loaded. 845 // 846 // The inline types are based on these two Java classes: 847 // 848 // final inline class Circ { 849 // static final Circ VT = makeCirc(0x01234567); 850 // final int int_v; 851 // final Circ2 v2; 852 // Circ() { 853 // int_v = 1; 854 // v2 = Circ2.default; 855 // } 856 // static Circ makeCirc(int x) { 857 // Circ v = Circ.default; 858 // v = __WithField(v.int_v, x); 859 // return v; 860 // } 861 // } 862 //---------------------------------------------------------------- 863 // final inline class Circ2 { 864 // static final Circ2 VT = makeCirc2('\u0123'); 865 // final char char_v; 866 // final Circ vv; 867 // Circ2() { 868 // char_v = 'z'; 869 // vv = Circ.default; 870 // } 871 // static Circ2 makeCirc2(char c) { 872 // Circ2 v = Circ2.default; 873 // v = __WithField(v.char_v, c); 874 // return v; 875 // } 876 // } 877 878 class Circ { 879 0xCAFEBABE; 880 0; // minor version 881 66; // version 882 [61] { // Constant Pool 883 ; // first element is empty 884 class #34; // #1 at 0x0A 885 Field #1 #35; // #2 at 0x0D 886 class #36; // #3 at 0x12 887 Field #1 #37; // #4 at 0x15 888 InvokeDynamic 0s #40; // #5 at 0x1A 889 InvokeDynamic 0s #41; // #6 at 0x1F 890 InvokeDynamic 0s #42; // #7 at 0x24 891 int 0x01234567; // #8 at 0x29 892 Method #1 #43; // #9 at 0x2E 893 Field #1 #44; // #10 at 0x33 894 class #45; // #11 at 0x38 895 Utf8 "VT"; // #12 at 0x3B 896 Utf8 "QCirc;"; // #13 at 0x40 897 Utf8 "int_v"; // #14 at 0x49 898 Utf8 "I"; // #15 at 0x51 899 Utf8 "v2"; // #16 at 0x55 900 Utf8 "QCirc2;"; // #17 at 0x5A 901 Utf8 "makeCirc"; // #18 at 0x65 902 Utf8 "(I)QCirc;"; // #19 at 0x6F 903 Utf8 "Code"; // #20 at 0x7B 904 Utf8 "LineNumberTable"; // #21 at 0x82 905 Utf8 "hashCode"; // #22 at 0x94 906 Utf8 "()I"; // #23 at 0x9F 907 Utf8 "equals"; // #24 at 0xA5 908 Utf8 "(Ljava/lang/Object;)Z"; // #25 at 0xAE 909 Utf8 "toString"; // #26 at 0xC6 910 Utf8 "()Ljava/lang/String;"; // #27 at 0xD1 911 Utf8 "<clinit>"; // #28 at 0xE8 912 Utf8 "()V"; // #29 at 0xF3 913 Utf8 "<vnew>"; // #30 at 0xF9 914 Utf8 "()QCirc;"; // #31 at 0x0102 915 Utf8 "SourceFile"; // #32 at 0x010D 916 Utf8 "Circ.java"; // #33 at 0x011A 917 Utf8 "Circ"; // #34 at 0x0126 918 NameAndType #14 #15; // #35 at 0x012D 919 Utf8 "Circ2"; // #36 at 0x0132 920 NameAndType #16 #17; // #37 at 0x013A 921 Utf8 "BootstrapMethods"; // #38 at 0x013F 922 MethodHandle 6b #46; // #39 at 0x0152 923 NameAndType #22 #47; // #40 at 0x0156 924 NameAndType #24 #48; // #41 at 0x015B 925 NameAndType #26 #49; // #42 at 0x0160 926 NameAndType #18 #19; // #43 at 0x0165 927 NameAndType #12 #13; // #44 at 0x016A 928 Utf8 "java/lang/Object"; // #45 at 0x016F 929 Method #50 #51; // #46 at 0x0182 930 Utf8 "(QCirc;)I"; // #47 at 0x0187 931 Utf8 "(QCirc;Ljava/lang/Object;)Z"; // #48 at 0x0193 932 Utf8 "(QCirc;)Ljava/lang/String;"; // #49 at 0x01B1 933 class #52; // #50 at 0x01CE 934 NameAndType #53 #57; // #51 at 0x01D1 935 Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #52 at 0x01D6 936 Utf8 "makeBootstrapMethod"; // #53 at 0x01FF 937 class #59; // #54 at 0x0215 938 Utf8 "Lookup"; // #55 at 0x0218 939 Utf8 "InnerClasses"; // #56 at 0x0221 940 Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #57 at 0x0230 941 class #60; // #58 at 0x02A6 942 Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #59 at 0x02A9 943 Utf8 "java/lang/invoke/MethodHandles"; // #60 at 0x02D1 944 } // Constant Pool 945 946 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 947 #1;// this_cpx 948 #11;// super_cpx 949 950 [0] { // Interfaces 951 } // Interfaces 952 953 [3] { // fields 954 { // Member at 0x02FC 955 0x0018; // access 956 #12; // name_cpx 957 #13; // sig_cpx 958 [0] { // Attributes 959 } // Attributes 960 } // Member 961 ; 962 { // Member at 0x0304 963 0x0010; // access 964 #14; // name_cpx 965 #15; // sig_cpx 966 [0] { // Attributes 967 } // Attributes 968 } // Member 969 ; 970 { // Member at 0x030C 971 0x0010; // access 972 #16; // name_cpx 973 #17; // sig_cpx 974 [0] { // Attributes 975 } // Attributes 976 } // Member 977 } // fields 978 979 [6] { // methods 980 { // Member at 0x0316 981 0x0008; // access 982 #18; // name_cpx 983 #19; // sig_cpx 984 [1] { // Attributes 985 Attr(#20, 45) { // Code at 0x031E 986 2; // max_stack 987 2; // max_locals 988 Bytes[13]{ 989 0xCB00014C1A2B5FCC; 990 0x00024C2BB0; 991 }; 992 [0] { // Traps 993 } // end Traps 994 [1] { // Attributes 995 Attr(#21, 14) { // LineNumberTable at 0x033D 996 [3] { // LineNumberTable 997 0 12; // at 0x0349 998 4 13; // at 0x034D 999 11 14; // at 0x0351 1000 } 1001 } // end LineNumberTable 1002 } // Attributes 1003 } // end Code 1004 } // Attributes 1005 } // Member 1006 ; 1007 { // Member at 0x0351 1008 0x0011; // access 1009 #22; // name_cpx 1010 #23; // sig_cpx 1011 [1] { // Attributes 1012 Attr(#20, 31) { // Code at 0x0359 1013 1; // max_stack 1014 1; // max_locals 1015 Bytes[7]{ 1016 0x2ABA00050000AC; 1017 }; 1018 [0] { // Traps 1019 } // end Traps 1020 [1] { // Attributes 1021 Attr(#21, 6) { // LineNumberTable at 0x0372 1022 [1] { // LineNumberTable 1023 0 1; // at 0x037E 1024 } 1025 } // end LineNumberTable 1026 } // Attributes 1027 } // end Code 1028 } // Attributes 1029 } // Member 1030 ; 1031 { // Member at 0x037E 1032 0x0011; // access 1033 #24; // name_cpx 1034 #25; // sig_cpx 1035 [1] { // Attributes 1036 Attr(#20, 32) { // Code at 0x0386 1037 2; // max_stack 1038 2; // max_locals 1039 Bytes[8]{ 1040 0x2A2BBA00060000AC; 1041 }; 1042 [0] { // Traps 1043 } // end Traps 1044 [1] { // Attributes 1045 Attr(#21, 6) { // LineNumberTable at 0x03A0 1046 [1] { // LineNumberTable 1047 0 1; // at 0x03AC 1048 } 1049 } // end LineNumberTable 1050 } // Attributes 1051 } // end Code 1052 } // Attributes 1053 } // Member 1054 ; 1055 { // Member at 0x03AC 1056 0x0011; // access 1057 #26; // name_cpx 1058 #27; // sig_cpx 1059 [1] { // Attributes 1060 Attr(#20, 31) { // Code at 0x03B4 1061 1; // max_stack 1062 1; // max_locals 1063 Bytes[7]{ 1064 0x2ABA00070000B0; 1065 }; 1066 [0] { // Traps 1067 } // end Traps 1068 [1] { // Attributes 1069 Attr(#21, 6) { // LineNumberTable at 0x03CD 1070 [1] { // LineNumberTable 1071 0 1; // at 0x03D9 1072 } 1073 } // end LineNumberTable 1074 } // Attributes 1075 } // end Code 1076 } // Attributes 1077 } // Member 1078 ; 1079 { // Member at 0x03D9 1080 0x0008; // access 1081 #28; // name_cpx 1082 #29; // sig_cpx 1083 [1] { // Attributes 1084 Attr(#20, 33) { // Code at 0x03E1 1085 1; // max_stack 1086 0; // max_locals 1087 Bytes[9]{ 1088 0x1208B80009B3000A; 1089 0xB1; 1090 }; 1091 [0] { // Traps 1092 } // end Traps 1093 [1] { // Attributes 1094 Attr(#21, 6) { // LineNumberTable at 0x03FC 1095 [1] { // LineNumberTable 1096 0 2; // at 0x0408 1097 } 1098 } // end LineNumberTable 1099 } // Attributes 1100 } // end Code 1101 } // Attributes 1102 } // Member 1103 ; 1104 { // Member at 0x0408 1105 0x0008; // access 1106 #30; // name_cpx 1107 #31; // sig_cpx 1108 [1] { // Attributes 1109 Attr(#20, 58) { // Code at 0x0410 1110 2; // max_stack 1111 1; // max_locals 1112 Bytes[22]{ 1113 0xCB00014B042A5FCC; 1114 0x00024BCB00032A5F; 1115 0xCC00044B2AB0; 1116 }; 1117 [0] { // Traps 1118 } // end Traps 1119 [1] { // Attributes 1120 Attr(#21, 18) { // LineNumberTable at 0x0438 1121 [4] { // LineNumberTable 1122 0 6; // at 0x0444 1123 4 7; // at 0x0448 1124 11 8; // at 0x044C 1125 20 9; // at 0x0450 1126 } 1127 } // end LineNumberTable 1128 } // Attributes 1129 } // end Code 1130 } // Attributes 1131 } // Member 1132 } // methods 1133 1134 [3] { // Attributes 1135 Attr(#32, 2) { // SourceFile at 0x0452 1136 #33; 1137 } // end SourceFile 1138 ; 1139 Attr(#56, 10) { // InnerClasses at 0x045A 1140 [1] { // InnerClasses 1141 #54 #58 #55 25; // at 0x046A 1142 } 1143 } // end InnerClasses 1144 ; 1145 Attr(#38, 6) { // BootstrapMethods at 0x046A 1146 [1] { // bootstrap_methods 1147 { // bootstrap_method 1148 #39; // bootstrap_method_ref 1149 [0] { // bootstrap_arguments 1150 } // bootstrap_arguments 1151 } // bootstrap_method 1152 } 1153 } // end BootstrapMethods 1154 } // Attributes 1155 } // end class Circ 1156 1157 class Circ2 { 1158 0xCAFEBABE; 1159 0; // minor version 1160 66; // version 1161 [60] { // Constant Pool 1162 ; // first element is empty 1163 class #33; // #1 at 0x0A 1164 Field #1 #34; // #2 at 0x0D 1165 class #35; // #3 at 0x12 1166 Field #1 #36; // #4 at 0x15 1167 InvokeDynamic 0s #39; // #5 at 0x1A 1168 InvokeDynamic 0s #40; // #6 at 0x1F 1169 InvokeDynamic 0s #41; // #7 at 0x24 1170 Method #1 #42; // #8 at 0x29 1171 Field #1 #43; // #9 at 0x2E 1172 class #44; // #10 at 0x33 1173 Utf8 "VT"; // #11 at 0x36 1174 Utf8 "QCirc2;"; // #12 at 0x3B 1175 Utf8 "char_v"; // #13 at 0x45 1176 Utf8 "C"; // #14 at 0x4E 1177 Utf8 "vv"; // #15 at 0x52 1178 Utf8 "QCirc;"; // #16 at 0x57 1179 Utf8 "makeCirc2"; // #17 at 0x60 1180 Utf8 "(C)QCirc2;"; // #18 at 0x6C 1181 Utf8 "Code"; // #19 at 0x79 1182 Utf8 "LineNumberTable"; // #20 at 0x80 1183 Utf8 "hashCode"; // #21 at 0x92 1184 Utf8 "()I"; // #22 at 0x9D 1185 Utf8 "equals"; // #23 at 0xA3 1186 Utf8 "(Ljava/lang/Object;)Z"; // #24 at 0xAC 1187 Utf8 "toString"; // #25 at 0xC4 1188 Utf8 "()Ljava/lang/String;"; // #26 at 0xCF 1189 Utf8 "<clinit>"; // #27 at 0xE6 1190 Utf8 "()V"; // #28 at 0xF1 1191 Utf8 "<vnew>"; // #29 at 0xF7 1192 Utf8 "()QCirc2;"; // #30 at 0x0100 1193 Utf8 "SourceFile"; // #31 at 0x010C 1194 Utf8 "Circ2.java"; // #32 at 0x0119 1195 Utf8 "Circ2"; // #33 at 0x0126 1196 NameAndType #13 #14; // #34 at 0x012E 1197 Utf8 "Circ"; // #35 at 0x0133 1198 NameAndType #15 #16; // #36 at 0x013A 1199 Utf8 "BootstrapMethods"; // #37 at 0x013F 1200 MethodHandle 6b #45; // #38 at 0x0152 1201 NameAndType #21 #46; // #39 at 0x0156 1202 NameAndType #23 #47; // #40 at 0x015B 1203 NameAndType #25 #48; // #41 at 0x0160 1204 NameAndType #17 #18; // #42 at 0x0165 1205 NameAndType #11 #12; // #43 at 0x016A 1206 Utf8 "java/lang/Object"; // #44 at 0x016F 1207 Method #49 #50; // #45 at 0x0182 1208 Utf8 "(QCirc2;)I"; // #46 at 0x0187 1209 Utf8 "(QCirc2;Ljava/lang/Object;)Z"; // #47 at 0x0194 1210 Utf8 "(QCirc2;)Ljava/lang/String;"; // #48 at 0x01B3 1211 class #51; // #49 at 0x01D1 1212 NameAndType #52 #56; // #50 at 0x01D4 1213 Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #51 at 0x01D9 1214 Utf8 "makeBootstrapMethod"; // #52 at 0x0202 1215 class #58; // #53 at 0x0218 1216 Utf8 "Lookup"; // #54 at 0x021B 1217 Utf8 "InnerClasses"; // #55 at 0x0224 1218 Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #56 at 0x0233 1219 class #59; // #57 at 0x02A9 1220 Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #58 at 0x02AC 1221 Utf8 "java/lang/invoke/MethodHandles"; // #59 at 0x02D4 1222 } // Constant Pool 1223 1224 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 1225 #1;// this_cpx 1226 #10;// super_cpx 1227 1228 [0] { // Interfaces 1229 } // Interfaces 1230 1231 [3] { // fields 1232 { // Member at 0x02FF 1233 0x0018; // access 1234 #11; // name_cpx 1235 #12; // sig_cpx 1236 [0] { // Attributes 1237 } // Attributes 1238 } // Member 1239 ; 1240 { // Member at 0x0307 1241 0x0010; // access 1242 #13; // name_cpx 1243 #14; // sig_cpx 1244 [0] { // Attributes 1245 } // Attributes 1246 } // Member 1247 ; 1248 { // Member at 0x030F 1249 0x0010; // access 1250 #15; // name_cpx 1251 #16; // sig_cpx 1252 [0] { // Attributes 1253 } // Attributes 1254 } // Member 1255 } // fields 1256 1257 [6] { // methods 1258 { // Member at 0x0319 1259 0x0008; // access 1260 #17; // name_cpx 1261 #18; // sig_cpx 1262 [1] { // Attributes 1263 Attr(#19, 45) { // Code at 0x0321 1264 2; // max_stack 1265 2; // max_locals 1266 Bytes[13]{ 1267 0xCB00014C1A2B5FCC; 1268 0x00024C2BB0; 1269 }; 1270 [0] { // Traps 1271 } // end Traps 1272 [1] { // Attributes 1273 Attr(#20, 14) { // LineNumberTable at 0x0340 1274 [3] { // LineNumberTable 1275 0 12; // at 0x034C 1276 4 13; // at 0x0350 1277 11 14; // at 0x0354 1278 } 1279 } // end LineNumberTable 1280 } // Attributes 1281 } // end Code 1282 } // Attributes 1283 } // Member 1284 ; 1285 { // Member at 0x0354 1286 0x0011; // access 1287 #21; // name_cpx 1288 #22; // sig_cpx 1289 [1] { // Attributes 1290 Attr(#19, 31) { // Code at 0x035C 1291 1; // max_stack 1292 1; // max_locals 1293 Bytes[7]{ 1294 0x2ABA00050000AC; 1295 }; 1296 [0] { // Traps 1297 } // end Traps 1298 [1] { // Attributes 1299 Attr(#20, 6) { // LineNumberTable at 0x0375 1300 [1] { // LineNumberTable 1301 0 1; // at 0x0381 1302 } 1303 } // end LineNumberTable 1304 } // Attributes 1305 } // end Code 1306 } // Attributes 1307 } // Member 1308 ; 1309 { // Member at 0x0381 1310 0x0011; // access 1311 #23; // name_cpx 1312 #24; // sig_cpx 1313 [1] { // Attributes 1314 Attr(#19, 32) { // Code at 0x0389 1315 2; // max_stack 1316 2; // max_locals 1317 Bytes[8]{ 1318 0x2A2BBA00060000AC; 1319 }; 1320 [0] { // Traps 1321 } // end Traps 1322 [1] { // Attributes 1323 Attr(#20, 6) { // LineNumberTable at 0x03A3 1324 [1] { // LineNumberTable 1325 0 1; // at 0x03AF 1326 } 1327 } // end LineNumberTable 1328 } // Attributes 1329 } // end Code 1330 } // Attributes 1331 } // Member 1332 ; 1333 { // Member at 0x03AF 1334 0x0011; // access 1335 #25; // name_cpx 1336 #26; // sig_cpx 1337 [1] { // Attributes 1338 Attr(#19, 31) { // Code at 0x03B7 1339 1; // max_stack 1340 1; // max_locals 1341 Bytes[7]{ 1342 0x2ABA00070000B0; 1343 }; 1344 [0] { // Traps 1345 } // end Traps 1346 [1] { // Attributes 1347 Attr(#20, 6) { // LineNumberTable at 0x03D0 1348 [1] { // LineNumberTable 1349 0 1; // at 0x03DC 1350 } 1351 } // end LineNumberTable 1352 } // Attributes 1353 } // end Code 1354 } // Attributes 1355 } // Member 1356 ; 1357 { // Member at 0x03DC 1358 0x0008; // access 1359 #27; // name_cpx 1360 #28; // sig_cpx 1361 [1] { // Attributes 1362 Attr(#19, 34) { // Code at 0x03E4 1363 1; // max_stack 1364 0; // max_locals 1365 Bytes[10]{ 1366 0x110123B80008B300; 1367 0x09B1; 1368 }; 1369 [0] { // Traps 1370 } // end Traps 1371 [1] { // Attributes 1372 Attr(#20, 6) { // LineNumberTable at 0x0400 1373 [1] { // LineNumberTable 1374 0 2; // at 0x040C 1375 } 1376 } // end LineNumberTable 1377 } // Attributes 1378 } // end Code 1379 } // Attributes 1380 } // Member 1381 ; 1382 { // Member at 0x040C 1383 0x0008; // access 1384 #29; // name_cpx 1385 #30; // sig_cpx 1386 [1] { // Attributes 1387 Attr(#19, 59) { // Code at 0x0414 1388 2; // max_stack 1389 1; // max_locals 1390 Bytes[23]{ 1391 0xCB00014B107A2A5F; 1392 0xCC00024BCB00032A; 1393 0x5FCC00044B2AB0; 1394 }; 1395 [0] { // Traps 1396 } // end Traps 1397 [1] { // Attributes 1398 Attr(#20, 18) { // LineNumberTable at 0x043D 1399 [4] { // LineNumberTable 1400 0 6; // at 0x0449 1401 4 7; // at 0x044D 1402 12 8; // at 0x0451 1403 21 9; // at 0x0455 1404 } 1405 } // end LineNumberTable 1406 } // Attributes 1407 } // end Code 1408 } // Attributes 1409 } // Member 1410 } // methods 1411 1412 [3] { // Attributes 1413 Attr(#31, 2) { // SourceFile at 0x0457 1414 #32; 1415 } // end SourceFile 1416 ; 1417 Attr(#55, 10) { // InnerClasses at 0x045F 1418 [1] { // InnerClasses 1419 #53 #57 #54 25; // at 0x046F 1420 } 1421 } // end InnerClasses 1422 ; 1423 Attr(#37, 6) { // BootstrapMethods at 0x046F 1424 [1] { // bootstrap_methods 1425 { // bootstrap_method 1426 #38; // bootstrap_method_ref 1427 [0] { // bootstrap_arguments 1428 } // bootstrap_arguments 1429 } // bootstrap_method 1430 } 1431 } // end BootstrapMethods 1432 } // Attributes 1433 } // end class Circ2 1434 1435 ////////////////////////////////////////////////////////////////////// 1436 1437 // Inline types CircStaticA and CircStaticB have static fields of each other's 1438 // type. This should cause a ClassCircularityError exception when one of them 1439 // is being loaded. 1440 // 1441 // The inline types are based on these two Java classes: 1442 // 1443 // final inline class CircStaticA { 1444 // static final CircStaticA VT = makeCircStaticA(0x01234567); 1445 // final int int_v; 1446 // static final CircStaticB v2 = CircStaticB.default; 1447 // CircStaticA() { 1448 // int_v = 1; 1449 // } 1450 // static CircStaticA makeCircStaticA(int x) { 1451 // CircStaticA v = CircStaticA.default; 1452 // v = __WithField(v.int_v, x); 1453 // return v; 1454 // } 1455 // } 1456 //---------------------------------------------------------------- 1457 // final inline class CircStaticB { 1458 // static final CircStaticB VT = makeCircStaticB(0x01234567); 1459 // final int int_v; 1460 // static final CircStaticA v2 = CircStaticA.default; 1461 // CircStaticB() { 1462 // int_v = 1; 1463 // } 1464 // static CircStaticB makeCircStaticB(int x) { 1465 // CircStaticB v = CircStaticB.default; 1466 // v = __WithField(v.int_v, x); 1467 // return v; 1468 // } 1469 // } 1470 1471 class CircStaticA { 1472 0xCAFEBABE; 1473 0; // minor version 1474 66; // version 1475 [61] { // Constant Pool 1476 ; // first element is empty 1477 class #34; // #1 at 0x0A 1478 Field #1 #35; // #2 at 0x0D 1479 InvokeDynamic 0s #38; // #3 at 0x12 1480 InvokeDynamic 0s #39; // #4 at 0x17 1481 InvokeDynamic 0s #40; // #5 at 0x1C 1482 int 0x01234567; // #6 at 0x21 1483 Method #1 #41; // #7 at 0x26 1484 Field #1 #42; // #8 at 0x2B 1485 class #43; // #9 at 0x30 1486 Field #1 #44; // #10 at 0x33 1487 class #45; // #11 at 0x38 1488 Utf8 "VT"; // #12 at 0x3B 1489 Utf8 "QCircStaticA;"; // #13 at 0x40 1490 Utf8 "int_v"; // #14 at 0x50 1491 Utf8 "I"; // #15 at 0x58 1492 Utf8 "v2"; // #16 at 0x5C 1493 Utf8 "QCircStaticB;"; // #17 at 0x61 1494 Utf8 "makeCircStaticA"; // #18 at 0x71 1495 Utf8 "(I)QCircStaticA;"; // #19 at 0x83 1496 Utf8 "Code"; // #20 at 0x96 1497 Utf8 "LineNumberTable"; // #21 at 0x9D 1498 Utf8 "hashCode"; // #22 at 0xAF 1499 Utf8 "()I"; // #23 at 0xBA 1500 Utf8 "equals"; // #24 at 0xC0 1501 Utf8 "(Ljava/lang/Object;)Z"; // #25 at 0xC9 1502 Utf8 "toString"; // #26 at 0xE1 1503 Utf8 "()Ljava/lang/String;"; // #27 at 0xEC 1504 Utf8 "<clinit>"; // #28 at 0x0103 1505 Utf8 "()V"; // #29 at 0x010E 1506 Utf8 "<vnew>"; // #30 at 0x0114 1507 Utf8 "()QCircStaticA;"; // #31 at 0x011D 1508 Utf8 "SourceFile"; // #32 at 0x012F 1509 Utf8 "CircStaticA.java"; // #33 at 0x013C 1510 Utf8 "CircStaticA"; // #34 at 0x014F 1511 NameAndType #14 #15; // #35 at 0x015D 1512 Utf8 "BootstrapMethods"; // #36 at 0x0162 1513 MethodHandle 6b #46; // #37 at 0x0175 1514 NameAndType #22 #47; // #38 at 0x0179 1515 NameAndType #24 #48; // #39 at 0x017E 1516 NameAndType #26 #49; // #40 at 0x0183 1517 NameAndType #18 #19; // #41 at 0x0188 1518 NameAndType #12 #13; // #42 at 0x018D 1519 Utf8 "CircStaticB"; // #43 at 0x0192 1520 NameAndType #16 #17; // #44 at 0x01A0 1521 Utf8 "java/lang/Object"; // #45 at 0x01A5 1522 Method #50 #51; // #46 at 0x01B8 1523 Utf8 "(QCircStaticA;)I"; // #47 at 0x01BD 1524 Utf8 "(QCircStaticA;Ljava/lang/Object;)Z"; // #48 at 0x01D0 1525 Utf8 "(QCircStaticA;)Ljava/lang/String;"; // #49 at 0x01F5 1526 class #52; // #50 at 0x0219 1527 NameAndType #53 #57; // #51 at 0x021C 1528 Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #52 at 0x0221 1529 Utf8 "makeBootstrapMethod"; // #53 at 0x024A 1530 class #59; // #54 at 0x0260 1531 Utf8 "Lookup"; // #55 at 0x0263 1532 Utf8 "InnerClasses"; // #56 at 0x026C 1533 Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #57 at 0x027B 1534 class #60; // #58 at 0x02F1 1535 Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #59 at 0x02F4 1536 Utf8 "java/lang/invoke/MethodHandles"; // #60 at 0x031C 1537 } // Constant Pool 1538 1539 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 1540 #1;// this_cpx 1541 #11;// super_cpx 1542 1543 [0] { // Interfaces 1544 } // Interfaces 1545 1546 [3] { // fields 1547 { // Member at 0x0347 1548 0x0018; // access 1549 #12; // name_cpx 1550 #13; // sig_cpx 1551 [0] { // Attributes 1552 } // Attributes 1553 } // Member 1554 ; 1555 { // Member at 0x034F 1556 0x0010; // access 1557 #14; // name_cpx 1558 #15; // sig_cpx 1559 [0] { // Attributes 1560 } // Attributes 1561 } // Member 1562 ; 1563 { // Member at 0x0357 1564 0x0018; // access 1565 #16; // name_cpx 1566 #17; // sig_cpx 1567 [0] { // Attributes 1568 } // Attributes 1569 } // Member 1570 } // fields 1571 1572 [6] { // methods 1573 { // Member at 0x0361 1574 0x0008; // access 1575 #18; // name_cpx 1576 #19; // sig_cpx 1577 [1] { // Attributes 1578 Attr(#20, 45) { // Code at 0x0369 1579 2; // max_stack 1580 2; // max_locals 1581 Bytes[13]{ 1582 0xCB00014C1A2B5FCC; 1583 0x00024C2BB0; 1584 }; 1585 [0] { // Traps 1586 } // end Traps 1587 [1] { // Attributes 1588 Attr(#21, 14) { // LineNumberTable at 0x0388 1589 [3] { // LineNumberTable 1590 0 11; // at 0x0394 1591 4 12; // at 0x0398 1592 11 13; // at 0x039C 1593 } 1594 } // end LineNumberTable 1595 } // Attributes 1596 } // end Code 1597 } // Attributes 1598 } // Member 1599 ; 1600 { // Member at 0x039C 1601 0x0011; // access 1602 #22; // name_cpx 1603 #23; // sig_cpx 1604 [1] { // Attributes 1605 Attr(#20, 31) { // Code at 0x03A4 1606 1; // max_stack 1607 1; // max_locals 1608 Bytes[7]{ 1609 0x2ABA00030000AC; 1610 }; 1611 [0] { // Traps 1612 } // end Traps 1613 [1] { // Attributes 1614 Attr(#21, 6) { // LineNumberTable at 0x03BD 1615 [1] { // LineNumberTable 1616 0 1; // at 0x03C9 1617 } 1618 } // end LineNumberTable 1619 } // Attributes 1620 } // end Code 1621 } // Attributes 1622 } // Member 1623 ; 1624 { // Member at 0x03C9 1625 0x0011; // access 1626 #24; // name_cpx 1627 #25; // sig_cpx 1628 [1] { // Attributes 1629 Attr(#20, 32) { // Code at 0x03D1 1630 2; // max_stack 1631 2; // max_locals 1632 Bytes[8]{ 1633 0x2A2BBA00040000AC; 1634 }; 1635 [0] { // Traps 1636 } // end Traps 1637 [1] { // Attributes 1638 Attr(#21, 6) { // LineNumberTable at 0x03EB 1639 [1] { // LineNumberTable 1640 0 1; // at 0x03F7 1641 } 1642 } // end LineNumberTable 1643 } // Attributes 1644 } // end Code 1645 } // Attributes 1646 } // Member 1647 ; 1648 { // Member at 0x03F7 1649 0x0011; // access 1650 #26; // name_cpx 1651 #27; // sig_cpx 1652 [1] { // Attributes 1653 Attr(#20, 31) { // Code at 0x03FF 1654 1; // max_stack 1655 1; // max_locals 1656 Bytes[7]{ 1657 0x2ABA00050000B0; 1658 }; 1659 [0] { // Traps 1660 } // end Traps 1661 [1] { // Attributes 1662 Attr(#21, 6) { // LineNumberTable at 0x0418 1663 [1] { // LineNumberTable 1664 0 1; // at 0x0424 1665 } 1666 } // end LineNumberTable 1667 } // Attributes 1668 } // end Code 1669 } // Attributes 1670 } // Member 1671 ; 1672 { // Member at 0x0424 1673 0x0008; // access 1674 #28; // name_cpx 1675 #29; // sig_cpx 1676 [1] { // Attributes 1677 Attr(#20, 43) { // Code at 0x042C 1678 1; // max_stack 1679 0; // max_locals 1680 Bytes[15]{ 1681 0x1206B80007B30008; 1682 0xCB0009B3000AB1; 1683 }; 1684 [0] { // Traps 1685 } // end Traps 1686 [1] { // Attributes 1687 Attr(#21, 10) { // LineNumberTable at 0x044D 1688 [2] { // LineNumberTable 1689 0 2; // at 0x0459 1690 8 4; // at 0x045D 1691 } 1692 } // end LineNumberTable 1693 } // Attributes 1694 } // end Code 1695 } // Attributes 1696 } // Member 1697 ; 1698 { // Member at 0x045D 1699 0x0008; // access 1700 #30; // name_cpx 1701 #31; // sig_cpx 1702 [1] { // Attributes 1703 Attr(#20, 45) { // Code at 0x0465 1704 2; // max_stack 1705 1; // max_locals 1706 Bytes[13]{ 1707 0xCB00014B042A5FCC; 1708 0x00024B2AB0; 1709 }; 1710 [0] { // Traps 1711 } // end Traps 1712 [1] { // Attributes 1713 Attr(#21, 14) { // LineNumberTable at 0x0484 1714 [3] { // LineNumberTable 1715 0 6; // at 0x0490 1716 4 7; // at 0x0494 1717 11 8; // at 0x0498 1718 } 1719 } // end LineNumberTable 1720 } // Attributes 1721 } // end Code 1722 } // Attributes 1723 } // Member 1724 } // methods 1725 1726 [3] { // Attributes 1727 Attr(#32, 2) { // SourceFile at 0x049A 1728 #33; 1729 } // end SourceFile 1730 ; 1731 Attr(#56, 10) { // InnerClasses at 0x04A2 1732 [1] { // InnerClasses 1733 #54 #58 #55 25; // at 0x04B2 1734 } 1735 } // end InnerClasses 1736 ; 1737 Attr(#36, 6) { // BootstrapMethods at 0x04B2 1738 [1] { // bootstrap_methods 1739 { // bootstrap_method 1740 #37; // bootstrap_method_ref 1741 [0] { // bootstrap_arguments 1742 } // bootstrap_arguments 1743 } // bootstrap_method 1744 } 1745 } // end BootstrapMethods 1746 } // Attributes 1747 } // end class CircStaticA 1748 1749 class CircStaticB { 1750 0xCAFEBABE; 1751 0; // minor version 1752 66; // version 1753 [61] { // Constant Pool 1754 ; // first element is empty 1755 class #34; // #1 at 0x0A 1756 Field #1 #35; // #2 at 0x0D 1757 InvokeDynamic 0s #38; // #3 at 0x12 1758 InvokeDynamic 0s #39; // #4 at 0x17 1759 InvokeDynamic 0s #40; // #5 at 0x1C 1760 int 0x01234567; // #6 at 0x21 1761 Method #1 #41; // #7 at 0x26 1762 Field #1 #42; // #8 at 0x2B 1763 class #43; // #9 at 0x30 1764 Field #1 #44; // #10 at 0x33 1765 class #45; // #11 at 0x38 1766 Utf8 "VT"; // #12 at 0x3B 1767 Utf8 "QCircStaticB;"; // #13 at 0x40 1768 Utf8 "int_v"; // #14 at 0x50 1769 Utf8 "I"; // #15 at 0x58 1770 Utf8 "v2"; // #16 at 0x5C 1771 Utf8 "QCircStaticA;"; // #17 at 0x61 1772 Utf8 "makeCircStaticB"; // #18 at 0x71 1773 Utf8 "(I)QCircStaticB;"; // #19 at 0x83 1774 Utf8 "Code"; // #20 at 0x96 1775 Utf8 "LineNumberTable"; // #21 at 0x9D 1776 Utf8 "hashCode"; // #22 at 0xAF 1777 Utf8 "()I"; // #23 at 0xBA 1778 Utf8 "equals"; // #24 at 0xC0 1779 Utf8 "(Ljava/lang/Object;)Z"; // #25 at 0xC9 1780 Utf8 "toString"; // #26 at 0xE1 1781 Utf8 "()Ljava/lang/String;"; // #27 at 0xEC 1782 Utf8 "<clinit>"; // #28 at 0x0103 1783 Utf8 "()V"; // #29 at 0x010E 1784 Utf8 "<vnew>"; // #30 at 0x0114 1785 Utf8 "()QCircStaticB;"; // #31 at 0x011D 1786 Utf8 "SourceFile"; // #32 at 0x012F 1787 Utf8 "CircStaticB.java"; // #33 at 0x013C 1788 Utf8 "CircStaticB"; // #34 at 0x014F 1789 NameAndType #14 #15; // #35 at 0x015D 1790 Utf8 "BootstrapMethods"; // #36 at 0x0162 1791 MethodHandle 6b #46; // #37 at 0x0175 1792 NameAndType #22 #47; // #38 at 0x0179 1793 NameAndType #24 #48; // #39 at 0x017E 1794 NameAndType #26 #49; // #40 at 0x0183 1795 NameAndType #18 #19; // #41 at 0x0188 1796 NameAndType #12 #13; // #42 at 0x018D 1797 Utf8 "CircStaticA"; // #43 at 0x0192 1798 NameAndType #16 #17; // #44 at 0x01A0 1799 Utf8 "java/lang/Object"; // #45 at 0x01A5 1800 Method #50 #51; // #46 at 0x01B8 1801 Utf8 "(QCircStaticB;)I"; // #47 at 0x01BD 1802 Utf8 "(QCircStaticB;Ljava/lang/Object;)Z"; // #48 at 0x01D0 1803 Utf8 "(QCircStaticB;)Ljava/lang/String;"; // #49 at 0x01F5 1804 class #52; // #50 at 0x0219 1805 NameAndType #53 #57; // #51 at 0x021C 1806 Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #52 at 0x0221 1807 Utf8 "makeBootstrapMethod"; // #53 at 0x024A 1808 class #59; // #54 at 0x0260 1809 Utf8 "Lookup"; // #55 at 0x0263 1810 Utf8 "InnerClasses"; // #56 at 0x026C 1811 Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #57 at 0x027B 1812 class #60; // #58 at 0x02F1 1813 Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #59 at 0x02F4 1814 Utf8 "java/lang/invoke/MethodHandles"; // #60 at 0x031C 1815 } // Constant Pool 1816 1817 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 1818 #1;// this_cpx 1819 #11;// super_cpx 1820 1821 [0] { // Interfaces 1822 } // Interfaces 1823 1824 [3] { // fields 1825 { // Member at 0x0347 1826 0x0018; // access 1827 #12; // name_cpx 1828 #13; // sig_cpx 1829 [0] { // Attributes 1830 } // Attributes 1831 } // Member 1832 ; 1833 { // Member at 0x034F 1834 0x0010; // access 1835 #14; // name_cpx 1836 #15; // sig_cpx 1837 [0] { // Attributes 1838 } // Attributes 1839 } // Member 1840 ; 1841 { // Member at 0x0357 1842 0x0018; // access 1843 #16; // name_cpx 1844 #17; // sig_cpx 1845 [0] { // Attributes 1846 } // Attributes 1847 } // Member 1848 } // fields 1849 1850 [6] { // methods 1851 { // Member at 0x0361 1852 0x0008; // access 1853 #18; // name_cpx 1854 #19; // sig_cpx 1855 [1] { // Attributes 1856 Attr(#20, 45) { // Code at 0x0369 1857 2; // max_stack 1858 2; // max_locals 1859 Bytes[13]{ 1860 0xCB00014C1A2B5FCC; 1861 0x00024C2BB0; 1862 }; 1863 [0] { // Traps 1864 } // end Traps 1865 [1] { // Attributes 1866 Attr(#21, 14) { // LineNumberTable at 0x0388 1867 [3] { // LineNumberTable 1868 0 11; // at 0x0394 1869 4 12; // at 0x0398 1870 11 13; // at 0x039C 1871 } 1872 } // end LineNumberTable 1873 } // Attributes 1874 } // end Code 1875 } // Attributes 1876 } // Member 1877 ; 1878 { // Member at 0x039C 1879 0x0011; // access 1880 #22; // name_cpx 1881 #23; // sig_cpx 1882 [1] { // Attributes 1883 Attr(#20, 31) { // Code at 0x03A4 1884 1; // max_stack 1885 1; // max_locals 1886 Bytes[7]{ 1887 0x2ABA00030000AC; 1888 }; 1889 [0] { // Traps 1890 } // end Traps 1891 [1] { // Attributes 1892 Attr(#21, 6) { // LineNumberTable at 0x03BD 1893 [1] { // LineNumberTable 1894 0 1; // at 0x03C9 1895 } 1896 } // end LineNumberTable 1897 } // Attributes 1898 } // end Code 1899 } // Attributes 1900 } // Member 1901 ; 1902 { // Member at 0x03C9 1903 0x0011; // access 1904 #24; // name_cpx 1905 #25; // sig_cpx 1906 [1] { // Attributes 1907 Attr(#20, 32) { // Code at 0x03D1 1908 2; // max_stack 1909 2; // max_locals 1910 Bytes[8]{ 1911 0x2A2BBA00040000AC; 1912 }; 1913 [0] { // Traps 1914 } // end Traps 1915 [1] { // Attributes 1916 Attr(#21, 6) { // LineNumberTable at 0x03EB 1917 [1] { // LineNumberTable 1918 0 1; // at 0x03F7 1919 } 1920 } // end LineNumberTable 1921 } // Attributes 1922 } // end Code 1923 } // Attributes 1924 } // Member 1925 ; 1926 { // Member at 0x03F7 1927 0x0011; // access 1928 #26; // name_cpx 1929 #27; // sig_cpx 1930 [1] { // Attributes 1931 Attr(#20, 31) { // Code at 0x03FF 1932 1; // max_stack 1933 1; // max_locals 1934 Bytes[7]{ 1935 0x2ABA00050000B0; 1936 }; 1937 [0] { // Traps 1938 } // end Traps 1939 [1] { // Attributes 1940 Attr(#21, 6) { // LineNumberTable at 0x0418 1941 [1] { // LineNumberTable 1942 0 1; // at 0x0424 1943 } 1944 } // end LineNumberTable 1945 } // Attributes 1946 } // end Code 1947 } // Attributes 1948 } // Member 1949 ; 1950 { // Member at 0x0424 1951 0x0008; // access 1952 #28; // name_cpx 1953 #29; // sig_cpx 1954 [1] { // Attributes 1955 Attr(#20, 43) { // Code at 0x042C 1956 1; // max_stack 1957 0; // max_locals 1958 Bytes[15]{ 1959 0x1206B80007B30008; 1960 0xCB0009B3000AB1; 1961 }; 1962 [0] { // Traps 1963 } // end Traps 1964 [1] { // Attributes 1965 Attr(#21, 10) { // LineNumberTable at 0x044D 1966 [2] { // LineNumberTable 1967 0 2; // at 0x0459 1968 8 4; // at 0x045D 1969 } 1970 } // end LineNumberTable 1971 } // Attributes 1972 } // end Code 1973 } // Attributes 1974 } // Member 1975 ; 1976 { // Member at 0x045D 1977 0x0008; // access 1978 #30; // name_cpx 1979 #31; // sig_cpx 1980 [1] { // Attributes 1981 Attr(#20, 45) { // Code at 0x0465 1982 2; // max_stack 1983 1; // max_locals 1984 Bytes[13]{ 1985 0xCB00014B042A5FCC; 1986 0x00024B2AB0; 1987 }; 1988 [0] { // Traps 1989 } // end Traps 1990 [1] { // Attributes 1991 Attr(#21, 14) { // LineNumberTable at 0x0484 1992 [3] { // LineNumberTable 1993 0 6; // at 0x0490 1994 4 7; // at 0x0494 1995 11 8; // at 0x0498 1996 } 1997 } // end LineNumberTable 1998 } // Attributes 1999 } // end Code 2000 } // Attributes 2001 } // Member 2002 } // methods 2003 2004 [3] { // Attributes 2005 Attr(#32, 2) { // SourceFile at 0x049A 2006 #33; 2007 } // end SourceFile 2008 ; 2009 Attr(#56, 10) { // InnerClasses at 0x04A2 2010 [1] { // InnerClasses 2011 #54 #58 #55 25; // at 0x04B2 2012 } 2013 } // end InnerClasses 2014 ; 2015 Attr(#36, 6) { // BootstrapMethods at 0x04B2 2016 [1] { // bootstrap_methods 2017 { // bootstrap_method 2018 #37; // bootstrap_method_ref 2019 [0] { // bootstrap_arguments 2020 } // bootstrap_arguments 2021 } // bootstrap_method 2022 } 2023 } // end BootstrapMethods 2024 } // Attributes 2025 } // end class CircStaticB 2026 2027 ////////////////////////////////////////////////////////////////////// 2028 2029 // Test that an inline type cannot be Cloneable. 2030 // 2031 // final inline class ValueCloneable implements Cloneable { 2032 // final int field; 2033 // private ValueCloneable() { field = 0; } 2034 //} 2035 2036 class ValueCloneable { 2037 0xCAFEBABE; 2038 0; // minor version 2039 66; // version 2040 [46] { // Constant Pool 2041 ; // first element is empty 2042 class #22; // #1 at 0x0A 2043 Field #1 #23; // #2 at 0x0D 2044 InvokeDynamic 0s #26; // #3 at 0x12 2045 InvokeDynamic 0s #27; // #4 at 0x17 2046 InvokeDynamic 0s #28; // #5 at 0x1C 2047 class #29; // #6 at 0x21 2048 class #30; // #7 at 0x24 2049 Utf8 "field"; // #8 at 0x27 2050 Utf8 "I"; // #9 at 0x2F 2051 Utf8 "hashCode"; // #10 at 0x33 2052 Utf8 "()I"; // #11 at 0x3E 2053 Utf8 "Code"; // #12 at 0x44 2054 Utf8 "LineNumberTable"; // #13 at 0x4B 2055 Utf8 "equals"; // #14 at 0x5D 2056 Utf8 "(Ljava/lang/Object;)Z"; // #15 at 0x66 2057 Utf8 "toString"; // #16 at 0x7E 2058 Utf8 "()Ljava/lang/String;"; // #17 at 0x89 2059 Utf8 "<vnew>"; // #18 at 0xA0 2060 Utf8 "()QValueCloneable;"; // #19 at 0xA9 2061 Utf8 "SourceFile"; // #20 at 0xBE 2062 Utf8 "ValueCloneable.java"; // #21 at 0xCB 2063 Utf8 "ValueCloneable"; // #22 at 0xE1 2064 NameAndType #8 #9; // #23 at 0xF2 2065 Utf8 "BootstrapMethods"; // #24 at 0xF7 2066 MethodHandle 6b #31; // #25 at 0x010A 2067 NameAndType #10 #32; // #26 at 0x010E 2068 NameAndType #14 #33; // #27 at 0x0113 2069 NameAndType #16 #34; // #28 at 0x0118 2070 Utf8 "java/lang/Object"; // #29 at 0x011D 2071 Utf8 "java/lang/Cloneable"; // #30 at 0x0130 2072 Method #35 #36; // #31 at 0x0146 2073 Utf8 "(QValueCloneable;)I"; // #32 at 0x014B 2074 Utf8 "(QValueCloneable;Ljava/lang/Object;)Z"; // #33 at 0x0161 2075 Utf8 "(QValueCloneable;)Ljava/lang/String;"; // #34 at 0x0189 2076 class #37; // #35 at 0x01B0 2077 NameAndType #38 #42; // #36 at 0x01B3 2078 Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #37 at 0x01B8 2079 Utf8 "makeBootstrapMethod"; // #38 at 0x01E1 2080 class #44; // #39 at 0x01F7 2081 Utf8 "Lookup"; // #40 at 0x01FA 2082 Utf8 "InnerClasses"; // #41 at 0x0203 2083 Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #42 at 0x0212 2084 class #45; // #43 at 0x0288 2085 Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #44 at 0x028B 2086 Utf8 "java/lang/invoke/MethodHandles"; // #45 at 0x02B3 2087 } // Constant Pool 2088 2089 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 2090 #1;// this_cpx 2091 #6;// super_cpx 2092 2093 [1] { // Interfaces 2094 #7; 2095 } // Interfaces 2096 2097 [1] { // fields 2098 { // Member at 0x02E0 2099 0x0010; // access 2100 #8; // name_cpx 2101 #9; // sig_cpx 2102 [0] { // Attributes 2103 } // Attributes 2104 } // Member 2105 } // fields 2106 2107 [4] { // methods 2108 { // Member at 0x02EA 2109 0x0011; // access 2110 #10; // name_cpx 2111 #11; // sig_cpx 2112 [1] { // Attributes 2113 Attr(#12, 31) { // Code at 0x02F2 2114 1; // max_stack 2115 1; // max_locals 2116 Bytes[7]{ 2117 0x2ABA00030000AC; 2118 }; 2119 [0] { // Traps 2120 } // end Traps 2121 [1] { // Attributes 2122 Attr(#13, 6) { // LineNumberTable at 0x030B 2123 [1] { // LineNumberTable 2124 0 1; // at 0x0317 2125 } 2126 } // end LineNumberTable 2127 } // Attributes 2128 } // end Code 2129 } // Attributes 2130 } // Member 2131 ; 2132 { // Member at 0x0317 2133 0x0011; // access 2134 #14; // name_cpx 2135 #15; // sig_cpx 2136 [1] { // Attributes 2137 Attr(#12, 32) { // Code at 0x031F 2138 2; // max_stack 2139 2; // max_locals 2140 Bytes[8]{ 2141 0x2A2BBA00040000AC; 2142 }; 2143 [0] { // Traps 2144 } // end Traps 2145 [1] { // Attributes 2146 Attr(#13, 6) { // LineNumberTable at 0x0339 2147 [1] { // LineNumberTable 2148 0 1; // at 0x0345 2149 } 2150 } // end LineNumberTable 2151 } // Attributes 2152 } // end Code 2153 } // Attributes 2154 } // Member 2155 ; 2156 { // Member at 0x0345 2157 0x0011; // access 2158 #16; // name_cpx 2159 #17; // sig_cpx 2160 [1] { // Attributes 2161 Attr(#12, 31) { // Code at 0x034D 2162 1; // max_stack 2163 1; // max_locals 2164 Bytes[7]{ 2165 0x2ABA00050000B0; 2166 }; 2167 [0] { // Traps 2168 } // end Traps 2169 [1] { // Attributes 2170 Attr(#13, 6) { // LineNumberTable at 0x0366 2171 [1] { // LineNumberTable 2172 0 1; // at 0x0372 2173 } 2174 } // end LineNumberTable 2175 } // Attributes 2176 } // end Code 2177 } // Attributes 2178 } // Member 2179 ; 2180 { // Member at 0x0372 2181 0x0008; // access 2182 #18; // name_cpx 2183 #19; // sig_cpx 2184 [1] { // Attributes 2185 Attr(#12, 37) { // Code at 0x037A 2186 2; // max_stack 2187 1; // max_locals 2188 Bytes[13]{ 2189 0xCB00014B032A5FCC; 2190 0x00024B2AB0; 2191 }; 2192 [0] { // Traps 2193 } // end Traps 2194 [1] { // Attributes 2195 Attr(#13, 6) { // LineNumberTable at 0x0399 2196 [1] { // LineNumberTable 2197 0 3; // at 0x03A5 2198 } 2199 } // end LineNumberTable 2200 } // Attributes 2201 } // end Code 2202 } // Attributes 2203 } // Member 2204 } // methods 2205 2206 [3] { // Attributes 2207 Attr(#20, 2) { // SourceFile at 0x03A7 2208 #21; 2209 } // end SourceFile 2210 ; 2211 Attr(#41, 10) { // InnerClasses at 0x03AF 2212 [1] { // InnerClasses 2213 #39 #43 #40 25; // at 0x03BF 2214 } 2215 } // end InnerClasses 2216 ; 2217 Attr(#24, 6) { // BootstrapMethods at 0x03BF 2218 [1] { // bootstrap_methods 2219 { // bootstrap_method 2220 #25; // bootstrap_method_ref 2221 [0] { // bootstrap_arguments 2222 } // bootstrap_arguments 2223 } // bootstrap_method 2224 } 2225 } // end BootstrapMethods 2226 } // Attributes 2227 } // end class ValueCloneable 2228 2229 2230 // Test that a class with an old class file version cannot contain a Q signature. 2231 class OldClassWithQSig { 2232 0xCAFEBABE; 2233 0; // minor version 2234 52; // version 2235 [29] { // Constant Pool 2236 ; // first element is empty 2237 Utf8 "OldClassWithQSig"; // #1 at 0x0A 2238 class #1; // #2 at 0x1A 2239 Utf8 "java/lang/Object"; // #3 at 0x1D 2240 class #3; // #4 at 0x30 2241 Utf8 "inlineclasses.scala"; // #5 at 0x33 2242 Utf8 "Lscala/reflect/ScalaSignature;"; // #6 at 0x49 2243 Utf8 "bytes"; // #7 at 0x6A 2244 Utf8 "i1QB\t!AAC\bI\t\tQ!!Q\nEAQ!YQ\"T=J]2Lg.Z\"mCN(\"q*W;z}\r1C\n!\tQQ\"D\fa!B:dC2\fB\b\f\te.*fM\t.F!\tQ!#\tJ;%Aj]&$h\b3AA!)qba#"; // #8 at 0x72 2245 Utf8 "i"; // #9 at 0x0128 2246 Utf8 "I"; // #10 at 0x012C 2247 Utf8 "()I"; // #11 at 0x0130 2248 NameAndType #9 #10; // #12 at 0x0136 2249 Field #2 #12; // #13 at 0x013B 2250 Utf8 "this"; // #14 at 0x0140 2251 Utf8 "QOldClassWithQSig;"; // #15 at 0x0147 2252 Utf8 "<init>"; // #16 at 0x0159 2253 Utf8 "(I)V"; // #17 at 0x0162 2254 Utf8 "()V"; // #18 at 0x0169 2255 NameAndType #16 #18; // #19 at 0x016F 2256 Method #4 #19; // #20 at 0x0174 2257 Utf8 "Code"; // #21 at 0x0179 2258 Utf8 "LineNumberTable"; // #22 at 0x0180 2259 Utf8 "LocalVariableTable"; // #23 at 0x0192 2260 Utf8 "MethodParameters"; // #24 at 0x01A7 2261 Utf8 "SourceFile"; // #25 at 0x01BA 2262 Utf8 "RuntimeVisibleAnnotations"; // #26 at 0x01C7 2263 Utf8 "ScalaInlineInfo"; // #27 at 0x01E3 2264 Utf8 "ScalaSig"; // #28 at 0x01F5 2265 } // Constant Pool 2266 2267 0x0121; // access [ ACC_PUBLIC ACC_SUPER ] 2268 #2;// this_cpx 2269 #4;// super_cpx 2270 2271 [0] { // Interfaces 2272 } // Interfaces 2273 2274 [1] { // Fields 2275 { // field at 0x020A 2276 0x0012; // access 2277 #9; // name_index : i 2278 #10; // descriptor_index : I 2279 [0] { // Attributes 2280 } // Attributes 2281 } 2282 } // Fields 2283 2284 [2] { // Methods 2285 { // method at 0x0214 2286 0x0001; // access 2287 #9; // name_index : i 2288 #11; // descriptor_index : ()I 2289 [1] { // Attributes 2290 Attr(#21, 47) { // Code at 0x021C 2291 1; // max_stack 2292 1; // max_locals 2293 Bytes[5]{ 2294 0x2AB4000DAC; 2295 } 2296 [0] { // Traps 2297 } // end Traps 2298 [2] { // Attributes 2299 Attr(#22, 6) { // LineNumberTable at 0x0233 2300 [1] { // line_number_table 2301 0 1; // at 0x023F 2302 } 2303 } // end LineNumberTable 2304 ; 2305 Attr(#23, 12) { // LocalVariableTable at 0x023F 2306 [1] { // LocalVariableTable 2307 0 5 14 15 0; // at 0x0251 2308 } 2309 } // end LocalVariableTable 2310 } // Attributes 2311 } // end Code 2312 } // Attributes 2313 } 2314 ; 2315 { // method at 0x0251 2316 0x0001; // access 2317 #16; // name_index : <init> 2318 #17; // descriptor_index : (I)V 2319 [2] { // Attributes 2320 Attr(#21, 70) { // Code at 0x0259 2321 2; // max_stack 2322 2; // max_locals 2323 Bytes[10]{ 2324 0x2A1BB5000D2AB700; 2325 0x14B1; 2326 } 2327 [0] { // Traps 2328 } // end Traps 2329 [2] { // Attributes 2330 Attr(#22, 14) { // LineNumberTable at 0x0275 2331 [3] { // line_number_table 2332 0 1; // at 0x0281 2333 5 3; // at 0x0285 2334 9 1; // at 0x0289 2335 } 2336 } // end LineNumberTable 2337 ; 2338 Attr(#23, 22) { // LocalVariableTable at 0x0289 2339 [2] { // LocalVariableTable 2340 0 10 14 15 0; // at 0x029B 2341 0 10 9 10 1; // at 0x02A5 2342 } 2343 } // end LocalVariableTable 2344 } // Attributes 2345 } // end Code 2346 ; 2347 Attr(#24, 5) { // MethodParameters at 0x02A5 2348 [1]b { // MethodParameters 2349 #9 0x0010; // at 0x02B0 2350 } 2351 } // end MethodParameters 2352 } // Attributes 2353 } 2354 } // Methods 2355 2356 [4] { // Attributes 2357 Attr(#25, 2) { // SourceFile at 0x02B2 2358 #5; 2359 } // end SourceFile 2360 ; 2361 Attr(#26, 11) { // RuntimeVisibleAnnotations at 0x02BA 2362 [1] { // annotations 2363 { // annotation 2364 #6; 2365 [1] { // element_value_pairs 2366 { // element value pair 2367 #7; 2368 { // element_value 2369 's'; 2370 #8; 2371 } // element_value 2372 } // element value pair 2373 } // element_value_pairs 2374 } // annotation 2375 } 2376 } // end RuntimeVisibleAnnotations 2377 ; 2378 Attr(#27, 14) { // ScalaInlineInfo at 0x02CB 2379 0x0100000200100011; 2380 0x000009000B00; 2381 } // end ScalaInlineInfo 2382 ; 2383 Attr(#28, 3) { // ScalaSig at 0x02DF 2384 0x050200; 2385 } // end ScalaSig 2386 } // Attributes 2387 } // end class OldClassWithQSig 2388 2389 2390 // Test that a class with an old class file version cannot contain an array Q signature. 2391 class OldClassWithQArraySig { 2392 0xCAFEBABE; 2393 0; // minor version 2394 52; // version 2395 [20] { // Constant Pool 2396 ; // first element is empty 2397 Method #2 #3; // #1 at 0x0A 2398 class #4; // #2 at 0x0F 2399 NameAndType #5 #6; // #3 at 0x12 2400 Utf8 "java/lang/Object"; // #4 at 0x17 2401 Utf8 "<init>"; // #5 at 0x2A 2402 Utf8 "()V"; // #6 at 0x33 2403 class #8; // #7 at 0x39 2404 Utf8 "java/lang/Integer"; // #8 at 0x3C 2405 Field #10 #11; // #9 at 0x50 2406 class #12; // #10 at 0x55 2407 NameAndType #13 #14; // #11 at 0x58 2408 Utf8 "OldClassWithQArraySig"; // #12 at 0x5D 2409 Utf8 "ia"; // #13 at 0x65 2410 Utf8 "[Qjava/lang/Integer;"; // #14 at 0x6A 2411 Utf8 "Code"; // #15 at 0x81 2412 Utf8 "LineNumberTable"; // #16 at 0x88 2413 Utf8 "runIt"; // #17 at 0x9A 2414 Utf8 "SourceFile"; // #18 at 0xA2 2415 Utf8 "OldClassWithQArraySig.java"; // #19 at 0xAF 2416 } // Constant Pool 2417 2418 0x0021; // access [ ACC_PUBLIC ACC_SUPER ] 2419 #10;// this_cpx 2420 #2;// super_cpx 2421 2422 [0] { // Interfaces 2423 } // Interfaces 2424 2425 [1] { // Fields 2426 { // field at 0xC6 2427 0x0000; // access 2428 #13; // name_index : ia 2429 #14; // descriptor_index : [Qjava/lang/Integer; 2430 [0] { // Attributes 2431 } // Attributes 2432 } 2433 } // Fields 2434 2435 [2] { // Methods 2436 { // method at 0xD0 2437 0x0001; // access 2438 #5; // name_index : <init> 2439 #6; // descriptor_index : ()V 2440 [1] { // Attributes 2441 Attr(#15, 29) { // Code at 0xD8 2442 1; // max_stack 2443 1; // max_locals 2444 Bytes[5]{ 2445 0x2AB70001B1; 2446 } 2447 [0] { // Traps 2448 } // end Traps 2449 [1] { // Attributes 2450 Attr(#16, 6) { // LineNumberTable at 0xEF 2451 [1] { // line_number_table 2452 0 1; // at 0xFB 2453 } 2454 } // end LineNumberTable 2455 } // Attributes 2456 } // end Code 2457 } // Attributes 2458 } 2459 ; 2460 { // method at 0xFB 2461 0x0001; // access 2462 #17; // name_index : runIt 2463 #6; // descriptor_index : ()V 2464 [1] { // Attributes 2465 Attr(#15, 37) { // Code at 0x0103 2466 2; // max_stack 2467 1; // max_locals 2468 Bytes[9]{ 2469 0x2A05BD0007B50009; 2470 0xB1; 2471 } 2472 [0] { // Traps 2473 } // end Traps 2474 [1] { // Attributes 2475 Attr(#16, 10) { // LineNumberTable at 0x011E 2476 [2] { // line_number_table 2477 0 6; // at 0x012A 2478 8 7; // at 0x012E 2479 } 2480 } // end LineNumberTable 2481 } // Attributes 2482 } // end Code 2483 } // Attributes 2484 } 2485 } // Methods 2486 2487 [1] { // Attributes 2488 Attr(#18, 2) { // SourceFile at 0x0130 2489 #19; 2490 } // end SourceFile 2491 } // Attributes 2492 } // end class OldClassWithQArraySig 2493 2494 2495 // This class has a super_cpx of zero. This should cause a ClassFormatError 2496 // exception when this class is loaded. 2497 class SuperIsZero { 2498 0xCAFEBABE; 2499 0; // minor version 2500 66; // version 2501 [15] { // Constant Pool 2502 ; // first element is empty 2503 class #2; // #1 at 0x0A 2504 Utf8 "SuperIsZero"; // #2 at 0x0D 2505 Field #1 #4; // #3 at 0x1A 2506 NameAndType #5 #6; // #4 at 0x1F 2507 Utf8 "x"; // #5 at 0x24 2508 Utf8 "I"; // #6 at 0x28 2509 class #8; // #7 at 0x2C 2510 Utf8 "java/lang/Object"; // #8 at 0x2F 2511 Utf8 "<init>"; // #9 at 0x42 2512 Utf8 "()QSuperIsZero;"; // #10 at 0x4B 2513 Utf8 "Code"; // #11 at 0x5C 2514 Utf8 "LineNumberTable"; // #12 at 0x63 2515 Utf8 "SourceFile"; // #13 at 0x75 2516 Utf8 "SuperIsZero.java"; // #14 at 0x82 2517 } // Constant Pool 2518 2519 0x0051; // access [ ACC_VALUE ACC_PUBLIC ACC_FINAL ] 2520 #1;// this_cpx 2521 #0;// super_cpx // !!! changed 7 to 0 2522 2523 [0] { // Interfaces 2524 } // Interfaces 2525 2526 [1] { // Fields 2527 { // field at 0x9E 2528 0x0010; // access 2529 #5; // name_index : x 2530 #6; // descriptor_index : I 2531 [0] { // Attributes 2532 } // Attributes 2533 } 2534 } // Fields 2535 2536 [1] { // Methods 2537 { // method at 0xA8 2538 0x0009; // access 2539 #9; // name_index : <init> 2540 #10; // descriptor_index : ()QSuperIsZero; 2541 [1] { // Attributes 2542 Attr(#11, 45) { // Code at 0xB0 2543 2; // max_stack 2544 1; // max_locals 2545 Bytes[13]{ 2546 0xCB00014B082A5FCC; 2547 0x00034B2AB0; 2548 } 2549 [0] { // Traps 2550 } // end Traps 2551 [1] { // Attributes 2552 Attr(#12, 14) { // LineNumberTable at 0xCF 2553 [3] { // line_number_table 2554 0 4; // at 0xDB 2555 4 5; // at 0xDF 2556 11 6; // at 0xE3 2557 } 2558 } // end LineNumberTable 2559 } // Attributes 2560 } // end Code 2561 } // Attributes 2562 } 2563 } // Methods 2564 2565 [1] { // Attributes 2566 Attr(#13, 2) { // SourceFile at 0xE5 2567 #14; 2568 } // end SourceFile 2569 } // Attributes 2570 } // end class SuperIsZero 2571 2572 2573 // This class file tests that a ClassFormatError exception is thrown for an old 2574 // class file (version 49) containing a Q signature. This file is based on the 2575 // following Java code, except the signature for method callDot() was changed 2576 // to "(QDot;)V";. 2577 /* 2578 public class QInOldClass { 2579 2580 public static void callDot(Dot d) { 2581 System.out.println("Hi Dot"); 2582 } 2583 2584 } 2585 */ 2586 class QInOldClass { 2587 0xCAFEBABE; 2588 0; // minor version 2589 49; // version 2590 [32] { // Constant Pool 2591 ; // first element is empty 2592 Method #2 #3; // #1 at 0x0A 2593 class #4; // #2 at 0x0F 2594 NameAndType #5 #6; // #3 at 0x12 2595 Utf8 "java/lang/Object"; // #4 at 0x17 2596 Utf8 "<init>"; // #5 at 0x2A 2597 Utf8 "()V"; // #6 at 0x33 2598 Field #8 #9; // #7 at 0x39 2599 class #10; // #8 at 0x3E 2600 NameAndType #11 #12; // #9 at 0x41 2601 Utf8 "java/lang/System"; // #10 at 0x46 2602 Utf8 "out"; // #11 at 0x59 2603 Utf8 "Ljava/io/PrintStream;"; // #12 at 0x5F 2604 String #14; // #13 at 0x77 2605 Utf8 "Hi Dot"; // #14 at 0x7A 2606 Method #16 #17; // #15 at 0x83 2607 class #18; // #16 at 0x88 2608 NameAndType #19 #20; // #17 at 0x8B 2609 Utf8 "java/io/PrintStream"; // #18 at 0x90 2610 Utf8 "println"; // #19 at 0xA6 2611 Utf8 "(Ljava/lang/String;)V"; // #20 at 0xB0 2612 class #22; // #21 at 0xC8 2613 Utf8 "QInOldClass"; // #22 at 0xCB 2614 Utf8 "Code"; // #23 at 0xD6 2615 Utf8 "LineNumberTable"; // #24 at 0xDD 2616 Utf8 "callDot"; // #25 at 0xEF 2617 Utf8 "(QDot;)V"; // #26 at 0xF9 2618 Utf8 "SourceFile"; // #27 at 0x0104 2619 Utf8 "QInOldClass.java"; // #28 at 0x0111 2620 Utf8 "Preload"; // #29 at 0x0121 2621 class #31; // #30 at 0x012B 2622 Utf8 "Dot"; // #31 at 0x012E 2623 } // Constant Pool 2624 2625 0x0021; // access [ ACC_PUBLIC ACC_SUPER ] 2626 #21;// this_cpx 2627 #2;// super_cpx 2628 2629 [0] { // Interfaces 2630 } // Interfaces 2631 2632 [0] { // Fields 2633 } // Fields 2634 2635 [2] { // Methods 2636 { // method at 0x0140 2637 0x0001; // access 2638 #5; // name_index : <init> 2639 #6; // descriptor_index : ()V 2640 [1] { // Attributes 2641 Attr(#23, 29) { // Code at 0x0148 2642 1; // max_stack 2643 1; // max_locals 2644 Bytes[5]{ 2645 0x2AB70001B1; 2646 } 2647 [0] { // Traps 2648 } // end Traps 2649 [1] { // Attributes 2650 Attr(#24, 6) { // LineNumberTable at 0x015F 2651 [1] { // line_number_table 2652 0 2; // at 0x016B 2653 } 2654 } // end LineNumberTable 2655 } // Attributes 2656 } // end Code 2657 } // Attributes 2658 } 2659 ; 2660 { // method at 0x016B 2661 0x0009; // access 2662 #25; // name_index : callDot 2663 #26; // descriptor_index : (LDot;)V 2664 [1] { // Attributes 2665 Attr(#23, 37) { // Code at 0x0173 2666 2; // max_stack 2667 1; // max_locals 2668 Bytes[9]{ 2669 0xB20007120DB6000F; 2670 0xB1; 2671 } 2672 [0] { // Traps 2673 } // end Traps 2674 [1] { // Attributes 2675 Attr(#24, 10) { // LineNumberTable at 0x018E 2676 [2] { // line_number_table 2677 0 5; // at 0x019A 2678 8 6; // at 0x019E 2679 } 2680 } // end LineNumberTable 2681 } // Attributes 2682 } // end Code 2683 } // Attributes 2684 } 2685 } // Methods 2686 2687 [2] { // Attributes 2688 Attr(#27, 2) { // SourceFile at 0x01A0 2689 #28; 2690 } // end SourceFile 2691 ; 2692 Attr(#29, 4) { // Preload at 0x01A8 2693 0x0001001E; 2694 } // end Preload 2695 } // Attributes 2696 } // end class QInOldClass