1 /* 2 * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 // This file contains multiple illegal value type classes that should cause 26 // ClassFormatError exceptions when attempted to be loaded. 27 // 28 // The .jcod classes 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 __ByValue 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 = __MakeDefault Value(); 40 // v = __WithField(v.int_v, x); 41 // return v; 42 // } 43 // } 44 45 46 // Test that class modifiers cannot have both ACC_VALUE and ACC_ABSTRATCT set. 47 // 48 class ValueAbstract { 49 0xCAFEBABE; 50 0; // minor version 51 55; // version 52 [27] { // Constant Pool 53 ; // first element is empty 54 Method #7 #21; // #1 at 0x0A 55 Field #3 #22; // #2 at 0x0F 56 class #23; // #3 at 0x14 57 int 0x01234567; // #4 at 0x17 58 Method #3 #24; // #5 at 0x1C 59 Field #3 #25; // #6 at 0x21 60 class #26; // #7 at 0x26 61 Utf8 "VT"; // #8 at 0x29 62 Utf8 "LValueAbstract;"; // #9 at 0x2E 63 Utf8 "int_v"; // #10 at 0x3C 64 Utf8 "I"; // #11 at 0x44 65 Utf8 "<init>"; // #12 at 0x48 66 Utf8 "()V"; // #13 at 0x51 67 Utf8 "Code"; // #14 at 0x57 68 Utf8 "LineNumberTable"; // #15 at 0x5E 69 Utf8 "makeValueAbstract"; // #16 at 0x70 70 Utf8 "(I)LValueAbstract;"; // #17 at 0x80 71 Utf8 "<clinit>"; // #18 at 0x91 72 Utf8 "SourceFile"; // #19 at 0x9C 73 Utf8 "ValueAbstract.java"; // #20 at 0xA9 74 NameAndType #12 #13; // #21 at 0xBA 75 NameAndType #10 #11; // #22 at 0xBF 76 Utf8 "ValueAbstract"; // #23 at 0xC4 77 NameAndType #16 #17; // #24 at 0xD0 78 NameAndType #8 #9; // #25 at 0xD5 79 Utf8 "java/lang/Object"; // #26 at 0xDA 80 } // Constant Pool 81 82 0x0530; // access [ ACC_VALUE ACC_ABSTRACT(bad) ACC_SUPER ACC_FINAL ] 83 #3;// this_cpx 84 #7;// super_cpx 85 86 [0] { // Interfaces 87 } // Interfaces 88 89 [2] { // fields 90 { // Member at 0xF7 91 0x0018; // access 92 #8; // name_cpx 93 #9; // sig_cpx 94 [0] { // Attributes 95 } // Attributes 96 } // Member 97 ; 98 { // Member at 0xFF 99 0x0010; // access 100 #10; // name_cpx 101 #11; // sig_cpx 102 [0] { // Attributes 103 } // Attributes 104 } // Member 105 } // fields 106 107 [1] { // methods 108 { // Member at 0x0141 109 0x0008; // access 110 #16; // name_cpx 111 #17; // sig_cpx 112 [1] { // Attributes 113 Attr(#14, 44) { // Code at 0x0149 114 2; // max_stack 115 2; // max_locals 116 Bytes[12]{ 117 0xCB00034C2B1ACC00; 118 0x024C2BB0; 119 }; 120 [0] { // Traps 121 } // end Traps 122 [1] { // Attributes 123 Attr(#15, 14) { // LineNumberTable at 0x0167 124 [3] { // LineNumberTable 125 0 8; // at 0x0173 126 4 9; // at 0x0177 127 10 10; // at 0x017B 128 } 129 } // end LineNumberTable 130 } // Attributes 131 } // end Code 132 } // Attributes 133 } // Member 134 } // methods 135 136 [1] { // Attributes 137 Attr(#19, 2) { // SourceFile at 0x01AC 138 #20; 139 } // end SourceFile 140 } // Attributes 141 } // end class ValueAbstract 142 143 ////////////////////////////////////////////////////////////////////// 144 145 // Test that class modifiers cannot have both ACC_VALUE and ACC_ENUM set. 146 // 147 class ValueEnum { 148 0xCAFEBABE; 149 0; // minor version 150 55; // version 151 [27] { // Constant Pool 152 ; // first element is empty 153 Method #7 #21; // #1 at 0x0A 154 Field #3 #22; // #2 at 0x0F 155 class #23; // #3 at 0x14 156 int 0x01234567; // #4 at 0x17 157 Method #3 #24; // #5 at 0x1C 158 Field #3 #25; // #6 at 0x21 159 class #26; // #7 at 0x26 160 Utf8 "VT"; // #8 at 0x29 161 Utf8 "LValueEnum;"; // #9 at 0x2E 162 Utf8 "int_v"; // #10 at 0x3C 163 Utf8 "I"; // #11 at 0x44 164 Utf8 "<init>"; // #12 at 0x48 165 Utf8 "()V"; // #13 at 0x51 166 Utf8 "Code"; // #14 at 0x57 167 Utf8 "LineNumberTable"; // #15 at 0x5E 168 Utf8 "makeValueEnum"; // #16 at 0x70 169 Utf8 "(I)LValueEnum;"; // #17 at 0x80 170 Utf8 "<clinit>"; // #18 at 0x91 171 Utf8 "SourceFile"; // #19 at 0x9C 172 Utf8 "ValueEnum.java"; // #20 at 0xA9 173 NameAndType #12 #13; // #21 at 0xBA 174 NameAndType #10 #11; // #22 at 0xBF 175 Utf8 "ValueEnum"; // #23 at 0xC4 176 NameAndType #16 #17; // #24 at 0xD0 177 NameAndType #8 #9; // #25 at 0xD5 178 Utf8 "java/lang/Object"; // #26 at 0xDA 179 } // Constant Pool 180 181 0x4130; // access [ ACC_VALUE ACC_ENUM(bad) ACC_SUPER ACC_FINAL ] 182 #3;// this_cpx 183 #7;// super_cpx 184 185 [0] { // Interfaces 186 } // Interfaces 187 188 [2] { // fields 189 { // Member at 0xF7 190 0x0018; // access 191 #8; // name_cpx 192 #9; // sig_cpx 193 [0] { // Attributes 194 } // Attributes 195 } // Member 196 ; 197 { // Member at 0xFF 198 0x0010; // access 199 #10; // name_cpx 200 #11; // sig_cpx 201 [0] { // Attributes 202 } // Attributes 203 } // Member 204 } // fields 205 206 [1] { // methods 207 { // Member at 0x0141 208 0x0008; // access 209 #16; // name_cpx 210 #17; // sig_cpx 211 [1] { // Attributes 212 Attr(#14, 44) { // Code at 0x0149 213 2; // max_stack 214 2; // max_locals 215 Bytes[12]{ 216 0xCB00034C2B1ACC00; 217 0x024C2BB0; 218 }; 219 [0] { // Traps 220 } // end Traps 221 [1] { // Attributes 222 Attr(#15, 14) { // LineNumberTable at 0x0167 223 [3] { // LineNumberTable 224 0 8; // at 0x0173 225 4 9; // at 0x0177 226 10 10; // at 0x017B 227 } 228 } // end LineNumberTable 229 } // Attributes 230 } // end Code 231 } // Attributes 232 } // Member 233 } // methods 234 235 [1] { // Attributes 236 Attr(#19, 2) { // SourceFile at 0x01AC 237 #20; 238 } // end SourceFile 239 } // Attributes 240 } // end class ValueEnum 241 242 ////////////////////////////////////////////////////////////////////// 243 244 // Test that value type fields must be final. 245 // 246 class ValueFieldNotFinal { 247 0xCAFEBABE; 248 0; // minor version 249 55; // version 250 [27] { // Constant Pool 251 ; // first element is empty 252 Method #7 #21; // #1 at 0x0A 253 Field #3 #22; // #2 at 0x0F 254 class #23; // #3 at 0x14 255 int 0x01234567; // #4 at 0x17 256 Method #3 #24; // #5 at 0x1C 257 Field #3 #25; // #6 at 0x21 258 class #26; // #7 at 0x26 259 Utf8 "VT"; // #8 at 0x29 260 Utf8 "LValueFieldNotFinal;"; // #9 at 0x2E 261 Utf8 "int_v"; // #10 at 0x3C 262 Utf8 "I"; // #11 at 0x44 263 Utf8 "<init>"; // #12 at 0x48 264 Utf8 "()V"; // #13 at 0x51 265 Utf8 "Code"; // #14 at 0x57 266 Utf8 "LineNumberTable"; // #15 at 0x5E 267 Utf8 "makeValueFieldNotFinal"; // #16 at 0x70 268 Utf8 "(I)LValueFieldNotFinal;"; // #17 at 0x80 269 Utf8 "<clinit>"; // #18 at 0x91 270 Utf8 "SourceFile"; // #19 at 0x9C 271 Utf8 "ValueFieldNotFinal.java"; // #20 at 0xA9 272 NameAndType #12 #13; // #21 at 0xBA 273 NameAndType #10 #11; // #22 at 0xBF 274 Utf8 "ValueFieldNotFinal"; // #23 at 0xC4 275 NameAndType #16 #17; // #24 at 0xD0 276 NameAndType #8 #9; // #25 at 0xD5 277 Utf8 "java/lang/Object"; // #26 at 0xDA 278 } // Constant Pool 279 280 0x0130; // access [ ACC_VALUE ACC_SUPER ACC_FINAL ] 281 #3;// this_cpx 282 #7;// super_cpx 283 284 [0] { // Interfaces 285 } // Interfaces 286 287 [2] { // fields 288 { // Member at 0xF7 289 0x0018; // access 290 #8; // name_cpx 291 #9; // sig_cpx 292 [0] { // Attributes 293 } // Attributes 294 } // Member 295 ; 296 { // Member at 0xFF 297 0x0000; // access [ Field not ACC_FINAL(bad) ] 298 #10; // name_cpx 299 #11; // sig_cpx 300 [0] { // Attributes 301 } // Attributes 302 } // Member 303 } // fields 304 305 [1] { // methods 306 { // Member at 0x0141 307 0x0008; // access 308 #16; // name_cpx 309 #17; // sig_cpx 310 [1] { // Attributes 311 Attr(#14, 44) { // Code at 0x0149 312 2; // max_stack 313 2; // max_locals 314 Bytes[12]{ 315 0xCB00034C2B1ACC00; 316 0x024C2BB0; 317 }; 318 [0] { // Traps 319 } // end Traps 320 [1] { // Attributes 321 Attr(#15, 14) { // LineNumberTable at 0x0167 322 [3] { // LineNumberTable 323 0 8; // at 0x0173 324 4 9; // at 0x0177 325 10 10; // at 0x017B 326 } 327 } // end LineNumberTable 328 } // Attributes 329 } // end Code 330 } // Attributes 331 } // Member 332 } // methods 333 334 [1] { // Attributes 335 Attr(#19, 2) { // SourceFile at 0x01AC 336 #20; 337 } // end SourceFile 338 } // Attributes 339 } // end class ValueFieldNotFinal 340 341 ////////////////////////////////////////////////////////////////////// 342 343 // Test that arrays cannot have ACC_FLATTENABLE set. 344 // 345 class ValueFlatArray { 346 0xCAFEBABE; 347 0; // minor version 348 55; // version 349 [31] { // Constant Pool 350 ; // first element is empty 351 Method #8 #24; // #1 at 0x0A 352 Field #4 #25; // #2 at 0x0F 353 Field #4 #26; // #3 at 0x14 354 class #27; // #4 at 0x19 355 int 0x01234567; // #5 at 0x1C 356 Method #4 #28; // #6 at 0x21 357 Field #4 #29; // #7 at 0x26 358 class #30; // #8 at 0x2B 359 Utf8 "VT"; // #9 at 0x2E 360 Utf8 "LValueFlatArray;"; // #10 at 0x33 361 Utf8 "int_v"; // #11 at 0x46 362 Utf8 "I"; // #12 at 0x4E 363 Utf8 "int_a"; // #13 at 0x52 364 Utf8 "[I"; // #14 at 0x5A 365 Utf8 "<init>"; // #15 at 0x5F 366 Utf8 "()V"; // #16 at 0x68 367 Utf8 "Code"; // #17 at 0x6E 368 Utf8 "LineNumberTable"; // #18 at 0x75 369 Utf8 "makeValueFlatArray"; // #19 at 0x87 370 Utf8 "(I)LValueFlatArray;"; // #20 at 0x9C 371 Utf8 "<clinit>"; // #21 at 0xB2 372 Utf8 "SourceFile"; // #22 at 0xBD 373 Utf8 "ValueFlatArray.java"; // #23 at 0xCA 374 NameAndType #15 #16; // #24 at 0xE0 375 NameAndType #11 #12; // #25 at 0xE5 376 NameAndType #13 #14; // #26 at 0xEA 377 Utf8 "ValueFlatArray"; // #27 at 0xEF 378 NameAndType #19 #20; // #28 at 0x0100 379 NameAndType #9 #10; // #29 at 0x0105 380 Utf8 "java/lang/Object"; // #30 at 0x010A 381 } // Constant Pool 382 383 0x0130; // access [ ACC_SUPER ACC_FINAL ] 384 #4;// this_cpx 385 #8;// super_cpx 386 387 [0] { // Interfaces 388 } // Interfaces 389 390 [3] { // fields 391 { // Member at 0x0127 392 0x0018; // access 393 #9; // name_cpx 394 #10; // sig_cpx 395 [0] { // Attributes 396 } // Attributes 397 } // Member 398 ; 399 { // Member at 0x012F 400 0x0010; // access 401 #11; // name_cpx 402 #12; // sig_cpx 403 [0] { // Attributes 404 } // Attributes 405 } // Member 406 ; 407 { // Member at 0x0137 408 0x0110; // access [ ACC_FINAL ACC_FLATTENABLE(bad) ] 409 #13; // name_cpx 410 #14; // sig_cpx 411 [0] { // Attributes 412 } // Attributes 413 } // Member 414 } // fields 415 416 [1] { // methods 417 { // Member at 0x018F 418 0x0008; // access 419 #19; // name_cpx 420 #20; // sig_cpx 421 [1] { // Attributes 422 Attr(#17, 44) { // Code at 0x0197 423 2; // max_stack 424 2; // max_locals 425 Bytes[12]{ 426 0xCB00044C2B1ACC00; 427 0x024C2BB0; 428 }; 429 [0] { // Traps 430 } // end Traps 431 [1] { // Attributes 432 Attr(#18, 14) { // LineNumberTable at 0x01B5 433 [3] { // LineNumberTable 434 0 11; // at 0x01C1 435 4 12; // at 0x01C5 436 10 13; // at 0x01C9 437 } 438 } // end LineNumberTable 439 } // Attributes 440 } // end Code 441 } // Attributes 442 } // Member 443 } // methods 444 445 [1] { // Attributes 446 Attr(#22, 2) { // SourceFile at 0x01FA 447 #23; 448 } // end SourceFile 449 } // Attributes 450 } // end class ValueFlatArray 451 452 ////////////////////////////////////////////////////////////////////// 453 454 // Test that a value type cannot have a method named <init>. 455 // 456 class ValueInitMethod { 457 0xCAFEBABE; 458 0; // minor version 459 55; // version 460 [27] { // Constant Pool 461 ; // first element is empty 462 Method #7 #21; // #1 at 0x0A 463 Field #3 #22; // #2 at 0x0F 464 class #23; // #3 at 0x14 465 int 0x01234567; // #4 at 0x17 466 Method #3 #24; // #5 at 0x1C 467 Field #3 #25; // #6 at 0x21 468 class #26; // #7 at 0x26 469 Utf8 "VT"; // #8 at 0x29 470 Utf8 "LValueInitMethod;"; // #9 at 0x2E 471 Utf8 "int_v"; // #10 at 0x42 472 Utf8 "I"; // #11 at 0x4A 473 Utf8 "<init>"; // #12 at 0x4E 474 Utf8 "()V"; // #13 at 0x57 475 Utf8 "Code"; // #14 at 0x5D 476 Utf8 "LineNumberTable"; // #15 at 0x64 477 Utf8 "makeValueInitMethod"; // #16 at 0x76 478 Utf8 "(I)LValueInitMethod;"; // #17 at 0x8C 479 Utf8 "<clinit>"; // #18 at 0xA3 480 Utf8 "SourceFile"; // #19 at 0xAE 481 Utf8 "ValueInitMethod.java"; // #20 at 0xBB 482 NameAndType #12 #13; // #21 at 0xD2 483 NameAndType #10 #11; // #22 at 0xD7 484 Utf8 "ValueInitMethod"; // #23 at 0xDC 485 NameAndType #16 #17; // #24 at 0xEE 486 NameAndType #8 #9; // #25 at 0xF3 487 Utf8 "java/lang/Object"; // #26 at 0xF8 488 } // Constant Pool 489 490 0x0130; // access [ ACC_SUPER ACC_FINAL ] 491 #3;// this_cpx 492 #7;// super_cpx 493 494 [0] { // Interfaces 495 } // Interfaces 496 497 [2] { // fields 498 { // Member at 0x0115 499 0x0018; // access 500 #8; // name_cpx 501 #9; // sig_cpx 502 [0] { // Attributes 503 } // Attributes 504 } // Member 505 ; 506 { // Member at 0x011D 507 0x0010; // access 508 #10; // name_cpx 509 #11; // sig_cpx 510 [0] { // Attributes 511 } // Attributes 512 } // Member 513 } // fields 514 515 [2] { // methods 516 { // Member at 0x0127 517 0x0000; // access 518 #12; // name_cpx (bad) <init> 519 #13; // sig_cpx 520 [1] { // Attributes 521 Attr(#14, 42) { // Code at 0x012F 522 2; // max_stack 523 1; // max_locals 524 Bytes[10]{ 525 0x2AB700012A04B500; 526 0x02B1; 527 }; 528 [0] { // Traps 529 } // end Traps 530 [1] { // Attributes 531 Attr(#15, 14) { // LineNumberTable at 0x014B 532 [3] { // LineNumberTable 533 0 4; // at 0x0157 534 4 5; // at 0x015B 535 9 6; // at 0x015F 536 } 537 } // end LineNumberTable 538 } // Attributes 539 } // end Code 540 } // Attributes 541 } // Member 542 ; 543 { // Member at 0x015F 544 0x0008; // access 545 #16; // name_cpx 546 #17; // sig_cpx 547 [1] { // Attributes 548 Attr(#14, 44) { // Code at 0x0167 549 2; // max_stack 550 2; // max_locals 551 Bytes[12]{ 552 0xCB00034C2B1ACC00; 553 0x024C2BB0; 554 }; 555 [0] { // Traps 556 } // end Traps 557 [1] { // Attributes 558 Attr(#15, 14) { // LineNumberTable at 0x0185 559 [3] { // LineNumberTable 560 0 8; // at 0x0191 561 4 9; // at 0x0195 562 10 10; // at 0x0199 563 } 564 } // end LineNumberTable 565 } // Attributes 566 } // end Code 567 } // Attributes 568 } // Member 569 } // methods 570 571 [1] { // Attributes 572 Attr(#19, 2) { // SourceFile at 0x01CA 573 #20; 574 } // end SourceFile 575 } // Attributes 576 } // end class ValueInitMethod 577 578 ////////////////////////////////////////////////////////////////////// 579 580 // Test that class modifiers cannot have both ACC_VALUE and ACC_INTERFACE set. 581 // 582 class ValueInterface { 583 0xCAFEBABE; 584 0; // minor version 585 55; // version 586 [27] { // Constant Pool 587 ; // first element is empty 588 Method #7 #21; // #1 at 0x0A 589 Field #3 #22; // #2 at 0x0F 590 class #23; // #3 at 0x14 591 int 0x01234567; // #4 at 0x17 592 Method #3 #24; // #5 at 0x1C 593 Field #3 #25; // #6 at 0x21 594 class #26; // #7 at 0x26 595 Utf8 "VT"; // #8 at 0x29 596 Utf8 "LValueInterface;"; // #9 at 0x2E 597 Utf8 "int_v"; // #10 at 0x3C 598 Utf8 "I"; // #11 at 0x44 599 Utf8 "<init>"; // #12 at 0x48 600 Utf8 "()V"; // #13 at 0x51 601 Utf8 "Code"; // #14 at 0x57 602 Utf8 "LineNumberTable"; // #15 at 0x5E 603 Utf8 "makeValueInterface"; // #16 at 0x70 604 Utf8 "(I)LValueInterface;"; // #17 at 0x80 605 Utf8 "<clinit>"; // #18 at 0x91 606 Utf8 "SourceFile"; // #19 at 0x9C 607 Utf8 "ValueInterface.java"; // #20 at 0xA9 608 NameAndType #12 #13; // #21 at 0xBA 609 NameAndType #10 #11; // #22 at 0xBF 610 Utf8 "ValueInterface"; // #23 at 0xC4 611 NameAndType #16 #17; // #24 at 0xD0 612 NameAndType #8 #9; // #25 at 0xD5 613 Utf8 "java/lang/Object"; // #26 at 0xDA 614 } // Constant Pool 615 616 0x0330; // access [ ACC_VALUE ACC_INTERFACE(bad) ACC_SUPER ACC_FINAL ] 617 #3;// this_cpx 618 #7;// super_cpx 619 620 [0] { // Interfaces 621 } // Interfaces 622 623 [2] { // fields 624 { // Member at 0xF7 625 0x0018; // access 626 #8; // name_cpx 627 #9; // sig_cpx 628 [0] { // Attributes 629 } // Attributes 630 } // Member 631 ; 632 { // Member at 0xFF 633 0x0010; // access 634 #10; // name_cpx 635 #11; // sig_cpx 636 [0] { // Attributes 637 } // Attributes 638 } // Member 639 } // fields 640 641 [1] { // methods 642 { // Member at 0x0141 643 0x0008; // access 644 #16; // name_cpx 645 #17; // sig_cpx 646 [1] { // Attributes 647 Attr(#14, 44) { // Code at 0x0149 648 2; // max_stack 649 2; // max_locals 650 Bytes[12]{ 651 0xCB00034C2B1ACC00; 652 0x024C2BB0; 653 }; 654 [0] { // Traps 655 } // end Traps 656 [1] { // Attributes 657 Attr(#15, 14) { // LineNumberTable at 0x0167 658 [3] { // LineNumberTable 659 0 8; // at 0x0173 660 4 9; // at 0x0177 661 10 10; // at 0x017B 662 } 663 } // end LineNumberTable 664 } // Attributes 665 } // end Code 666 } // Attributes 667 } // Member 668 } // methods 669 670 [1] { // Attributes 671 Attr(#19, 2) { // SourceFile at 0x01AC 672 #20; 673 } // end SourceFile 674 } // Attributes 675 } // end class ValueInterface 676 677 ////////////////////////////////////////////////////////////////////// 678 679 // Test that value type instance methods cannot be synchronized. 680 // 681 class ValueMethodSynch { 682 0xCAFEBABE; 683 0; // minor version 684 55; // version 685 [28] { // Constant Pool 686 ; // first element is empty 687 Method #7 #22; // #1 at 0x0A 688 Field #3 #23; // #2 at 0x0F 689 class #24; // #3 at 0x14 690 int 0x01234567; // #4 at 0x17 691 Method #3 #25; // #5 at 0x1C 692 Field #3 #26; // #6 at 0x21 693 class #27; // #7 at 0x26 694 Utf8 "VT"; // #8 at 0x29 695 Utf8 "LValueMethodSynch;"; // #9 at 0x2E 696 Utf8 "int_v"; // #10 at 0x43 697 Utf8 "I"; // #11 at 0x4B 698 Utf8 "<init>"; // #12 at 0x4F 699 Utf8 "()V"; // #13 at 0x58 700 Utf8 "Code"; // #14 at 0x5E 701 Utf8 "LineNumberTable"; // #15 at 0x65 702 Utf8 "makeValueMethodSynch"; // #16 at 0x77 703 Utf8 "(I)LValueMethodSynch;"; // #17 at 0x8E 704 Utf8 "instanceMethod"; // #18 at 0xA6 705 Utf8 "<clinit>"; // #19 at 0xB7 706 Utf8 "SourceFile"; // #20 at 0xC2 707 Utf8 "ValueMethodSynch.java"; // #21 at 0xCF 708 NameAndType #12 #13; // #22 at 0xE7 709 NameAndType #10 #11; // #23 at 0xEC 710 Utf8 "ValueMethodSynch"; // #24 at 0xF1 711 NameAndType #16 #17; // #25 at 0x0104 712 NameAndType #8 #9; // #26 at 0x0109 713 Utf8 "java/lang/Object"; // #27 at 0x010E 714 } // Constant Pool 715 716 0x0130; // access [ ACC_VALUE ACC_SUPER ACC_FINAL ] 717 #3;// this_cpx 718 #7;// super_cpx 719 720 [0] { // Interfaces 721 } // Interfaces 722 723 [2] { // fields 724 { // Member at 0x012B 725 0x0018; // access 726 #8; // name_cpx 727 #9; // sig_cpx 728 [0] { // Attributes 729 } // Attributes 730 } // Member 731 ; 732 { // Member at 0x0133 733 0x0010; // access 734 #10; // name_cpx 735 #11; // sig_cpx 736 [0] { // Attributes 737 } // Attributes 738 } // Member 739 } // fields 740 741 [2] { // methods 742 { // Member at 0x0175 743 0x0008; // access 744 #16; // name_cpx 745 #17; // sig_cpx 746 [1] { // Attributes 747 Attr(#14, 44) { // Code at 0x017D 748 2; // max_stack 749 2; // max_locals 750 Bytes[12]{ 751 0xCB00034C2B1ACC00; 752 0x024C2BB0; 753 }; 754 [0] { // Traps 755 } // end Traps 756 [1] { // Attributes 757 Attr(#15, 14) { // LineNumberTable at 0x019B 758 [3] { // LineNumberTable 759 0 8; // at 0x01A7 760 4 9; // at 0x01AB 761 10 10; // at 0x01AF 762 } 763 } // end LineNumberTable 764 } // Attributes 765 } // end Code 766 } // Attributes 767 } // Member 768 ; 769 { // Member at 0x01AF 770 0x0020; // access [ ACC_SYNCHRONIZED(bad) ] 771 #18; // name_cpx 772 #13; // sig_cpx 773 [1] { // Attributes 774 Attr(#14, 25) { // Code at 0x01B7 775 0; // max_stack 776 1; // max_locals 777 Bytes[1]{ 778 0xB1; 779 }; 780 [0] { // Traps 781 } // end Traps 782 [1] { // Attributes 783 Attr(#15, 6) { // LineNumberTable at 0x01CA 784 [1] { // LineNumberTable 785 0 12; // at 0x01D6 786 } 787 } // end LineNumberTable 788 } // Attributes 789 } // end Code 790 } // Attributes 791 } // Member 792 } // methods 793 794 [1] { // Attributes 795 Attr(#20, 2) { // SourceFile at 0x0207 796 #21; 797 } // end SourceFile 798 } // Attributes 799 } // end class ValueMethodSynch 800 801 ////////////////////////////////////////////////////////////////////// 802 803 // Test that a value type's super class must be java.lang.Object. 804 // 805 class ValueSuperClass { 806 0xCAFEBABE; 807 0; // minor version 808 55; // version 809 [26] { // Constant Pool 810 ; // first element is empty 811 int 0x01234567; // #1 at 0x0A 812 Field #7 #10; // #2 at 0x0F 813 Field #7 #17; // #3 at 0x14 814 Method #7 #16; // #4 at 0x19 815 Method #11 #14; // #5 at 0x1E 816 Utf8 "makeValueSuperClass"; // #6 at 0x23 817 class #9; // #7 at 0x39 818 Utf8 "int_v"; // #8 at 0x3C 819 Utf8 "ValueSuperClass"; // #9 at 0x44 820 NameAndType #21 #23; // #10 at 0x56 821 class #12; // #11 at 0x5B 822 Utf8 "java/lang/Throwable"; // #12 at 0x5E 823 Utf8 "(I)LValueSuperClass;"; // #13 at 0x74 824 NameAndType #24 #18; // #14 at 0x8B 825 Utf8 "SourceFile"; // #15 at 0x90 826 NameAndType #6 #13; // #16 at 0x9D 827 NameAndType #8 #20; // #17 at 0xA2 828 Utf8 "()V"; // #18 at 0xA7 829 Utf8 "ValueSuperClass.jasm"; // #19 at 0xAD 830 Utf8 "I"; // #20 at 0xC4 831 Utf8 "VT"; // #21 at 0xC8 832 Utf8 "Code"; // #22 at 0xCD 833 Utf8 "LValueSuperClass;"; // #23 at 0xD4 834 Utf8 "<init>"; // #24 at 0xE8 835 Utf8 "<clinit>"; // #25 at 0xF1 836 } // Constant Pool 837 838 0x0130; // access [ ACC_VALUE ACC_SUPER ACC_FINAL ] 839 #7;// this_cpx 840 #11;// super_cpx (bad) points to java/lang/Throwable 841 842 [0] { // Interfaces 843 } // Interfaces 844 845 [2] { // fields 846 { // Member at 0x0106 847 0x0018; // access 848 #21; // name_cpx 849 #23; // sig_cpx 850 [0] { // Attributes 851 } // Attributes 852 } // Member 853 ; 854 { // Member at 0x010E 855 0x0010; // access 856 #8; // name_cpx 857 #20; // sig_cpx 858 [0] { // Attributes 859 } // Attributes 860 } // Member 861 } // fields 862 863 [1] { // methods 864 { // Member at 0x013C 865 0x0008; // access 866 #6; // name_cpx 867 #13; // sig_cpx 868 [1] { // Attributes 869 Attr(#22, 20) { // Code at 0x0144 870 3; // max_stack 871 3; // max_locals 872 Bytes[8]{ 873 0x014C2B1A014C2BB0; 874 }; 875 [0] { // Traps 876 } // end Traps 877 [0] { // Attributes 878 } // Attributes 879 } // end Code 880 } // Attributes 881 } // Member 882 } // methods 883 884 [1] { // Attributes 885 Attr(#15, 2) { // SourceFile at 0x0183 886 #19; 887 } // end SourceFile 888 } // Attributes 889 } // end class ValueSuperClass 890 891 ////////////////////////////////////////////////////////////////////// 892 893 // Value types Circ and Circ2 have fields of each other's type. This should 894 // cause a ClassCircularityError exception when one of them is being loaded. 895 // 896 // The value types are based on these two Java classes: 897 // 898 // final __ByValue class Circ { 899 // static final Circ VT = makeCirc(0x01234567); 900 // final int int_v; 901 // __Flattenable final Circ2 v2; 902 // Circ() { 903 // int_v = 1; 904 // v2 = __MakeDefault Circ2(); 905 // } 906 // static Circ makeCirc(int x) { 907 // Circ v = __MakeDefault Circ(); 908 // v = __WithField(v.int_v, x); 909 // return v; 910 // } 911 //---------------------------------------------------------------- 912 // final __ByValue class Circ2 { 913 // static final Circ2 VT = makeCirc2('\u0123'); 914 // final char char_v; 915 // __Flattenable final Circ vv; 916 // Circ2() { 917 // char_v = 'z'; 918 // vv = __MakeDefault Circ(); 919 // } 920 // static Circ2 makeCirc2(char c) { 921 // Circ2 v = __MakeDefault Circ2(); 922 // v = __WithField(v.char_v, c); 923 // return v; 924 // } 925 // } 926 927 class Circ { 928 0xCAFEBABE; 929 0; // minor version 930 55; // version 931 [33] { // Constant Pool 932 ; // first element is empty 933 Method #9 #25; // #1 at 0x0A 934 Field #5 #26; // #2 at 0x0F 935 class #27; // #3 at 0x14 936 Field #5 #28; // #4 at 0x17 937 class #29; // #5 at 0x1C 938 int 0x01234567; // #6 at 0x1F 939 Method #5 #30; // #7 at 0x24 940 Field #5 #31; // #8 at 0x29 941 class #32; // #9 at 0x2E 942 Utf8 "VT"; // #10 at 0x31 943 Utf8 "LCirc;"; // #11 at 0x36 944 Utf8 "int_v"; // #12 at 0x40 945 Utf8 "I"; // #13 at 0x48 946 Utf8 "v2"; // #14 at 0x4C 947 Utf8 "LCirc2;"; // #15 at 0x51 948 Utf8 "<init>"; // #16 at 0x5C 949 Utf8 "()V"; // #17 at 0x65 950 Utf8 "Code"; // #18 at 0x6B 951 Utf8 "LineNumberTable"; // #19 at 0x72 952 Utf8 "makeCirc"; // #20 at 0x84 953 Utf8 "(I)LCirc;"; // #21 at 0x90 954 Utf8 "<clinit>"; // #22 at 0x9D 955 Utf8 "SourceFile"; // #23 at 0xA8 956 Utf8 "Circ.java"; // #24 at 0xB5 957 NameAndType #16 #17; // #25 at 0xC2 958 NameAndType #12 #13; // #26 at 0xC7 959 Utf8 "Circ2"; // #27 at 0xCC 960 NameAndType #14 #15; // #28 at 0xD5 961 Utf8 "Circ"; // #29 at 0xDA 962 NameAndType #20 #21; // #30 at 0xE2 963 NameAndType #10 #11; // #31 at 0xE7 964 Utf8 "java/lang/Object"; // #32 at 0xEC 965 } // Constant Pool 966 967 0x0130; // access [ ACC_SUPER ACC_FINAL ] 968 #5;// this_cpx 969 #9;// super_cpx 970 971 [0] { // Interfaces 972 } // Interfaces 973 974 [3] { // fields 975 { // Member at 0x0109 976 0x0018; // access 977 #10; // name_cpx 978 #11; // sig_cpx 979 [0] { // Attributes 980 } // Attributes 981 } // Member 982 ; 983 { // Member at 0x0111 984 0x0010; // access 985 #12; // name_cpx 986 #13; // sig_cpx 987 [0] { // Attributes 988 } // Attributes 989 } // Member 990 ; 991 { // Member at 0x0119 992 0x0110; // access 993 #14; // name_cpx 994 #15; // sig_cpx 995 [0] { // Attributes 996 } // Attributes 997 } // Member 998 } // fields 999 1000 [1] { // methods 1001 { // Member at 0x0166 1002 0x0008; // access 1003 #20; // name_cpx 1004 #21; // sig_cpx 1005 [1] { // Attributes 1006 Attr(#18, 44) { // Code at 0x016E 1007 2; // max_stack 1008 2; // max_locals 1009 Bytes[12]{ 1010 0xCB00054C2B1ACC00; 1011 0x024C2BB0; 1012 }; 1013 [0] { // Traps 1014 } // end Traps 1015 [1] { // Attributes 1016 Attr(#19, 14) { // LineNumberTable at 0x018C 1017 [3] { // LineNumberTable 1018 0 10; // at 0x0198 1019 4 11; // at 0x019C 1020 10 12; // at 0x01A0 1021 } 1022 } // end LineNumberTable 1023 } // Attributes 1024 } // end Code 1025 } // Attributes 1026 } // Member 1027 } // methods 1028 1029 [1] { // Attributes 1030 Attr(#23, 2) { // SourceFile at 0x01D1 1031 #24; 1032 } // end SourceFile 1033 } // Attributes 1034 } // end class Circ 1035 1036 1037 class Circ2 { 1038 0xCAFEBABE; 1039 0; // minor version 1040 55; // version 1041 [32] { // Constant Pool 1042 ; // first element is empty 1043 Method #8 #24; // #1 at 0x0A 1044 Field #5 #25; // #2 at 0x0F 1045 class #26; // #3 at 0x14 1046 Field #5 #27; // #4 at 0x17 1047 class #28; // #5 at 0x1C 1048 Method #5 #29; // #6 at 0x1F 1049 Field #5 #30; // #7 at 0x24 1050 class #31; // #8 at 0x29 1051 Utf8 "VT"; // #9 at 0x2C 1052 Utf8 "LCirc2;"; // #10 at 0x31 1053 Utf8 "char_v"; // #11 at 0x3C 1054 Utf8 "C"; // #12 at 0x45 1055 Utf8 "vv"; // #13 at 0x49 1056 Utf8 "LCirc;"; // #14 at 0x4E 1057 Utf8 "<init>"; // #15 at 0x58 1058 Utf8 "()V"; // #16 at 0x61 1059 Utf8 "Code"; // #17 at 0x67 1060 Utf8 "LineNumberTable"; // #18 at 0x6E 1061 Utf8 "makeCirc2"; // #19 at 0x80 1062 Utf8 "(C)LCirc2;"; // #20 at 0x8D 1063 Utf8 "<clinit>"; // #21 at 0x9B 1064 Utf8 "SourceFile"; // #22 at 0xA6 1065 Utf8 "Circ2.java"; // #23 at 0xB3 1066 NameAndType #15 #16; // #24 at 0xC1 1067 NameAndType #11 #12; // #25 at 0xC6 1068 Utf8 "Circ"; // #26 at 0xCB 1069 NameAndType #13 #14; // #27 at 0xD3 1070 Utf8 "Circ2"; // #28 at 0xD8 1071 NameAndType #19 #20; // #29 at 0xE1 1072 NameAndType #9 #10; // #30 at 0xE6 1073 Utf8 "java/lang/Object"; // #31 at 0xEB 1074 } // Constant Pool 1075 1076 0x0130; // access [ ACC_SUPER ACC_FINAL ] 1077 #5;// this_cpx 1078 #8;// super_cpx 1079 1080 [0] { // Interfaces 1081 } // Interfaces 1082 1083 [3] { // fields 1084 { // Member at 0x0108 1085 0x0018; // access 1086 #9; // name_cpx 1087 #10; // sig_cpx 1088 [0] { // Attributes 1089 } // Attributes 1090 } // Member 1091 ; 1092 { // Member at 0x0110 1093 0x0010; // access 1094 #11; // name_cpx 1095 #12; // sig_cpx 1096 [0] { // Attributes 1097 } // Attributes 1098 } // Member 1099 ; 1100 { // Member at 0x0118 1101 0x0110; // access 1102 #13; // name_cpx 1103 #14; // sig_cpx 1104 [0] { // Attributes 1105 } // Attributes 1106 } // Member 1107 } // fields 1108 1109 [1] { // methods 1110 { // Member at 0x0166 1111 0x0008; // access 1112 #19; // name_cpx 1113 #20; // sig_cpx 1114 [1] { // Attributes 1115 Attr(#17, 44) { // Code at 0x016E 1116 2; // max_stack 1117 2; // max_locals 1118 Bytes[12]{ 1119 0xCB00054C2B1ACC00; 1120 0x024C2BB0; 1121 }; 1122 [0] { // Traps 1123 } // end Traps 1124 [1] { // Attributes 1125 Attr(#18, 14) { // LineNumberTable at 0x018C 1126 [3] { // LineNumberTable 1127 0 10; // at 0x0198 1128 4 11; // at 0x019C 1129 10 12; // at 0x01A0 1130 } 1131 } // end LineNumberTable 1132 } // Attributes 1133 } // end Code 1134 } // Attributes 1135 } // Member 1136 } // methods 1137 1138 [1] { // Attributes 1139 Attr(#22, 2) { // SourceFile at 0x01D2 1140 #23; 1141 } // end SourceFile 1142 } // Attributes 1143 } // end class Circ2 1144 1145 ////////////////////////////////////////////////////////////////////// 1146 1147 // Value types CircStaticA and CircStaticB have static fields of each other's 1148 // type. This should cause a ClassCircularityError exception when one of them 1149 // is being loaded. 1150 // 1151 // The value types are based on these two Java classes: 1152 // 1153 // final __ByValue class CircStaticA { 1154 // static final CircStaticA VT = makeCircStaticA(0x01234567); 1155 // final int int_v; 1156 // __Flattenable static final CircStaticB v2 = __MakeDefault CircStaticB(); 1157 // CircStaticA() { 1158 // int_v = 1; 1159 // } 1160 // static CircStaticA makeCircStaticA(int x) { 1161 // CircStaticA v = __MakeDefault CircStaticA(); 1162 // v = __WithField(v.int_v, x); 1163 // return v; 1164 // } 1165 // } 1166 //---------------------------------------------------------------- 1167 // final __ByValue class CircStaticB { 1168 // static final CircStaticB VT = makeCircStaticB(0x01234567); 1169 // final int int_v; 1170 // __Flattenable static final CircStaticA v2 = __MakeDefault CircStaticA(); 1171 // CircStaticB() { 1172 // int_v = 1; 1173 // } 1174 // static CircStaticB makeCircStaticB(int x) { 1175 // CircStaticB v = __MakeDefault CircStaticB(); 1176 // v = __WithField(v.int_v, x); 1177 // return v; 1178 // } 1179 // } 1180 1181 class CircStaticA { 1182 0xCAFEBABE; 1183 0; // minor version 1184 55; // version 1185 [33] { // Constant Pool 1186 ; // first element is empty 1187 Method #9 #25; // #1 at 0x0A 1188 Field #3 #26; // #2 at 0x0F 1189 class #27; // #3 at 0x14 1190 int 0x01234567; // #4 at 0x17 1191 Method #3 #28; // #5 at 0x1C 1192 Field #3 #29; // #6 at 0x21 1193 class #30; // #7 at 0x26 1194 Field #3 #31; // #8 at 0x29 1195 class #32; // #9 at 0x2E 1196 Utf8 "VT"; // #10 at 0x31 1197 Utf8 "LCircStaticA;"; // #11 at 0x36 1198 Utf8 "int_v"; // #12 at 0x46 1199 Utf8 "I"; // #13 at 0x4E 1200 Utf8 "v2"; // #14 at 0x52 1201 Utf8 "LCircStaticB;"; // #15 at 0x57 1202 Utf8 "<init>"; // #16 at 0x67 1203 Utf8 "()V"; // #17 at 0x70 1204 Utf8 "Code"; // #18 at 0x76 1205 Utf8 "LineNumberTable"; // #19 at 0x7D 1206 Utf8 "makeCircStaticA"; // #20 at 0x8F 1207 Utf8 "(I)LCircStaticA;"; // #21 at 0xA1 1208 Utf8 "<clinit>"; // #22 at 0xB4 1209 Utf8 "SourceFile"; // #23 at 0xBF 1210 Utf8 "CircStaticA.java"; // #24 at 0xCC 1211 NameAndType #16 #17; // #25 at 0xDF 1212 NameAndType #12 #13; // #26 at 0xE4 1213 Utf8 "CircStaticA"; // #27 at 0xE9 1214 NameAndType #20 #21; // #28 at 0xF7 1215 NameAndType #10 #11; // #29 at 0xFC 1216 Utf8 "CircStaticB"; // #30 at 0x0101 1217 NameAndType #14 #15; // #31 at 0x010F 1218 Utf8 "java/lang/Object"; // #32 at 0x0114 1219 } // Constant Pool 1220 1221 0x0130; // access [ ACC_SUPER ACC_FINAL ] 1222 #3;// this_cpx 1223 #9;// super_cpx 1224 1225 [0] { // Interfaces 1226 } // Interfaces 1227 1228 [3] { // fields 1229 { // Member at 0x0131 1230 0x0018; // access 1231 #10; // name_cpx 1232 #11; // sig_cpx 1233 [0] { // Attributes 1234 } // Attributes 1235 } // Member 1236 ; 1237 { // Member at 0x0139 1238 0x0010; // access 1239 #12; // name_cpx 1240 #13; // sig_cpx 1241 [0] { // Attributes 1242 } // Attributes 1243 } // Member 1244 ; 1245 { // Member at 0x0141 1246 0x0118; // access 1247 #14; // name_cpx 1248 #15; // sig_cpx 1249 [0] { // Attributes 1250 } // Attributes 1251 } // Member 1252 } // fields 1253 1254 [1] { // methods 1255 { // Member at 0x0183 1256 0x0008; // access 1257 #20; // name_cpx 1258 #21; // sig_cpx 1259 [1] { // Attributes 1260 Attr(#18, 44) { // Code at 0x018B 1261 2; // max_stack 1262 2; // max_locals 1263 Bytes[12]{ 1264 0xCB00034C2B1ACC00; 1265 0x024C2BB0; 1266 }; 1267 [0] { // Traps 1268 } // end Traps 1269 [1] { // Attributes 1270 Attr(#19, 14) { // LineNumberTable at 0x01A9 1271 [3] { // LineNumberTable 1272 0 10; // at 0x01B5 1273 4 11; // at 0x01B9 1274 10 12; // at 0x01BD 1275 } 1276 } // end LineNumberTable 1277 } // Attributes 1278 } // end Code 1279 } // Attributes 1280 } // Member 1281 } // methods 1282 1283 [1] { // Attributes 1284 Attr(#23, 2) { // SourceFile at 0x01F8 1285 #24; 1286 } // end SourceFile 1287 } // Attributes 1288 } // end class CircStaticA 1289 1290 class CircStaticB { 1291 0xCAFEBABE; 1292 0; // minor version 1293 55; // version 1294 [33] { // Constant Pool 1295 ; // first element is empty 1296 Method #9 #25; // #1 at 0x0A 1297 Field #3 #26; // #2 at 0x0F 1298 class #27; // #3 at 0x14 1299 int 0x01234567; // #4 at 0x17 1300 Method #3 #28; // #5 at 0x1C 1301 Field #3 #29; // #6 at 0x21 1302 class #30; // #7 at 0x26 1303 Field #3 #31; // #8 at 0x29 1304 class #32; // #9 at 0x2E 1305 Utf8 "VT"; // #10 at 0x31 1306 Utf8 "LCircStaticB;"; // #11 at 0x36 1307 Utf8 "int_v"; // #12 at 0x46 1308 Utf8 "I"; // #13 at 0x4E 1309 Utf8 "v2"; // #14 at 0x52 1310 Utf8 "LCircStaticA;"; // #15 at 0x57 1311 Utf8 "<init>"; // #16 at 0x67 1312 Utf8 "()V"; // #17 at 0x70 1313 Utf8 "Code"; // #18 at 0x76 1314 Utf8 "LineNumberTable"; // #19 at 0x7D 1315 Utf8 "makeCircStaticB"; // #20 at 0x8F 1316 Utf8 "(I)LCircStaticB;"; // #21 at 0xA1 1317 Utf8 "<clinit>"; // #22 at 0xB4 1318 Utf8 "SourceFile"; // #23 at 0xBF 1319 Utf8 "CircStaticB.java"; // #24 at 0xCC 1320 NameAndType #16 #17; // #25 at 0xDF 1321 NameAndType #12 #13; // #26 at 0xE4 1322 Utf8 "CircStaticB"; // #27 at 0xE9 1323 NameAndType #20 #21; // #28 at 0xF7 1324 NameAndType #10 #11; // #29 at 0xFC 1325 Utf8 "CircStaticA"; // #30 at 0x0101 1326 NameAndType #14 #15; // #31 at 0x010F 1327 Utf8 "java/lang/Object"; // #32 at 0x0114 1328 } // Constant Pool 1329 1330 0x0130; // access [ ACC_SUPER ACC_FINAL ] 1331 #3;// this_cpx 1332 #9;// super_cpx 1333 1334 [0] { // Interfaces 1335 } // Interfaces 1336 1337 [3] { // fields 1338 { // Member at 0x0131 1339 0x0018; // access 1340 #10; // name_cpx 1341 #11; // sig_cpx 1342 [0] { // Attributes 1343 } // Attributes 1344 } // Member 1345 ; 1346 { // Member at 0x0139 1347 0x0010; // access 1348 #12; // name_cpx 1349 #13; // sig_cpx 1350 [0] { // Attributes 1351 } // Attributes 1352 } // Member 1353 ; 1354 { // Member at 0x0141 1355 0x0118; // access 1356 #14; // name_cpx 1357 #15; // sig_cpx 1358 [0] { // Attributes 1359 } // Attributes 1360 } // Member 1361 } // fields 1362 1363 [1] { // methods 1364 { // Member at 0x0183 1365 0x0008; // access 1366 #20; // name_cpx 1367 #21; // sig_cpx 1368 [1] { // Attributes 1369 Attr(#18, 44) { // Code at 0x018B 1370 2; // max_stack 1371 2; // max_locals 1372 Bytes[12]{ 1373 0xCB00034C2B1ACC00; 1374 0x024C2BB0; 1375 }; 1376 [0] { // Traps 1377 } // end Traps 1378 [1] { // Attributes 1379 Attr(#19, 14) { // LineNumberTable at 0x01A9 1380 [3] { // LineNumberTable 1381 0 9; // at 0x01B5 1382 4 10; // at 0x01B9 1383 10 11; // at 0x01BD 1384 } 1385 } // end LineNumberTable 1386 } // Attributes 1387 } // end Code 1388 } // Attributes 1389 } // Member 1390 } // methods 1391 1392 [1] { // Attributes 1393 Attr(#23, 2) { // SourceFile at 0x01F8 1394 #24; 1395 } // end SourceFile 1396 } // Attributes 1397 } // end class CircStaticB 1398 1399 1400 // Test that a value type cannot be Cloneable. 1401 // 1402 // final __ByValue class ValueCloneable implements Cloneable { 1403 // final int field; 1404 // private ValueCloneable() { field = 0; } 1405 //} 1406 1407 class ValueCloneable { 1408 0xCAFEBABE; 1409 0; // minor version 1410 55; // version 1411 [] { // Constant Pool 1412 ; // first element is empty 1413 Method #4 #14; // #1 1414 Field #3 #15; // #2 1415 class #16; // #3 1416 class #17; // #4 1417 class #18; // #5 1418 Utf8 "field"; // #6 1419 Utf8 "I"; // #7 1420 Utf8 "<init>"; // #8 1421 Utf8 "()V"; // #9 1422 Utf8 "Code"; // #10 1423 Utf8 "LineNumberTable"; // #11 1424 Utf8 "SourceFile"; // #12 1425 Utf8 "ValueCloneable.java"; // #13 1426 NameAndType #8 #9; // #14 1427 NameAndType #6 #7; // #15 1428 Utf8 "ValueCloneable"; // #16 1429 Utf8 "java/lang/Object"; // #17 1430 Utf8 "java/lang/Cloneable"; // #18 1431 } // Constant Pool 1432 1433 0x0130; // access 1434 #3;// this_cpx 1435 #4;// super_cpx 1436 1437 [] { // Interfaces 1438 #5; 1439 } // Interfaces 1440 1441 [] { // fields 1442 { // Member 1443 0x0010; // access 1444 #6; // name_cpx 1445 #7; // sig_cpx 1446 [] { // Attributes 1447 } // Attributes 1448 } // Member 1449 } // fields 1450 1451 [] { // methods 1452 { // Member 1453 0x0002; // access 1454 #8; // name_cpx 1455 #9; // sig_cpx 1456 [] { // Attributes 1457 Attr(#10) { // Code 1458 2; // max_stack 1459 1; // max_locals 1460 Bytes[]{ 1461 0x2AB700012A03B500; 1462 0x02B1; 1463 } 1464 [] { // Traps 1465 } // end Traps 1466 [] { // Attributes 1467 Attr(#11) { // LineNumberTable 1468 [] { // LineNumberTable 1469 0 4; 1470 } 1471 } // end LineNumberTable 1472 } // Attributes 1473 } // end Code 1474 } // Attributes 1475 } // Member 1476 } // methods 1477 1478 [] { // Attributes 1479 Attr(#12) { // SourceFile 1480 #13; 1481 } // end SourceFile 1482 } // Attributes 1483 } // end class ValueCloneable