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 /* 26 * @test 27 * @bug 8210351 28 * @summary Check that IllegalAccessError exceptions get thrown if a class that 29 * is not a nestmate of a value type tries to write to the value type's 30 * final fields. 31 * @compile -XDemitQtypes WithFieldNoAccessTest.jcod 32 * @run main/othervm -XX:+EnableValhalla WithFieldNoAccessTest 33 */ 34 35 // This test is based on the below Java program. The only difference is that 36 // the nestmate attributes have been removed. So, value type WithFieldNoAccessTest 37 // and WithFieldNoAccessTest$V are no longer nestmates. This should cause 38 // IllegalAccessError exceptions when WithFieldNoAccessTest tries to write, using 39 // withfield, to value type WithFieldNoAccessTest$V's final fields. 40 // 41 // public class WithFieldNoAccessTest { 42 // 43 // public static final value class V { 44 // public final char c; 45 // protected final long l; 46 // private final int i; 47 // V() { 48 // this.c = '0'; 49 // this.l = 0; 50 // this.i = 0; 51 // } 52 // 53 // public static V make(char c, long l, int i) { 54 // V v = V.default; 55 // v = __WithField(v.c, c); 56 // v = __WithField(v.l, l); 57 // v = __WithField(v.i, i); 58 // return v; 59 // } 60 // } 61 // 62 // public static void main(String... args) throws Throwable { 63 // try { 64 // V v = __WithField(V.make('a', 5, 10).c, 'b'); 65 // throw new RuntimeException("Failed to throw IllegalAccessError exception for final public field"); 66 // } catch (java.lang.IllegalAccessError e) { 67 // if (!e.toString().contains("Update to non-static final field WithFieldNoAccessTest$V.c attempted")) { 68 // throw new RuntimeException("Unexpected IllegalAccessError: " + e.toString()); 69 // } 70 // } 71 // 72 // try { 73 // V v = __WithField(V.make('a', 5, 10).l, 25); 74 // throw new RuntimeException("Failed to throw IllegalAccessError exception for final protected field"); 75 // } catch (java.lang.IllegalAccessError e) { 76 // if (!e.toString().contains("Update to non-static final field WithFieldNoAccessTest$V.l attempted")) { 77 // throw new RuntimeException("Unexpected IllegalAccessError: " + e.toString()); 78 // } 79 // } 80 // 81 // try { 82 // V v = __WithField(V.make('a', 5, 10).i, 20); 83 // throw new RuntimeException("Failed to throw IllegalAccessError exception for final private field"); 84 // } catch (java.lang.IllegalAccessError e) { 85 // if (!e.toString().contains("WithFieldNoAccessTest tried to access private field WithFieldNoAccessTest$V.i")) { 86 // throw new RuntimeException("Unexpected IllegalAccessError: " + e.toString()); 87 // } 88 // } 89 // } 90 // } 91 // 92 93 class WithFieldNoAccessTest$V { 94 0xCAFEBABE; 95 0; // minor version 96 57; // version 97 [68] { // Constant Pool 98 ; // first element is empty 99 Method #10 #40; // #1 at 0x0A 100 class #41; // #2 at 0x0F 101 Field #2 #42; // #3 at 0x12 102 Field #2 #43; // #4 at 0x17 103 Field #2 #44; // #5 at 0x1C 104 InvokeDynamic 0s #47; // #6 at 0x21 105 InvokeDynamic 0s #48; // #7 at 0x26 106 InvokeDynamic 0s #49; // #8 at 0x2B 107 InvokeDynamic 0s #50; // #9 at 0x30 108 class #51; // #10 at 0x35 109 Utf8 "c"; // #11 at 0x38 110 Utf8 "C"; // #12 at 0x3C 111 Utf8 "l"; // #13 at 0x40 112 Utf8 "J"; // #14 at 0x44 113 Utf8 "i"; // #15 at 0x48 114 Utf8 "I"; // #16 at 0x4C 115 Utf8 "<init>"; // #17 at 0x50 116 Utf8 "()V"; // #18 at 0x59 117 Utf8 "Code"; // #19 at 0x5F 118 Utf8 "LineNumberTable"; // #20 at 0x66 119 Utf8 "make"; // #21 at 0x78 120 Utf8 "V"; // #22 at 0x7F 121 Utf8 "InnerClasses"; // #23 at 0x83 122 Utf8 "ValueTypes"; // #24 at 0x92 123 Utf8 "(CJI)QWithFieldNoAccessTest$V;"; // #25 at 0x9F 124 Utf8 "hashCode"; // #26 at 0xC0 125 Utf8 "()I"; // #27 at 0xCB 126 Utf8 "equals"; // #28 at 0xD1 127 Utf8 "(Ljava/lang/Object;)Z"; // #29 at 0xDA 128 Utf8 "toString"; // #30 at 0xF2 129 Utf8 "()Ljava/lang/String;"; // #31 at 0xFD 130 Utf8 "longHashCode"; // #32 at 0x0114 131 Utf8 "()J"; // #33 at 0x0123 132 Utf8 "$makeValue$"; // #34 at 0x0129 133 Utf8 "()QWithFieldNoAccessTest$V;"; // #35 at 0x0137 134 Utf8 "SourceFile"; // #36 at 0x0155 135 Utf8 "WithFieldNoAccessTest.java"; // #37 at 0x0162 136 Utf8 "NestHost"; // #38 at 0x017F 137 class #52; // #39 at 0x018A 138 NameAndType #17 #18; // #40 at 0x018D 139 Utf8 "WithFieldNoAccessTest$V"; // #41 at 0x0192 140 NameAndType #11 #12; // #42 at 0x01AC 141 NameAndType #13 #14; // #43 at 0x01B1 142 NameAndType #15 #16; // #44 at 0x01B6 143 Utf8 "BootstrapMethods"; // #45 at 0x01BB 144 MethodHandle 6b #53; // #46 at 0x01CE 145 NameAndType #26 #54; // #47 at 0x01D2 146 NameAndType #28 #55; // #48 at 0x01D7 147 NameAndType #30 #56; // #49 at 0x01DC 148 NameAndType #32 #57; // #50 at 0x01E1 149 Utf8 "java/lang/Object"; // #51 at 0x01E6 150 Utf8 "WithFieldNoAccessTest"; // #52 at 0x01F9 151 Method #58 #59; // #53 at 0x0211 152 Utf8 "(Ljava/lang/Object;)I"; // #54 at 0x0216 153 Utf8 "(Ljava/lang/Object;Ljava/lang/Object;)Z"; // #55 at 0x022E 154 Utf8 "(Ljava/lang/Object;)Ljava/lang/String;"; // #56 at 0x0258 155 Utf8 "(Ljava/lang/Object;)J"; // #57 at 0x0281 156 class #60; // #58 at 0x0299 157 NameAndType #61 #64; // #59 at 0x029C 158 Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #60 at 0x02A1 159 Utf8 "makeBootstrapMethod"; // #61 at 0x02CA 160 class #66; // #62 at 0x02E0 161 Utf8 "Lookup"; // #63 at 0x02E3 162 Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #64 at 0x02EC 163 class #67; // #65 at 0x0362 164 Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #66 at 0x0365 165 Utf8 "java/lang/invoke/MethodHandles"; // #67 at 0x038D 166 } // Constant Pool 167 168 0x0131; // access [ ACC_PUBLIC ACC_SUPER ACC_FINAL ] 169 #2;// this_cpx 170 #10;// super_cpx 171 172 [0] { // Interfaces 173 } // Interfaces 174 175 [3] { // fields 176 { // Member at 0x03B8 177 0x0011; // access 178 #11; // name_cpx 179 #12; // sig_cpx 180 [0] { // Attributes 181 } // Attributes 182 } // Member 183 ; 184 { // Member at 0x03C0 185 0x0014; // access 186 #13; // name_cpx 187 #14; // sig_cpx 188 [0] { // Attributes 189 } // Attributes 190 } // Member 191 ; 192 { // Member at 0x03C8 193 0x0012; // access 194 #15; // name_cpx 195 #16; // sig_cpx 196 [0] { // Attributes 197 } // Attributes 198 } // Member 199 } // fields 200 201 [7] { // methods 202 { // Member at 0x03D2 203 0x0000; // access 204 #17; // name_cpx 205 #18; // sig_cpx 206 [1] { // Attributes 207 Attr(#19, 29) { // Code at 0x03DA 208 1; // max_stack 209 1; // max_locals 210 Bytes[5]{ 211 0x2AB70001B1; 212 }; 213 [0] { // Traps 214 } // end Traps 215 [1] { // Attributes 216 Attr(#20, 6) { // LineNumberTable at 0x03F1 217 [1] { // LineNumberTable 218 0 15; // at 0x03FD 219 } 220 } // end LineNumberTable 221 } // Attributes 222 } // end Code 223 } // Attributes 224 } // Member 225 ; 226 { // Member at 0x03FD 227 0x0009; // access 228 #21; // name_cpx 229 #25; // sig_cpx 230 [1] { // Attributes 231 Attr(#19, 76) { // Code at 0x0405 232 4; // max_stack 233 5; // max_locals 234 Bytes[36]{ 235 0xCB00023A041A1904; 236 0x5FCC00033A041F19; 237 0x045B57CC00043A04; 238 0x1D19045FCC00053A; 239 0x041904B0; 240 }; 241 [0] { // Traps 242 } // end Traps 243 [1] { // Attributes 244 Attr(#20, 22) { // LineNumberTable at 0x043B 245 [5] { // LineNumberTable 246 0 22; // at 0x0447 247 5 23; // at 0x044B 248 14 24; // at 0x044F 249 24 25; // at 0x0453 250 33 26; // at 0x0457 251 } 252 } // end LineNumberTable 253 } // Attributes 254 } // end Code 255 } // Attributes 256 } // Member 257 ; 258 { // Member at 0x0457 259 0x0011; // access 260 #26; // name_cpx 261 #27; // sig_cpx 262 [1] { // Attributes 263 Attr(#19, 31) { // Code at 0x045F 264 1; // max_stack 265 1; // max_locals 266 Bytes[7]{ 267 0x2ABA00060000AC; 268 }; 269 [0] { // Traps 270 } // end Traps 271 [1] { // Attributes 272 Attr(#20, 6) { // LineNumberTable at 0x0478 273 [1] { // LineNumberTable 274 0 11; // at 0x0484 275 } 276 } // end LineNumberTable 277 } // Attributes 278 } // end Code 279 } // Attributes 280 } // Member 281 ; 282 { // Member at 0x0484 283 0x0011; // access 284 #28; // name_cpx 285 #29; // sig_cpx 286 [1] { // Attributes 287 Attr(#19, 32) { // Code at 0x048C 288 2; // max_stack 289 2; // max_locals 290 Bytes[8]{ 291 0x2A2BBA00070000AC; 292 }; 293 [0] { // Traps 294 } // end Traps 295 [1] { // Attributes 296 Attr(#20, 6) { // LineNumberTable at 0x04A6 297 [1] { // LineNumberTable 298 0 11; // at 0x04B2 299 } 300 } // end LineNumberTable 301 } // Attributes 302 } // end Code 303 } // Attributes 304 } // Member 305 ; 306 { // Member at 0x04B2 307 0x0011; // access 308 #30; // name_cpx 309 #31; // sig_cpx 310 [1] { // Attributes 311 Attr(#19, 31) { // Code at 0x04BA 312 1; // max_stack 313 1; // max_locals 314 Bytes[7]{ 315 0x2ABA00080000B0; 316 }; 317 [0] { // Traps 318 } // end Traps 319 [1] { // Attributes 320 Attr(#20, 6) { // LineNumberTable at 0x04D3 321 [1] { // LineNumberTable 322 0 11; // at 0x04DF 323 } 324 } // end LineNumberTable 325 } // Attributes 326 } // end Code 327 } // Attributes 328 } // Member 329 ; 330 { // Member at 0x04DF 331 0x0011; // access 332 #32; // name_cpx 333 #33; // sig_cpx 334 [1] { // Attributes 335 Attr(#19, 31) { // Code at 0x04E7 336 2; // max_stack 337 1; // max_locals 338 Bytes[7]{ 339 0x2ABA00090000AD; 340 }; 341 [0] { // Traps 342 } // end Traps 343 [1] { // Attributes 344 Attr(#20, 6) { // LineNumberTable at 0x0500 345 [1] { // LineNumberTable 346 0 11; // at 0x050C 347 } 348 } // end LineNumberTable 349 } // Attributes 350 } // end Code 351 } // Attributes 352 } // Member 353 ; 354 { // Member at 0x050C 355 0x1008; // access 356 #34; // name_cpx 357 #35; // sig_cpx 358 [1] { // Attributes 359 Attr(#19, 69) { // Code at 0x0514 360 4; // max_stack 361 1; // max_locals 362 Bytes[29]{ 363 0xCB00024B10302A5F; 364 0xCC00034B092A5B57; 365 0xCC00044B032A5FCC; 366 0x00054B2AB0; 367 }; 368 [0] { // Traps 369 } // end Traps 370 [1] { // Attributes 371 Attr(#20, 22) { // LineNumberTable at 0x0543 372 [5] { // LineNumberTable 373 0 15; // at 0x054F 374 4 16; // at 0x0553 375 12 17; // at 0x0557 376 20 18; // at 0x055B 377 27 19; // at 0x055F 378 } 379 } // end LineNumberTable 380 } // Attributes 381 } // end Code 382 } // Attributes 383 } // Member 384 } // methods 385 386 [3] { // Attributes 387 Attr(#36, 2) { // SourceFile at 0x0561 388 #37; 389 } // end SourceFile 390 ; 391 Attr(#23, 18) { // InnerClasses at 0x0571 392 [2] { // InnerClasses 393 #2 #39 #22 281; // at 0x0581 394 #62 #65 #63 25; // at 0x0589 395 } 396 } // end InnerClasses 397 ; 398 Attr(#45, 6) { // BootstrapMethods at 0x0589 399 [1] { // bootstrap_methods 400 { // bootstrap_method 401 #46; // bootstrap_method_ref 402 [0] { // bootstrap_arguments 403 } // bootstrap_arguments 404 } // bootstrap_method 405 } 406 } // end BootstrapMethods 407 } // Attributes 408 } // end class WithFieldNoAccessTest$V 409 410 411 class WithFieldNoAccessTest { 412 0xCAFEBABE; 413 0; // minor version 414 57; // version 415 [92] { // Constant Pool 416 ; // first element is empty 417 Method #23 #40; // #1 at 0x0A 418 long 0x0000000000000005;; // #2 at 0x0F 419 Method #24 #41; // #4 at 0x18 420 Field #24 #42; // #5 at 0x1D 421 class #43; // #6 at 0x22 422 String #44; // #7 at 0x25 423 Method #6 #45; // #8 at 0x28 424 class #46; // #9 at 0x2D 425 Method #9 #47; // #10 at 0x30 426 String #48; // #11 at 0x35 427 Method #49 #50; // #12 at 0x38 428 InvokeDynamic 0s #54; // #13 at 0x3D 429 long 0x0000000000000019;; // #14 at 0x42 430 Field #24 #55; // #16 at 0x4B 431 String #56; // #17 at 0x50 432 String #57; // #18 at 0x53 433 Field #24 #58; // #19 at 0x56 434 String #59; // #20 at 0x5B 435 String #60; // #21 at 0x5E 436 class #61; // #22 at 0x61 437 class #62; // #23 at 0x64 438 class #63; // #24 at 0x67 439 Utf8 "V"; // #25 at 0x6A 440 Utf8 "InnerClasses"; // #26 at 0x6E 441 Utf8 "ValueTypes"; // #27 at 0x7D 442 Utf8 "<init>"; // #28 at 0x8A 443 Utf8 "()V"; // #29 at 0x93 444 Utf8 "Code"; // #30 at 0x99 445 Utf8 "LineNumberTable"; // #31 at 0xA0 446 Utf8 "main"; // #32 at 0xB2 447 Utf8 "([Ljava/lang/String;)V"; // #33 at 0xB9 448 Utf8 "StackMapTable"; // #34 at 0xD2 449 Utf8 "Exceptions"; // #35 at 0xE2 450 class #64; // #36 at 0xEF 451 Utf8 "SourceFile"; // #37 at 0xF2 452 Utf8 "WithFieldNoAccessTest.java"; // #38 at 0xFF 453 Utf8 "NestMembers"; // #39 at 0x011C 454 NameAndType #28 #29; // #40 at 0x012A 455 NameAndType #65 #66; // #41 at 0x012F 456 NameAndType #67 #68; // #42 at 0x0134 457 Utf8 "java/lang/RuntimeException"; // #43 at 0x0139 458 Utf8 "Failed to throw IllegalAccessError exception for final public field"; // #44 at 0x0156 459 NameAndType #28 #69; // #45 at 0x019C 460 Utf8 "java/lang/IllegalAccessError"; // #46 at 0x01A1 461 NameAndType #70 #71; // #47 at 0x01C0 462 Utf8 "Update to non-static final field WithFieldNoAccessTest$V.c attempted"; // #48 at 0x01C5 463 class #72; // #49 at 0x020C 464 NameAndType #73 #74; // #50 at 0x020F 465 Utf8 "BootstrapMethods"; // #51 at 0x0214 466 MethodHandle 6b #75; // #52 at 0x0227 467 String #76; // #53 at 0x022B 468 NameAndType #77 #78; // #54 at 0x022E 469 NameAndType #79 #80; // #55 at 0x0233 470 Utf8 "Failed to throw IllegalAccessError exception for final protected field"; // #56 at 0x0238 471 Utf8 "Update to non-static final field WithFieldNoAccessTest$V.l attempted"; // #57 at 0x0281 472 NameAndType #81 #82; // #58 at 0x02C8 473 Utf8 "Failed to throw IllegalAccessError exception for final private field"; // #59 at 0x02CD 474 Utf8 "WithFieldNoAccessTest tried to access private field WithFieldNoAccessTest$V.i"; // #60 at 0x0314 475 Utf8 "WithFieldNoAccessTest"; // #61 at 0x0364 476 Utf8 "java/lang/Object"; // #62 at 0x037C 477 Utf8 "WithFieldNoAccessTest$V"; // #63 at 0x038F 478 Utf8 "java/lang/Throwable"; // #64 at 0x03A9 479 Utf8 "make"; // #65 at 0x03BF 480 Utf8 "(CJI)QWithFieldNoAccessTest$V;"; // #66 at 0x03C6 481 Utf8 "c"; // #67 at 0x03E7 482 Utf8 "C"; // #68 at 0x03EB 483 Utf8 "(Ljava/lang/String;)V"; // #69 at 0x03EF 484 Utf8 "toString"; // #70 at 0x0407 485 Utf8 "()Ljava/lang/String;"; // #71 at 0x0412 486 Utf8 "java/lang/String"; // #72 at 0x0429 487 Utf8 "contains"; // #73 at 0x043C 488 Utf8 "(Ljava/lang/CharSequence;)Z"; // #74 at 0x0447 489 Method #83 #84; // #75 at 0x0465 490 Utf8 "Unexpected IllegalAccessError: "; // #76 at 0x046A 491 Utf8 "makeConcatWithConstants"; // #77 at 0x048D 492 Utf8 "(Ljava/lang/String;)Ljava/lang/String;"; // #78 at 0x04A7 493 Utf8 "l"; // #79 at 0x04D0 494 Utf8 "J"; // #80 at 0x04D4 495 Utf8 "i"; // #81 at 0x04D8 496 Utf8 "I"; // #82 at 0x04DC 497 class #85; // #83 at 0x04E0 498 NameAndType #77 #88; // #84 at 0x04E3 499 Utf8 "java/lang/invoke/StringConcatFactory"; // #85 at 0x04E8 500 class #90; // #86 at 0x050F 501 Utf8 "Lookup"; // #87 at 0x0512 502 Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;"; // #88 at 0x051B 503 class #91; // #89 at 0x05B6 504 Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #90 at 0x05B9 505 Utf8 "java/lang/invoke/MethodHandles"; // #91 at 0x05E1 506 } // Constant Pool 507 508 0x0021; // access [ ACC_PUBLIC ACC_SUPER ] 509 #22;// this_cpx 510 #23;// super_cpx 511 512 [0] { // Interfaces 513 } // Interfaces 514 515 [0] { // fields 516 } // fields 517 518 [2] { // methods 519 { // Member at 0x060E 520 0x0001; // access 521 #28; // name_cpx 522 #29; // sig_cpx 523 [1] { // Attributes 524 Attr(#30, 29) { // Code at 0x0616 525 1; // max_stack 526 1; // max_locals 527 Bytes[5]{ 528 0x2AB70001B1; 529 }; 530 [0] { // Traps 531 } // end Traps 532 [1] { // Attributes 533 Attr(#31, 6) { // LineNumberTable at 0x062D 534 [1] { // LineNumberTable 535 0 9; // at 0x0639 536 } 537 } // end LineNumberTable 538 } // Attributes 539 } // end Code 540 } // Attributes 541 } // Member 542 ; 543 { // Member at 0x0639 544 0x0089; // access 545 #32; // name_cpx 546 #33; // sig_cpx 547 [2] { // Attributes 548 Attr(#30, 305) { // Code at 0x0641 549 6; // max_stack 550 2; // max_locals 551 Bytes[174]{ 552 0x1062106114000210; 553 0x0AB800045FCC0005; 554 0x4CBB0006591207B7; 555 0x0008BF4C2BB6000A; 556 0x120BB6000C9A0014; 557 0xBB0006592BB6000A; 558 0xBA000D0000B70008; 559 0xBF14000E10611400; 560 0x02100AB800045B57; 561 0xCC00104CBB000659; 562 0x1211B70008BF4C2B; 563 0xB6000A1212B6000C; 564 0x9A0014BB0006592B; 565 0xB6000ABA000D0000; 566 0xB70008BF10141061; 567 0x140002100AB80004; 568 0x5FCC00134CBB0006; 569 0x591214B70008BF4C; 570 0x2BB6000A1215B600; 571 0x0C9A0014BB000659; 572 0x2BB6000ABA000D00; 573 0x00B70008BFB1; 574 }; 575 [3] { // Traps 576 0 27 27 9; // at 0x0707 577 57 86 86 9; // at 0x070F 578 116 143 143 9; // at 0x0717 579 } // end Traps 580 [2] { // Attributes 581 Attr(#31, 66) { // LineNumberTable at 0x0719 582 [16] { // LineNumberTable 583 0 32; // at 0x0725 584 17 33; // at 0x0729 585 27 34; // at 0x072D 586 28 35; // at 0x0731 587 40 36; // at 0x0735 588 57 41; // at 0x0739 589 76 42; // at 0x073D 590 86 43; // at 0x0741 591 87 44; // at 0x0745 592 99 45; // at 0x0749 593 116 50; // at 0x074D 594 133 51; // at 0x0751 595 143 52; // at 0x0755 596 144 53; // at 0x0759 597 156 54; // at 0x075D 598 173 57; // at 0x0761 599 } 600 } // end LineNumberTable 601 ; 602 Attr(#34, 17) { // StackMapTable at 0x0761 603 [6] { // 604 91b, [1]z{7b,9}; // same_locals_1_stack_item_frame 605 29b; // same_frame 606 92b, [1]z{7b,9}; // same_locals_1_stack_item_frame 607 29b; // same_frame 608 90b, [1]z{7b,9}; // same_locals_1_stack_item_frame 609 29b; // same_frame 610 } 611 } // end StackMapTable 612 } // Attributes 613 } // end Code 614 ; 615 Attr(#35, 4) { // Exceptions at 0x0778 616 [1] { // Exceptions 617 #36; // at 0x0782 618 } 619 } // end Exceptions 620 } // Attributes 621 } // Member 622 } // methods 623 624 [3] { // Attributes 625 Attr(#37, 2) { // SourceFile at 0x0784 626 #38; 627 } // end SourceFile 628 ; 629 Attr(#26, 18) { // InnerClasses at 0x0796 630 [2] { // InnerClasses 631 #24 #22 #25 281; // at 0x07A6 632 #86 #89 #87 25; // at 0x07AE 633 } 634 } // end InnerClasses 635 ; 636 Attr(#51, 8) { // BootstrapMethods at 0x07AE 637 [1] { // bootstrap_methods 638 { // bootstrap_method 639 #52; // bootstrap_method_ref 640 [1] { // bootstrap_arguments 641 #53; // at 0x07BC 642 } // bootstrap_arguments 643 } // bootstrap_method 644 } 645 } // end BootstrapMethods 646 } // Attributes 647 } // end class WithFieldNoAccessTest