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 // Many of the jcod classes in this file were derived from this Java inline type: 26 // 27 // final inline class Value { 28 // static final Value VT = makeValue(0x01234567); 29 // final int int_v; 30 // Value() { 31 // int_v = 1; 32 // } 33 // static Value makeValue(int x) { 34 // Value v = Value.default; 35 // v = __WithField(v.int_v, x); 36 // return v; 37 // } 38 // } 39 // 40 // The changes for each test were made to the bytecodes for method makeValue(int x). 41 // Its bytecodes are: 42 // 43 // static Value makeValue(int); descriptor: (I)LValue; flags: (0x0008) ACC_STATIC 44 // Code: 45 // stack=2, locals=2, args_size=1 46 // 0: aconst_init #3 // class Value 47 // 3: astore_1 48 // 4: aload_1 49 // 5: iload_0 50 // 6: withfield #2 // Field int_v:I 51 // 9: astore_1 52 // 10: aload_1 53 // 11: areturn 54 55 56 // The constant pool index of the aconst_init opcode (0xCB) in the Code 57 // attribute was changed to 0x93. Since this index is outside the range of 58 // the constant pool, a VerifyError exception should get thrown. 59 // 60 class defValBadCP { 61 0xCAFEBABE; 62 0; // minor version 63 68; // version 64 [27] { // Constant Pool 65 ; // first element is empty 66 Method #7 #21; // #1 at 0x0A 67 Field #3 #22; // #2 at 0x0F 68 class #23; // #3 at 0x14 69 int 0x01234567; // #4 at 0x17 70 Method #3 #24; // #5 at 0x1C 71 Field #3 #25; // #6 at 0x21 72 class #26; // #7 at 0x26 73 Utf8 "VT"; // #8 at 0x29 74 Utf8 "LdefValBadCP;"; // #9 at 0x2E 75 Utf8 "int_v"; // #10 at 0x38 76 Utf8 "I"; // #11 at 0x40 77 Utf8 "<vnew>"; // #12 at 0x44 78 Utf8 "()V"; // #13 at 0x4D 79 Utf8 "Code"; // #14 at 0x53 80 Utf8 "LineNumberTable"; // #15 at 0x5A 81 Utf8 "makeValue"; // #16 at 0x6C 82 Utf8 "(I)LdefValBadCP;"; // #17 at 0x78 83 Utf8 "<clinit>"; // #18 at 0x85 84 Utf8 "SourceFile"; // #19 at 0x90 85 Utf8 "defValBadCP.java"; // #20 at 0x9D 86 NameAndType #12 #13; // #21 at 0xAA 87 NameAndType #10 #11; // #22 at 0xAF 88 Utf8 "defValBadCP"; // #23 at 0xB4 89 NameAndType #16 #17; // #24 at 0xBC 90 NameAndType #8 #9; // #25 at 0xC1 91 Utf8 "java/lang/Object"; // #26 at 0xC6 92 } // Constant Pool 93 94 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 95 #3;// this_cpx 96 #7;// super_cpx 97 98 [0] { // Interfaces 99 } // Interfaces 100 101 [2] { // fields 102 { // Member at 0xE3 103 0x0018; // access 104 #8; // name_cpx 105 #9; // sig_cpx 106 [0] { // Attributes 107 } // Attributes 108 } // Member 109 ; 110 { // Member at 0xEB 111 0x0010; // access 112 #10; // name_cpx 113 #11; // sig_cpx 114 [0] { // Attributes 115 } // Attributes 116 } // Member 117 } // fields 118 119 [1] { // methods 120 { // Member at 0x012D 121 0x0008; // access 122 #16; // name_cpx 123 #17; // sig_cpx 124 [1] { // Attributes 125 Attr(#14, 44) { // Code at 0x0135 126 2; // max_stack 127 2; // max_locals 128 Bytes[12]{ 129 0xCB00934C2B1ACC00; // Changed CP index from 3 to 0x93 for opcode 0xCB (aconst_init) 130 0x024C2BB0; // so that the index is outside of the range of the constant pool. 131 }; 132 [0] { // Traps 133 } // end Traps 134 [1] { // Attributes 135 Attr(#15, 14) { // LineNumberTable at 0x0153 136 [3] { // LineNumberTable 137 0 8; // at 0x015F 138 4 9; // at 0x0163 139 10 10; // at 0x0167 140 } 141 } // end LineNumberTable 142 } // Attributes 143 } // end Code 144 } // Attributes 145 } // Member 146 } // methods 147 148 [1] { // Attributes 149 Attr(#19, 2) { // SourceFile at 0x0198 150 #20; 151 } // end SourceFile 152 } // Attributes 153 } // end class defValBadCP 154 155 /////////////////////////////////////////////////////////// 156 157 // The class's major version was changed to 54. Since this class has a 158 // aconst_init opcode (0xCB), this should cause a ClassFormatError 159 // exception to get thrown. 160 // 161 class defValBadMajorVersion { 162 0xCAFEBABE; 163 0; // minor version 164 54; // version 165 [27] { // Constant Pool 166 ; // first element is empty 167 Method #7 #21; // #1 at 0x0A 168 Field #3 #22; // #2 at 0x0F 169 class #23; // #3 at 0x14 170 int 0x01234567; // #4 at 0x17 171 Method #3 #24; // #5 at 0x1C 172 Field #3 #25; // #6 at 0x21 173 class #26; // #7 at 0x26 174 Utf8 "VT"; // #8 at 0x29 175 Utf8 "LdefValBadMajorVersion;"; // #9 at 0x2E 176 Utf8 "int_v"; // #10 at 0x38 177 Utf8 "I"; // #11 at 0x40 178 Utf8 "<init>"; // #12 at 0x44 179 Utf8 "()V"; // #13 at 0x4D 180 Utf8 "Code"; // #14 at 0x53 181 Utf8 "LineNumberTable"; // #15 at 0x5A 182 Utf8 "makeValue"; // #16 at 0x6C 183 Utf8 "(I)LdefValBadMajorVersion;"; // #17 at 0x78 184 Utf8 "<clinit>"; // #18 at 0x85 185 Utf8 "SourceFile"; // #19 at 0x90 186 Utf8 "defValBadMajorVersion.java"; // #20 at 0x9D 187 NameAndType #12 #13; // #21 at 0xAA 188 NameAndType #10 #11; // #22 at 0xAF 189 Utf8 "defValBadMajorVersion"; // #23 at 0xB4 190 NameAndType #16 #17; // #24 at 0xBC 191 NameAndType #8 #9; // #25 at 0xC1 192 Utf8 "java/lang/Object"; // #26 at 0xC6 193 } // Constant Pool 194 195 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 196 #3;// this_cpx 197 #7;// super_cpx 198 199 [0] { // Interfaces 200 } // Interfaces 201 202 [2] { // fields 203 { // Member at 0xE3 204 0x0018; // access 205 #8; // name_cpx 206 #9; // sig_cpx 207 [0] { // Attributes 208 } // Attributes 209 } // Member 210 ; 211 { // Member at 0xEB 212 0x0010; // access 213 #10; // name_cpx 214 #11; // sig_cpx 215 [0] { // Attributes 216 } // Attributes 217 } // Member 218 } // fields 219 220 [1] { // methods 221 { // Member at 0x012D 222 0x0008; // access 223 #16; // name_cpx 224 #17; // sig_cpx 225 [1] { // Attributes 226 Attr(#14, 44) { // Code at 0x0135 227 2; // max_stack 228 2; // max_locals 229 Bytes[12]{ 230 0xCB00034C2B1ACC00; 231 0x024C2BB0; 232 }; 233 [0] { // Traps 234 } // end Traps 235 [1] { // Attributes 236 Attr(#15, 14) { // LineNumberTable at 0x0153 237 [3] { // LineNumberTable 238 0 8; // at 0x015F 239 4 9; // at 0x0163 240 10 10; // at 0x0167 241 } 242 } // end LineNumberTable 243 } // Attributes 244 } // end Code 245 } // Attributes 246 } // Member 247 } // methods 248 249 [1] { // Attributes 250 Attr(#19, 2) { // SourceFile at 0x0198 251 #20; 252 } // end SourceFile 253 } // Attributes 254 } // end class defValBadMajorVersion 255 256 /////////////////////////////////////////////////////////// 257 258 // The constant pool index of a aconst_init opcode (0xCB) in the Code 259 // attribute was changed to 2. Since this index now points to a Field 260 // entry instead of a Class entry, a VerifyError exception should get thrown. 261 // 262 class defValWrongCPType { 263 0xCAFEBABE; 264 0; // minor version 265 68; // version 266 [27] { // Constant Pool 267 ; // first element is empty 268 Method #7 #21; // #1 at 0x0A 269 Field #3 #22; // #2 at 0x0F 270 class #23; // #3 at 0x14 271 int 0x01234567; // #4 at 0x17 272 Method #3 #24; // #5 at 0x1C 273 Field #3 #25; // #6 at 0x21 274 class #26; // #7 at 0x26 275 Utf8 "VT"; // #8 at 0x29 276 Utf8 "LdefValWrongCPType;"; // #9 at 0x2E 277 Utf8 "int_v"; // #10 at 0x38 278 Utf8 "I"; // #11 at 0x40 279 Utf8 "<vnew>"; // #12 at 0x44 280 Utf8 "()V"; // #13 at 0x4D 281 Utf8 "Code"; // #14 at 0x53 282 Utf8 "LineNumberTable"; // #15 at 0x5A 283 Utf8 "makeValue"; // #16 at 0x6C 284 Utf8 "(I)LdefValWrongCPType;"; // #17 at 0x78 285 Utf8 "<clinit>"; // #18 at 0x85 286 Utf8 "SourceFile"; // #19 at 0x90 287 Utf8 "defValWrongCPType.java"; // #20 at 0x9D 288 NameAndType #12 #13; // #21 at 0xAA 289 NameAndType #10 #11; // #22 at 0xAF 290 Utf8 "defValWrongCPType"; // #23 at 0xB4 291 NameAndType #16 #17; // #24 at 0xBC 292 NameAndType #8 #9; // #25 at 0xC1 293 Utf8 "java/lang/Object"; // #26 at 0xC6 294 } // Constant Pool 295 296 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 297 #3;// this_cpx 298 #7;// super_cpx 299 300 [0] { // Interfaces 301 } // Interfaces 302 303 [2] { // fields 304 { // Member at 0xE3 305 0x0018; // access 306 #8; // name_cpx 307 #9; // sig_cpx 308 [0] { // Attributes 309 } // Attributes 310 } // Member 311 ; 312 { // Member at 0xEB 313 0x0010; // access 314 #10; // name_cpx 315 #11; // sig_cpx 316 [0] { // Attributes 317 } // Attributes 318 } // Member 319 } // fields 320 321 [1] { // methods 322 { // Member at 0x012D 323 0x0008; // access 324 #16; // name_cpx 325 #17; // sig_cpx 326 [1] { // Attributes 327 Attr(#14, 44) { // Code at 0x0135 328 2; // max_stack 329 2; // max_locals 330 Bytes[12]{ 331 0xCB00024C2B1ACC00; // Changed CP index from 3 to 2 for opcode 0xCB (aconst_init) 332 0x024C2BB0; // so that the cp index no longer points to a cp Class entry. 333 }; 334 [0] { // Traps 335 } // end Traps 336 [1] { // Attributes 337 Attr(#15, 14) { // LineNumberTable at 0x0153 338 [3] { // LineNumberTable 339 0 8; // at 0x015F 340 4 9; // at 0x0163 341 10 10; // at 0x0167 342 } 343 } // end LineNumberTable 344 } // Attributes 345 } // end Code 346 } // Attributes 347 } // Member 348 } // methods 349 350 [1] { // Attributes 351 Attr(#19, 2) { // SourceFile at 0x0198 352 #20; 353 } // end SourceFile 354 } // Attributes 355 } // end class defValWrongCPType 356 357 /////////////////////////////////////////////////////////// 358 359 // The constant pool index of the withfield opcode (0xCC) in the Code 360 // attribute was changed to 0x82. Since this index is outside the range of 361 // the constant pool, a VerifyError exception should get thrown. 362 // 363 class wthFldBadCP { 364 0xCAFEBABE; 365 0; // minor version 366 68; // version 367 [20] { // Constant Pool 368 ; // first element is empty 369 Method #4 #17; // #1 at 0x0A 370 Field #3 #18; // #2 at 0x0F 371 class #12; // #3 at 0x14 372 class #19; // #4 at 0x17 373 Utf8 "int_v"; // #5 at 0x1A 374 Utf8 "I"; // #6 at 0x22 375 Utf8 "<vnew>"; // #7 at 0x26 376 Utf8 "()V"; // #8 at 0x2F 377 Utf8 "Code"; // #9 at 0x35 378 Utf8 "LineNumberTable"; // #10 at 0x3C 379 Utf8 "makewthFldBadCP"; // #11 at 0x4E 380 Utf8 "wthFldBadCP"; // #12 at 0x60 381 Utf8 "ValueTypes"; // #13 at 0x6E 382 Utf8 "(I)LwthFldBadCP;"; // #14 at 0x7B 383 Utf8 "SourceFile"; // #15 at 0x8E 384 Utf8 "wthFldBadCP.java"; // #16 at 0x9B 385 NameAndType #7 #8; // #17 at 0xAE 386 NameAndType #5 #6; // #18 at 0xB3 387 Utf8 "java/lang/Object"; // #19 at 0xB8 388 } // Constant Pool 389 390 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 391 #3;// this_cpx 392 #4;// super_cpx 393 394 [0] { // Interfaces 395 } // Interfaces 396 397 [1] { // fields 398 { // Member at 0xD5 399 0x0010; // access 400 #5; // name_cpx 401 #6; // sig_cpx 402 [0] { // Attributes 403 } // Attributes 404 } // Member 405 } // fields 406 407 [1] { // methods 408 { // Member at 0x0117 409 0x0008; // access 410 #11; // name_cpx 411 #14; // sig_cpx 412 [1] { // Attributes 413 Attr(#9, 44) { // Code at 0x011F 414 2; // max_stack 415 2; // max_locals 416 Bytes[12]{ 417 0xCB00034C2B1ACC00; // Changed CP index from 2 to 0x82 for opcode 0xCC (withfield) 418 0x824C2BB0; // so that the index is outside of the range of the constant pool. 419 }; 420 [0] { // Traps 421 } // end Traps 422 [1] { // Attributes 423 Attr(#10, 14) { // LineNumberTable at 0x013D 424 [3] { // LineNumberTable 425 0 8; // at 0x0149 426 4 9; // at 0x014D 427 10 10; // at 0x0151 428 } 429 } // end LineNumberTable 430 } // Attributes 431 } // end Code 432 } // Attributes 433 } // Member 434 } // methods 435 436 [2] { // Attributes 437 Attr(#15, 2) { // SourceFile at 0x0153 438 #16; 439 } // end SourceFile 440 ; 441 Attr(#13, 4) { // ValueTypes at 0x015B 442 0x00010003; 443 } // end ValueTypes 444 } // Attributes 445 } // end class wthFldBadCP 446 447 /////////////////////////////////////////////////////////// 448 449 // The opcode at bytecode position 5 in the Code array was changed to aload_1 450 // (0x2B). This should cause a VerifyError because now the first operand on the 451 // stack for the withfield opcode (0xCC at bytecode position 6) does not match 452 // the type (int) of the field being assigned to. 453 // 454 class wthFldBadFldVal { 455 0xCAFEBABE; 456 0; // minor version 457 68; // version 458 [20] { // Constant Pool 459 ; // first element is empty 460 Method #4 #17; // #1 at 0x0A 461 Field #3 #18; // #2 at 0x0F 462 class #12; // #3 at 0x14 463 class #19; // #4 at 0x17 464 Utf8 "int_v"; // #5 at 0x1A 465 Utf8 "I"; // #6 at 0x22 466 Utf8 "<vnew>"; // #7 at 0x26 467 Utf8 "()V"; // #8 at 0x2F 468 Utf8 "Code"; // #9 at 0x35 469 Utf8 "LineNumberTable"; // #10 at 0x3C 470 Utf8 "makewthFldBadFldVal"; // #11 at 0x4E 471 Utf8 "wthFldBadFldVal"; // #12 at 0x60 472 Utf8 "ValueTypes"; // #13 at 0x6E 473 Utf8 "(I)LwthFldBadFldVal;"; // #14 at 0x7B 474 Utf8 "SourceFile"; // #15 at 0x8E 475 Utf8 "wthFldBadFldVal.java"; // #16 at 0x9B 476 NameAndType #7 #8; // #17 at 0xAE 477 NameAndType #5 #6; // #18 at 0xB3 478 Utf8 "java/lang/Object"; // #19 at 0xB8 479 } // Constant Pool 480 481 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 482 #3;// this_cpx 483 #4;// super_cpx 484 485 [0] { // Interfaces 486 } // Interfaces 487 488 [1] { // fields 489 { // Member at 0xD5 490 0x0010; // access 491 #5; // name_cpx 492 #6; // sig_cpx 493 [0] { // Attributes 494 } // Attributes 495 } // Member 496 } // fields 497 498 [1] { // methods 499 { // Member at 0x0117 500 0x0008; // access 501 #11; // name_cpx 502 #14; // sig_cpx 503 [1] { // Attributes 504 Attr(#9, 44) { // Code at 0x011F 505 2; // max_stack 506 2; // max_locals 507 Bytes[12]{ 508 0xCB00034C2B2BCC00; // Changed opcode at bytecode 5 from iload_0 to aload_1 509 0x024C2BB0; 510 }; 511 [0] { // Traps 512 } // end Traps 513 [1] { // Attributes 514 Attr(#10, 14) { // LineNumberTable at 0x013D 515 [3] { // LineNumberTable 516 0 8; // at 0x0149 517 4 9; // at 0x014D 518 10 10; // at 0x0151 519 } 520 } // end LineNumberTable 521 } // Attributes 522 } // end Code 523 } // Attributes 524 } // Member 525 } // methods 526 527 [2] { // Attributes 528 Attr(#15, 2) { // SourceFile at 0x0153 529 #16; 530 } // end SourceFile 531 ; 532 Attr(#13, 4) { // ValueTypes at 0x015B 533 0x00010003; 534 } // end ValueTypes 535 } // Attributes 536 } // end class wthFldBadFldVal 537 538 /////////////////////////////////////////////////////////// 539 540 // The opcode at bytecode position 4 in the Code array was changed to iload_1 541 // (0x1A). This should cause a VerifyError because the second operand on the stack 542 // for the withfield opcode (0xCC at bytecode position 6) must be a reference. 543 // 544 class wthFldBadFldRef { 545 0xCAFEBABE; 546 0; // minor version 547 68; // version 548 [20] { // Constant Pool 549 ; // first element is empty 550 Method #4 #17; // #1 at 0x0A 551 Field #3 #18; // #2 at 0x0F 552 class #12; // #3 at 0x14 553 class #19; // #4 at 0x17 554 Utf8 "int_v"; // #5 at 0x1A 555 Utf8 "I"; // #6 at 0x22 556 Utf8 "<vnew>"; // #7 at 0x26 557 Utf8 "()V"; // #8 at 0x2F 558 Utf8 "Code"; // #9 at 0x35 559 Utf8 "LineNumberTable"; // #10 at 0x3C 560 Utf8 "makewthFldBadFldRef"; // #11 at 0x4E 561 Utf8 "wthFldBadFldRef"; // #12 at 0x60 562 Utf8 "ValueTypes"; // #13 at 0x6E 563 Utf8 "(I)LwthFldBadFldRef;"; // #14 at 0x7B 564 Utf8 "SourceFile"; // #15 at 0x8E 565 Utf8 "wthFldBadFldRef.java"; // #16 at 0x9B 566 NameAndType #7 #8; // #17 at 0xAE 567 NameAndType #5 #6; // #18 at 0xB3 568 Utf8 "java/lang/Object"; // #19 at 0xB8 569 } // Constant Pool 570 571 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 572 #3;// this_cpx 573 #4;// super_cpx 574 575 [0] { // Interfaces 576 } // Interfaces 577 578 [1] { // fields 579 { // Member at 0xD5 580 0x0010; // access 581 #5; // name_cpx 582 #6; // sig_cpx 583 [0] { // Attributes 584 } // Attributes 585 } // Member 586 } // fields 587 588 [1] { // methods 589 { // Member at 0x0117 590 0x0008; // access 591 #11; // name_cpx 592 #14; // sig_cpx 593 [1] { // Attributes 594 Attr(#9, 44) { // Code at 0x011F 595 2; // max_stack 596 2; // max_locals 597 Bytes[12]{ 598 0xCB00034C1A1ACC00; // Changed opcode at bytecode 4 from aload_1 to iload_0 599 0x024C2BB0; 600 }; 601 [0] { // Traps 602 } // end Traps 603 [1] { // Attributes 604 Attr(#10, 14) { // LineNumberTable at 0x013D 605 [3] { // LineNumberTable 606 0 8; // at 0x0149 607 4 9; // at 0x014D 608 10 10; // at 0x0151 609 } 610 } // end LineNumberTable 611 } // Attributes 612 } // end Code 613 } // Attributes 614 } // Member 615 } // methods 616 617 [2] { // Attributes 618 Attr(#15, 2) { // SourceFile at 0x0153 619 #16; 620 } // end SourceFile 621 ; 622 Attr(#13, 4) { // ValueTypes at 0x015B 623 0x00010003; 624 } // end ValueTypes 625 } // Attributes 626 } // end class wthFldBadFldRef 627 628 /////////////////////////////////////////////////////////// 629 630 // The class's major version was changed to 54 and the first opcode in the Code 631 // attribute was changed to a withfield (0xCC).. Since withfield opcodes are not 632 // allowed in classes with major version 54, this should cause a ClassFormatError 633 // exception to get thrown. 634 // 635 class wthFldBadMajorVersion { 636 0xCAFEBABE; 637 0; // minor version 638 54; // version 639 [27] { // Constant Pool 640 ; // first element is empty 641 Method #7 #21; // #1 at 0x0A 642 Field #3 #22; // #2 at 0x0F 643 class #23; // #3 at 0x14 644 int 0x01234567; // #4 at 0x17 645 Method #3 #24; // #5 at 0x1C 646 Field #3 #25; // #6 at 0x21 647 class #26; // #7 at 0x26 648 Utf8 "VT"; // #8 at 0x29 649 Utf8 "LwthFldBadMajorVersion;"; // #9 at 0x2E 650 Utf8 "int_v"; // #10 at 0x38 651 Utf8 "I"; // #11 at 0x40 652 Utf8 "<init>"; // #12 at 0x44 653 Utf8 "()V"; // #13 at 0x4D 654 Utf8 "Code"; // #14 at 0x53 655 Utf8 "LineNumberTable"; // #15 at 0x5A 656 Utf8 "makeValue"; // #16 at 0x6C 657 Utf8 "(I)LwthFldBadMajorVersion;"; // #17 at 0x78 658 Utf8 "<clinit>"; // #18 at 0x85 659 Utf8 "SourceFile"; // #19 at 0x90 660 Utf8 "wthFldBadMajorVersion.java"; // #20 at 0x9D 661 NameAndType #12 #13; // #21 at 0xAA 662 NameAndType #10 #11; // #22 at 0xAF 663 Utf8 "wthFldBadMajorVersion"; // #23 at 0xB4 664 NameAndType #16 #17; // #24 at 0xBC 665 NameAndType #8 #9; // #25 at 0xC1 666 Utf8 "java/lang/Object"; // #26 at 0xC6 667 } // Constant Pool 668 669 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 670 #3;// this_cpx 671 #7;// super_cpx 672 673 [0] { // Interfaces 674 } // Interfaces 675 676 [2] { // fields 677 { // Member at 0xE3 678 0x0018; // access 679 #8; // name_cpx 680 #9; // sig_cpx 681 [0] { // Attributes 682 } // Attributes 683 } // Member 684 ; 685 { // Member at 0xEB 686 0x0010; // access 687 #10; // name_cpx 688 #11; // sig_cpx 689 [0] { // Attributes 690 } // Attributes 691 } // Member 692 } // fields 693 694 [1] { // methods 695 { // Member at 0x012D 696 0x0008; // access 697 #16; // name_cpx 698 #17; // sig_cpx 699 [1] { // Attributes 700 Attr(#14, 44) { // Code at 0x0135 701 2; // max_stack 702 2; // max_locals 703 Bytes[12]{ 704 0xCC00034C2B1ACC00; // Changed the first opcode to 0xCC (withfield) in order to 705 0x024C2BB0; // test withfield opcode with an illegal major version. 706 }; 707 [0] { // Traps 708 } // end Traps 709 [1] { // Attributes 710 Attr(#15, 14) { // LineNumberTable at 0x0153 711 [3] { // LineNumberTable 712 0 8; // at 0x015F 713 4 9; // at 0x0163 714 10 10; // at 0x0167 715 } 716 } // end LineNumberTable 717 } // Attributes 718 } // end Code 719 } // Attributes 720 } // Member 721 } // methods 722 723 [1] { // Attributes 724 Attr(#19, 2) { // SourceFile at 0x0198 725 #20; 726 } // end SourceFile 727 } // Attributes 728 } // end class wthFldBadMajorVersion 729 730 /////////////////////////////////////////////////////////// 731 732 // The constant pool index of a withfield opcode (0xCC) in the Code 733 // attribute was changed to 1. Since this index now points to a Method 734 // entry instead of a Field entry, a VerifyError exception should get thrown. 735 // 736 class wthFldWrongCPType { 737 0xCAFEBABE; 738 0; // minor version 739 68; // version 740 [20] { // Constant Pool 741 ; // first element is empty 742 Method #4 #17; // #1 at 0x0A 743 Field #3 #18; // #2 at 0x0F 744 class #12; // #3 at 0x14 745 class #19; // #4 at 0x17 746 Utf8 "int_v"; // #5 at 0x1A 747 Utf8 "I"; // #6 at 0x22 748 Utf8 "<vnew>"; // #7 at 0x26 749 Utf8 "()V"; // #8 at 0x2F 750 Utf8 "Code"; // #9 at 0x35 751 Utf8 "LineNumberTable"; // #10 at 0x3C 752 Utf8 "makewthFldWrongCPType"; // #11 at 0x4E 753 Utf8 "wthFldWrongCPType"; // #12 at 0x60 754 Utf8 "ValueTypes"; // #13 at 0x6E 755 Utf8 "(I)LwthFldWrongCPType;"; // #14 at 0x7B 756 Utf8 "SourceFile"; // #15 at 0x8E 757 Utf8 "wthFldWrongCPType.java"; // #16 at 0x9B 758 NameAndType #7 #8; // #17 at 0xAE 759 NameAndType #5 #6; // #18 at 0xB3 760 Utf8 "java/lang/Object"; // #19 at 0xB8 761 } // Constant Pool 762 763 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 764 #3;// this_cpx 765 #4;// super_cpx 766 767 [0] { // Interfaces 768 } // Interfaces 769 770 [1] { // fields 771 { // Member at 0xD5 772 0x0010; // access 773 #5; // name_cpx 774 #6; // sig_cpx 775 [0] { // Attributes 776 } // Attributes 777 } // Member 778 } // fields 779 780 [1] { // methods 781 { // Member at 0x0117 782 0x0008; // access 783 #11; // name_cpx 784 #14; // sig_cpx 785 [1] { // Attributes 786 Attr(#9, 44) { // Code at 0x011F 787 2; // max_stack 788 2; // max_locals 789 Bytes[12]{ 790 0xCB00034C2B1ACC00; // Changed CP index from 2 to 1 for opcode 0xCC (withfield) 791 0x014C2BB0; // so that the cp index no longer points to a cp Field entry. 792 }; 793 [0] { // Traps 794 } // end Traps 795 [1] { // Attributes 796 Attr(#10, 14) { // LineNumberTable at 0x013D 797 [3] { // LineNumberTable 798 0 8; // at 0x0149 799 4 9; // at 0x014D 800 10 10; // at 0x0151 801 } 802 } // end LineNumberTable 803 } // Attributes 804 } // end Code 805 } // Attributes 806 } // Member 807 } // methods 808 809 [2] { // Attributes 810 Attr(#15, 2) { // SourceFile at 0x0153 811 #16; 812 } // end SourceFile 813 ; 814 Attr(#13, 4) { // ValueTypes at 0x015B 815 0x00010003; 816 } // end ValueTypes 817 } // Attributes 818 } // end class wthFldWrongCPType 819 820 /////////////////////////////////////////////////////////// 821 822 // The cp entry for the aconst_init opcode was changed to a reference that 823 // is not an inline type. 824 // This should cause a VerifyError because the cp entry for opcode aconst_init 825 // must be an inline type. 826 // 827 class defValueObj { 828 0xCAFEBABE; 829 0; // minor version 830 68; // version 831 [46] { // Constant Pool 832 ; // first element is empty 833 class #23; // #1 at 0x0A 834 Field #1 #24; // #2 at 0x0D 835 InvokeDynamic 0s #27; // #3 at 0x12 836 InvokeDynamic 0s #28; // #4 at 0x17 837 InvokeDynamic 0s #29; // #5 at 0x1C 838 class #30; // #6 at 0x21 839 Utf8 "int_v"; // #7 at 0x24 840 Utf8 "I"; // #8 at 0x2C 841 Utf8 "makedefValueObj"; // #9 at 0x30 842 Utf8 "(I)QdefValueObj;"; // #10 at 0x41 843 Utf8 "Code"; // #11 at 0x53 844 Utf8 "LineNumberTable"; // #12 at 0x5A 845 Utf8 "hashCode"; // #13 at 0x6C 846 Utf8 "()I"; // #14 at 0x77 847 Utf8 "equals"; // #15 at 0x7D 848 Utf8 "(Ljava/lang/Object;)Z"; // #16 at 0x86 849 Utf8 "toString"; // #17 at 0x9E 850 Utf8 "()Ljava/lang/String;"; // #18 at 0xA9 851 Utf8 "<vnew>"; // #19 at 0xC0 852 Utf8 "()QdefValueObj;"; // #20 at 0xC9 853 Utf8 "SourceFile"; // #21 at 0xDA 854 Utf8 "defValueObj.java"; // #22 at 0xE7 855 Utf8 "defValueObj"; // #23 at 0xF9 856 NameAndType #7 #8; // #24 at 0x0106 857 Utf8 "BootstrapMethods"; // #25 at 0x010B 858 MethodHandle 6b #31; // #26 at 0x011E 859 NameAndType #13 #32; // #27 at 0x0122 860 NameAndType #15 #33; // #28 at 0x0127 861 NameAndType #17 #34; // #29 at 0x012C 862 Utf8 "java/lang/Object"; // #30 at 0x0131 863 Method #35 #36; // #31 at 0x0144 864 Utf8 "(QdefValueObj;)I"; // #32 at 0x0149 865 Utf8 "(QdefValueObj;Ljava/lang/Object;)Z"; // #33 at 0x015B 866 Utf8 "(QdefValueObj;)Ljava/lang/String;"; // #34 at 0x017F 867 class #37; // #35 at 0x01A2 868 NameAndType #38 #42; // #36 at 0x01A5 869 Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #37 at 0x01AA 870 Utf8 "makeBootstrapMethod"; // #38 at 0x01D3 871 class #44; // #39 at 0x01E9 872 Utf8 "Lookup"; // #40 at 0x01EC 873 Utf8 "InnerClasses"; // #41 at 0x01F5 874 Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #42 at 0x0204 875 class #45; // #43 at 0x027A 876 Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #44 at 0x027D 877 Utf8 "java/lang/invoke/MethodHandles"; // #45 at 0x02A5 878 } // Constant Pool 879 880 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 881 #1;// this_cpx 882 #6;// super_cpx 883 884 [0] { // Interfaces 885 } // Interfaces 886 887 [1] { // fields 888 { // Member at 0x02D0 889 0x0010; // access 890 #7; // name_cpx 891 #8; // sig_cpx 892 [0] { // Attributes 893 } // Attributes 894 } // Member 895 } // fields 896 897 [5] { // methods 898 { // Member at 0x02DA 899 0x0008; // access 900 #9; // name_cpx 901 #10; // sig_cpx 902 [1] { // Attributes 903 Attr(#11, 45) { // Code at 0x02E2 904 2; // max_stack 905 2; // max_locals 906 Bytes[13]{ 907 0xCB00044C1A2B5FCC; // Changed aconst_init's cp index at byte 3 from 3 to 4. 908 0x00024C2BB0; 909 }; 910 [0] { // Traps 911 } // end Traps 912 [1] { // Attributes 913 Attr(#12, 14) { // LineNumberTable at 0x0301 914 [3] { // LineNumberTable 915 0 8; // at 0x030D 916 4 9; // at 0x0311 917 11 10; // at 0x0315 918 } 919 } // end LineNumberTable 920 } // Attributes 921 } // end Code 922 } // Attributes 923 } // Member 924 ; 925 { // Member at 0x0315 926 0x0011; // access 927 #13; // name_cpx 928 #14; // sig_cpx 929 [1] { // Attributes 930 Attr(#11, 31) { // Code at 0x031D 931 1; // max_stack 932 1; // max_locals 933 Bytes[7]{ 934 0x2ABA00030000AC; 935 }; 936 [0] { // Traps 937 } // end Traps 938 [1] { // Attributes 939 Attr(#12, 6) { // LineNumberTable at 0x0336 940 [1] { // LineNumberTable 941 0 1; // at 0x0342 942 } 943 } // end LineNumberTable 944 } // Attributes 945 } // end Code 946 } // Attributes 947 } // Member 948 ; 949 { // Member at 0x0342 950 0x0011; // access 951 #15; // name_cpx 952 #16; // sig_cpx 953 [1] { // Attributes 954 Attr(#11, 32) { // Code at 0x034A 955 2; // max_stack 956 2; // max_locals 957 Bytes[8]{ 958 0x2A2BBA00040000AC; 959 }; 960 [0] { // Traps 961 } // end Traps 962 [1] { // Attributes 963 Attr(#12, 6) { // LineNumberTable at 0x0364 964 [1] { // LineNumberTable 965 0 1; // at 0x0370 966 } 967 } // end LineNumberTable 968 } // Attributes 969 } // end Code 970 } // Attributes 971 } // Member 972 ; 973 { // Member at 0x0370 974 0x0011; // access 975 #17; // name_cpx 976 #18; // sig_cpx 977 [1] { // Attributes 978 Attr(#11, 31) { // Code at 0x0378 979 1; // max_stack 980 1; // max_locals 981 Bytes[7]{ 982 0x2ABA00050000B0; 983 }; 984 [0] { // Traps 985 } // end Traps 986 [1] { // Attributes 987 Attr(#12, 6) { // LineNumberTable at 0x0391 988 [1] { // LineNumberTable 989 0 1; // at 0x039D 990 } 991 } // end LineNumberTable 992 } // Attributes 993 } // end Code 994 } // Attributes 995 } // Member 996 ; 997 { // Member at 0x039D 998 0x0008; // access 999 #19; // name_cpx 1000 #20; // sig_cpx 1001 [1] { // Attributes 1002 Attr(#11, 45) { // Code at 0x03A5 1003 2; // max_stack 1004 1; // max_locals 1005 Bytes[13]{ 1006 0xCB00014B042A5FCC; 1007 0x00024B2AB0; 1008 }; 1009 [0] { // Traps 1010 } // end Traps 1011 [1] { // Attributes 1012 Attr(#12, 14) { // LineNumberTable at 0x03C4 1013 [3] { // LineNumberTable 1014 0 4; // at 0x03D0 1015 4 5; // at 0x03D4 1016 11 6; // at 0x03D8 1017 } 1018 } // end LineNumberTable 1019 } // Attributes 1020 } // end Code 1021 } // Attributes 1022 } // Member 1023 } // methods 1024 1025 [3] { // Attributes 1026 Attr(#21, 2) { // SourceFile at 0x03DA 1027 #22; 1028 } // end SourceFile 1029 ; 1030 Attr(#41, 10) { // InnerClasses at 0x03E2 1031 [1] { // InnerClasses 1032 #39 #43 #40 25; // at 0x03F2 1033 } 1034 } // end InnerClasses 1035 ; 1036 Attr(#25, 6) { // BootstrapMethods at 0x03F2 1037 [1] { // bootstrap_methods 1038 { // bootstrap_method 1039 #26; // bootstrap_method_ref 1040 [0] { // bootstrap_arguments 1041 } // bootstrap_arguments 1042 } // bootstrap_method 1043 } 1044 } // end BootstrapMethods 1045 } // Attributes 1046 } // end class defValueObj 1047 1048 /////////////////////////////////////////////////////////// 1049 1050 // This class has a withfield opcode with a non-Q type operand. 1051 class withfieldL { 1052 0xCAFEBABE; 1053 0; // minor version 1054 68; // version 1055 [28] { // Constant Pool 1056 ; // first element is empty 1057 class #2; // #1 at 0x0A 1058 Utf8 "withfieldL"; // #2 at 0x0D 1059 class #2; // #3 at 0x17 1060 Field #1 #5; // #4 at 0x1A 1061 NameAndType #6 #7; // #5 at 0x1F 1062 Utf8 "x"; // #6 at 0x24 1063 Utf8 "I"; // #7 at 0x28 1064 Field #1 #9; // #8 at 0x2C 1065 NameAndType #10 #7; // #9 at 0x31 1066 Utf8 "y"; // #10 at 0x36 1067 class #12; // #11 at 0x3A 1068 Utf8 "QwithfieldL;"; // #12 at 0x3D 1069 class #14; // #13 at 0x49 1070 Utf8 "java/lang/Object"; // #14 at 0x4C 1071 Utf8 "makePoint"; // #15 at 0x5F 1072 Utf8 "(II)QwithfieldL;"; // #16 at 0x6B 1073 Utf8 "Code"; // #17 at 0x7B 1074 Utf8 "LineNumberTable"; // #18 at 0x82 1075 Utf8 "<vnew>"; // #19 at 0x94 1076 Utf8 "()QwithfieldL;"; // #20 at 0x9D 1077 Utf8 "SourceFile"; // #21 at 0xAB 1078 Utf8 "X.java"; // #22 at 0xB8 1079 Utf8 "NestHost"; // #23 at 0xC1 1080 class #25; // #24 at 0xCC 1081 Utf8 "X"; // #25 at 0xCF 1082 Utf8 "InnerClasses"; // #26 at 0xD3 1083 Utf8 "Point"; // #27 at 0xE2 1084 } // Constant Pool 1085 1086 0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ] 1087 #1;// this_cpx 1088 #13;// super_cpx 1089 1090 [0] { // Interfaces 1091 } // Interfaces 1092 1093 [2] { // Fields 1094 { // field at 0xF4 1095 0x0010; // access 1096 #6; // name_index : x 1097 #7; // descriptor_index : I 1098 [0] { // Attributes 1099 } // Attributes 1100 } 1101 ; 1102 { // field at 0xFC 1103 0x0010; // access 1104 #10; // name_index : y 1105 #7; // descriptor_index : I 1106 [0] { // Attributes 1107 } // Attributes 1108 } 1109 } // Fields 1110 1111 [2] { // Methods 1112 { // method at 0x0106 1113 0x0008; // access 1114 #15; // name_index : makePoint 1115 #16; // descriptor_index : (II)QwithfieldL; 1116 [1] { // Attributes 1117 Attr(#17, 62) { // Code at 0x010E 1118 2; // max_stack 1119 3; // max_locals 1120 Bytes[26]{ 1121 0xCB0001C000034D1A; 1122 0x2C5FCC00044D1B2C; 1123 0x5FCC00084D2CC000; 1124 0x0BB0; 1125 } 1126 [0] { // Traps 1127 } // end Traps 1128 [1] { // Attributes 1129 Attr(#18, 18) { // LineNumberTable at 0x013A 1130 [4] { // line_number_table 1131 0 4; // at 0x0146 1132 7 5; // at 0x014A 1133 14 6; // at 0x014E 1134 21 7; // at 0x0152 1135 } 1136 } // end LineNumberTable 1137 } // Attributes 1138 } // end Code 1139 } // Attributes 1140 } 1141 ; 1142 { // method at 0x0152 1143 0x000A; // access 1144 #19; // name_index : <vnew> 1145 #20; // descriptor_index : ()QwithfieldL; 1146 [1] { // Attributes 1147 Attr(#17, 55) { // Code at 0x015A 1148 2; // max_stack 1149 1; // max_locals 1150 Bytes[23]{ 1151 0xCB00014B032A5FCC; 1152 0x0008594BB400082A; 1153 0x5FCC00044B2AB0; 1154 } 1155 [0] { // Traps 1156 } // end Traps 1157 [1] { // Attributes 1158 Attr(#18, 14) { // LineNumberTable at 0x0183 1159 [3] { // line_number_table 1160 0 9; // at 0x018F 1161 4 10; // at 0x0193 1162 21 11; // at 0x0197 1163 } 1164 } // end LineNumberTable 1165 } // Attributes 1166 } // end Code 1167 } // Attributes 1168 } 1169 } // Methods 1170 1171 [3] { // Attributes 1172 Attr(#21, 2) { // SourceFile at 0x0199 1173 #22; 1174 } // end SourceFile 1175 ; 1176 Attr(#23, 2) { // NestHost at 0x01A1 1177 #24; // X at 0x01A9 1178 } // end NestHost 1179 ; 1180 Attr(#26, 10) { // InnerClasses at 0x01A9 1181 [1] { // classes 1182 #1 #24 #27 280; // at 0x01B9 1183 } 1184 } // end InnerClasses 1185 } // Attributes 1186 } // end class withfieldL 1187 1188 /////////////////////////////////////////////////////////// 1189 1190 // Test that a VerifyError exception is thrown when trying to pass a null 1191 // when the formal parameter is an inline type. 1192 // 1193 // // Java program emulating the jcod contents. 1194 // public inline final class NoNullVT { 1195 // final int x; 1196 // final int y; 1197 // 1198 // private NoNullVT() { 1199 // x = 0; 1200 // y = 0; 1201 // } 1202 // 1203 // public int getX() { return x; } 1204 // public int getY() { return y; } 1205 // 1206 // public boolean isSameNoNullVT(NoNullVT that) { 1207 // return this.getX() == that.getX() && this.getY() == that.getY(); 1208 // } 1209 // 1210 // public boolean equals(Object o) { 1211 // if(o instanceof NoNullVT) { 1212 // return ((NoNullVT)o).x == x && ((NoNullVT)o).y == y; 1213 // } else { 1214 // return false; 1215 // } 1216 // } 1217 // 1218 // public static NoNullVT createNoNullVT(int x, int y) { 1219 // NoNullVT p = NoNullVT.default; 1220 // p = __WithField(p.x, x); 1221 // p = __WithField(p.y, y); 1222 // return p; 1223 // } 1224 // 1225 // public static void main(String[] args) { 1226 // String str = null; 1227 // NoNullVT a = createNoNullVT(3, 4); 1228 // NoNullVT b = createNoNullVT(2, 4); 1229 // boolean res = a.isSameNoNullVT(null); // Should throw VerifyError 1230 // } 1231 // } 1232 1233 class NoNullVT { 1234 0xCAFEBABE; 1235 0; // minor version 1236 68; // version 1237 [63] { // Constant Pool 1238 ; // first element is empty 1239 class #36; // #1 at 0x0A 1240 Field #1 #37; // #2 at 0x0D 1241 Field #1 #38; // #3 at 0x12 1242 Method #1 #39; // #4 at 0x17 1243 Method #1 #40; // #5 at 0x1C 1244 class #41; // #6 at 0x21 1245 Method #1 #42; // #7 at 0x24 1246 Method #1 #43; // #8 at 0x29 1247 InvokeDynamic 0s #46; // #9 at 0x2E 1248 InvokeDynamic 0s #47; // #10 at 0x33 1249 class #48; // #11 at 0x38 1250 Utf8 "x"; // #12 at 0x3B 1251 Utf8 "I"; // #13 at 0x3F 1252 Utf8 "y"; // #14 at 0x43 1253 Utf8 "getX"; // #15 at 0x47 1254 Utf8 "()I"; // #16 at 0x4E 1255 Utf8 "Code"; // #17 at 0x54 1256 Utf8 "LineNumberTable"; // #18 at 0x5B 1257 Utf8 "getY"; // #19 at 0x6D 1258 Utf8 "isSameNoNullVT"; // #20 at 0x74 1259 Utf8 "(QNoNullVT;)Z"; // #21 at 0x85 1260 Utf8 "StackMapTable"; // #22 at 0x95 1261 Utf8 "equals"; // #23 at 0xA5 1262 Utf8 "(Ljava/lang/Object;)Z"; // #24 at 0xAE 1263 Utf8 "createNoNullVT"; // #25 at 0xC6 1264 Utf8 "(II)QNoNullVT;"; // #26 at 0xD7 1265 Utf8 "main"; // #27 at 0xE8 1266 Utf8 "([Ljava/lang/String;)V"; // #28 at 0xEF 1267 Utf8 "hashCode"; // #29 at 0x0108 1268 Utf8 "toString"; // #30 at 0x0113 1269 Utf8 "()Ljava/lang/String;"; // #31 at 0x011E 1270 Utf8 "<vnew>"; // #32 at 0x0135 1271 Utf8 "()QNoNullVT;"; // #33 at 0x013E 1272 Utf8 "SourceFile"; // #34 at 0x014D 1273 Utf8 "NoNullVT.java"; // #35 at 0x015A 1274 Utf8 "NoNullVT"; // #36 at 0x016A 1275 NameAndType #12 #13; // #37 at 0x0175 1276 NameAndType #14 #13; // #38 at 0x017A 1277 NameAndType #15 #16; // #39 at 0x017F 1278 NameAndType #19 #16; // #40 at 0x0184 1279 Utf8 "QNoNullVT;"; // #41 at 0x0189 1280 NameAndType #25 #26; // #42 at 0x0196 1281 NameAndType #20 #21; // #43 at 0x019B 1282 Utf8 "BootstrapMethods"; // #44 at 0x01A0 1283 MethodHandle 6b #49; // #45 at 0x01B3 1284 NameAndType #29 #50; // #46 at 0x01B7 1285 NameAndType #30 #51; // #47 at 0x01BC 1286 Utf8 "java/lang/Object"; // #48 at 0x01C1 1287 Method #52 #53; // #49 at 0x01D4 1288 Utf8 "(QNoNullVT;)I"; // #50 at 0x01D9 1289 Utf8 "(QNoNullVT;)Ljava/lang/String;"; // #51 at 0x01E9 1290 class #54; // #52 at 0x020A 1291 NameAndType #55 #59; // #53 at 0x020D 1292 Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #54 at 0x0212 1293 Utf8 "makeBootstrapMethod"; // #55 at 0x023B 1294 class #61; // #56 at 0x0251 1295 Utf8 "Lookup"; // #57 at 0x0254 1296 Utf8 "InnerClasses"; // #58 at 0x025D 1297 Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #59 at 0x026C 1298 class #62; // #60 at 0x02E2 1299 Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #61 at 0x02E5 1300 Utf8 "java/lang/invoke/MethodHandles"; // #62 at 0x030D 1301 } // Constant Pool 1302 1303 0x0851; // access [ ACC_VALUE ACC_PRIMITIVE ACC_PUBLIC ACC_FINAL ] 1304 #1;// this_cpx 1305 #11;// super_cpx 1306 1307 [0] { // Interfaces 1308 } // Interfaces 1309 1310 [2] { // fields 1311 { // Member at 0x0338 1312 0x0010; // access 1313 #12; // name_cpx 1314 #13; // sig_cpx 1315 [0] { // Attributes 1316 } // Attributes 1317 } // Member 1318 ; 1319 { // Member at 0x0340 1320 0x0010; // access 1321 #14; // name_cpx 1322 #13; // sig_cpx 1323 [0] { // Attributes 1324 } // Attributes 1325 } // Member 1326 } // fields 1327 1328 [9] { // methods 1329 { // Member at 0x034A 1330 0x0001; // access 1331 #15; // name_cpx 1332 #16; // sig_cpx 1333 [1] { // Attributes 1334 Attr(#17, 29) { // Code at 0x0352 1335 1; // max_stack 1336 1; // max_locals 1337 Bytes[5]{ 1338 0x2AB40002AC; 1339 }; 1340 [0] { // Traps 1341 } // end Traps 1342 [1] { // Attributes 1343 Attr(#18, 6) { // LineNumberTable at 0x0369 1344 [1] { // LineNumberTable 1345 0 10; // at 0x0375 1346 } 1347 } // end LineNumberTable 1348 } // Attributes 1349 } // end Code 1350 } // Attributes 1351 } // Member 1352 ; 1353 { // Member at 0x0375 1354 0x0001; // access 1355 #19; // name_cpx 1356 #16; // sig_cpx 1357 [1] { // Attributes 1358 Attr(#17, 29) { // Code at 0x037D 1359 1; // max_stack 1360 1; // max_locals 1361 Bytes[5]{ 1362 0x2AB40003AC; 1363 }; 1364 [0] { // Traps 1365 } // end Traps 1366 [1] { // Attributes 1367 Attr(#18, 6) { // LineNumberTable at 0x0394 1368 [1] { // LineNumberTable 1369 0 11; // at 0x03A0 1370 } 1371 } // end LineNumberTable 1372 } // Attributes 1373 } // end Code 1374 } // Attributes 1375 } // Member 1376 ; 1377 { // Member at 0x03A0 1378 0x0001; // access 1379 #20; // name_cpx 1380 #21; // sig_cpx 1381 [1] { // Attributes 1382 Attr(#17, 63) { // Code at 0x03A8 1383 2; // max_stack 1384 2; // max_locals 1385 Bytes[28]{ 1386 0x2AB600042BB60004; 1387 0xA000122AB600052B; 1388 0xB60005A0000704A7; 1389 0x000403AC; 1390 }; 1391 [0] { // Traps 1392 } // end Traps 1393 [2] { // Attributes 1394 Attr(#18, 6) { // LineNumberTable at 0x03D6 1395 [1] { // LineNumberTable 1396 0 14; // at 0x03E2 1397 } 1398 } // end LineNumberTable 1399 ; 1400 Attr(#22, 5) { // StackMapTable at 0x03E2 1401 [2] { // 1402 26b; // same_frame 1403 64b, [1]z{1b}; // same_locals_1_stack_item_frame 1404 } 1405 } // end StackMapTable 1406 } // Attributes 1407 } // end Code 1408 } // Attributes 1409 } // Member 1410 ; 1411 { // Member at 0x03ED 1412 0x0001; // access 1413 #23; // name_cpx 1414 #24; // sig_cpx 1415 [1] { // Attributes 1416 Attr(#17, 87) { // Code at 0x03F5 1417 2; // max_stack 1418 2; // max_locals 1419 Bytes[43]{ 1420 0x2BC100019900252B; 1421 0xC00006B400022AB4; 1422 0x0002A000152BC000; 1423 0x06B400032AB40003; 1424 0xA0000704A7000403; 1425 0xAC03AC; 1426 }; 1427 [0] { // Traps 1428 } // end Traps 1429 [2] { // Attributes 1430 Attr(#18, 14) { // LineNumberTable at 0x0432 1431 [3] { // LineNumberTable 1432 0 18; // at 0x043E 1433 7 19; // at 0x0442 1434 41 21; // at 0x0446 1435 } 1436 } // end LineNumberTable 1437 ; 1438 Attr(#22, 6) { // StackMapTable at 0x0446 1439 [3] { // 1440 39b; // same_frame 1441 64b, [1]z{1b}; // same_locals_1_stack_item_frame 1442 0b; // same_frame 1443 } 1444 } // end StackMapTable 1445 } // Attributes 1446 } // end Code 1447 } // Attributes 1448 } // Member 1449 ; 1450 { // Member at 0x0452 1451 0x0009; // access 1452 #25; // name_cpx 1453 #26; // sig_cpx 1454 [1] { // Attributes 1455 Attr(#17, 56) { // Code at 0x045A 1456 2; // max_stack 1457 3; // max_locals 1458 Bytes[20]{ 1459 0xCB00014D1A2C5FCC; 1460 0x00024D1B2C5FCC00; 1461 0x034D2CB0; 1462 }; 1463 [0] { // Traps 1464 } // end Traps 1465 [1] { // Attributes 1466 Attr(#18, 18) { // LineNumberTable at 0x0480 1467 [4] { // LineNumberTable 1468 0 26; // at 0x048C 1469 4 27; // at 0x0490 1470 11 28; // at 0x0494 1471 18 29; // at 0x0498 1472 } 1473 } // end LineNumberTable 1474 } // Attributes 1475 } // end Code 1476 } // Attributes 1477 } // Member 1478 ; 1479 { // Member at 0x0498 1480 0x0009; // access 1481 #27; // name_cpx 1482 #28; // sig_cpx 1483 [1] { // Attributes 1484 Attr(#17, 62) { // Code at 0x04A0 1485 2; // max_stack 1486 5; // max_locals 1487 Bytes[22]{ 1488 0x014C0607B800074D; 1489 0x0507B800074E2C2B; // Change last nibble from C to B to load null 1490 0xB600083604B1; 1491 }; 1492 [0] { // Traps 1493 } // end Traps 1494 [1] { // Attributes 1495 Attr(#18, 22) { // LineNumberTable at 0x04C8 1496 [5] { // LineNumberTable 1497 0 33; // at 0x04D4 1498 2 34; // at 0x04D8 1499 8 35; // at 0x04DC 1500 14 36; // at 0x04E0 1501 21 37; // at 0x04E4 1502 } 1503 } // end LineNumberTable 1504 } // Attributes 1505 } // end Code 1506 } // Attributes 1507 } // Member 1508 ; 1509 { // Member at 0x04E4 1510 0x0011; // access 1511 #29; // name_cpx 1512 #16; // sig_cpx 1513 [1] { // Attributes 1514 Attr(#17, 31) { // Code at 0x04EC 1515 1; // max_stack 1516 1; // max_locals 1517 Bytes[7]{ 1518 0x2ABA00090000AC; 1519 }; 1520 [0] { // Traps 1521 } // end Traps 1522 [1] { // Attributes 1523 Attr(#18, 6) { // LineNumberTable at 0x0505 1524 [1] { // LineNumberTable 1525 0 1; // at 0x0511 1526 } 1527 } // end LineNumberTable 1528 } // Attributes 1529 } // end Code 1530 } // Attributes 1531 } // Member 1532 ; 1533 { // Member at 0x0511 1534 0x0011; // access 1535 #30; // name_cpx 1536 #31; // sig_cpx 1537 [1] { // Attributes 1538 Attr(#17, 31) { // Code at 0x0519 1539 1; // max_stack 1540 1; // max_locals 1541 Bytes[7]{ 1542 0x2ABA000A0000B0; 1543 }; 1544 [0] { // Traps 1545 } // end Traps 1546 [1] { // Attributes 1547 Attr(#18, 6) { // LineNumberTable at 0x0532 1548 [1] { // LineNumberTable 1549 0 1; // at 0x053E 1550 } 1551 } // end LineNumberTable 1552 } // Attributes 1553 } // end Code 1554 } // Attributes 1555 } // Member 1556 ; 1557 { // Member at 0x053E 1558 0x000A; // access 1559 #32; // name_cpx 1560 #33; // sig_cpx 1561 [1] { // Attributes 1562 Attr(#17, 56) { // Code at 0x0546 1563 2; // max_stack 1564 1; // max_locals 1565 Bytes[20]{ 1566 0xCB00014B032A5FCC; 1567 0x00024B032A5FCC00; 1568 0x034B2AB0; 1569 }; 1570 [0] { // Traps 1571 } // end Traps 1572 [1] { // Attributes 1573 Attr(#18, 18) { // LineNumberTable at 0x056C 1574 [4] { // LineNumberTable 1575 0 5; // at 0x0578 1576 4 6; // at 0x057C 1577 11 7; // at 0x0580 1578 18 8; // at 0x0584 1579 } 1580 } // end LineNumberTable 1581 } // Attributes 1582 } // end Code 1583 } // Attributes 1584 } // Member 1585 } // methods 1586 1587 [3] { // Attributes 1588 Attr(#34, 2) { // SourceFile at 0x0586 1589 #35; 1590 } // end SourceFile 1591 ; 1592 Attr(#58, 10) { // InnerClasses at 0x058E 1593 [1] { // InnerClasses 1594 #56 #60 #57 25; // at 0x059E 1595 } 1596 } // end InnerClasses 1597 ; 1598 Attr(#44, 6) { // BootstrapMethods at 0x059E 1599 [1] { // bootstrap_methods 1600 { // bootstrap_method 1601 #45; // bootstrap_method_ref 1602 [0] { // bootstrap_arguments 1603 } // bootstrap_arguments 1604 } // bootstrap_method 1605 } 1606 } // end BootstrapMethods 1607 } // Attributes 1608 } // end class NoNullVT