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