2
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
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.
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).
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.
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
24
// This test was generated from this source and then modified:
25
// record recordNames(int x, String y) {}
27
// This test is a Record but not marked final. Loading this class should
28
// not cause a ClassFormatError exception.
33
[69] { // Constant Pool
34
; // first element is empty
35
Method #2 #3; // #1 at 0x0A
36
class #4; // #2 at 0x0F
37
NameAndType #5 #6; // #3 at 0x12
38
Utf8 "java/lang/Record"; // #4 at 0x17
39
Utf8 "<init>"; // #5 at 0x2A
40
Utf8 "()V"; // #6 at 0x33
41
Field #8 #9; // #7 at 0x39
42
class #10; // #8 at 0x3E
43
NameAndType #11 #12; // #9 at 0x41
44
Utf8 "notFinalRecord"; // #10 at 0x46
45
Utf8 "x"; // #11 at 0x56
46
Utf8 "I"; // #12 at 0x5A
47
Field #8 #14; // #13 at 0x5E
48
NameAndType #15 #16; // #14 at 0x63
49
Utf8 "y"; // #15 at 0x68
50
Utf8 "Ljava/lang/String;"; // #16 at 0x6C
51
InvokeDynamic 0s #18; // #17 at 0x81
52
NameAndType #19 #20; // #18 at 0x86
53
Utf8 "toString"; // #19 at 0x8B
54
Utf8 "(LnotFinalRecord;)Ljava/lang/String;"; // #20 at 0x96
55
InvokeDynamic 0s #22; // #21 at 0xBC
56
NameAndType #23 #24; // #22 at 0xC1
57
Utf8 "hashCode"; // #23 at 0xC6
58
Utf8 "(LnotFinalRecord;)I"; // #24 at 0xD1
59
InvokeDynamic 0s #26; // #25 at 0xE6
60
NameAndType #27 #28; // #26 at 0xEB
61
Utf8 "equals"; // #27 at 0xF0
62
Utf8 "(LnotFinalRecord;Ljava/lang/Object;)Z"; // #28 at 0xF9
63
Dynamic 1s #30; // #29 at 0x0120
64
NameAndType #31 #32; // #30 at 0x0125
65
Utf8 "\\%pattern\\%recordExample\\%(ILjava\\|lang\\|String\\?)"; // #31 at 0x012A
66
Utf8 "Ljava/lang/runtime/PatternHandle;"; // #32 at 0x015F
67
Utf8 "(ILjava/lang/String;)V"; // #33 at 0x0183
68
Utf8 "Code"; // #34 at 0x019C
69
Utf8 "LineNumberTable"; // #35 at 0x01A3
70
Utf8 "MethodParameters"; // #36 at 0x01B5
71
Utf8 "()Ljava/lang/String;"; // #37 at 0x01C8
72
Utf8 "()I"; // #38 at 0x01DF
73
Utf8 "(Ljava/lang/Object;)Z"; // #39 at 0x01E5
74
Utf8 "()Ljava/lang/runtime/PatternHandle;"; // #40 at 0x01FD
75
Utf8 "SourceFile"; // #41 at 0x0223
76
Utf8 "notFinalRecord.java"; // #42 at 0x0230
77
Utf8 "Record"; // #43 at 0x0245
78
Utf8 "BootstrapMethods"; // #44 at 0x024E
79
MethodHandle 6b #46; // #45 at 0x0261
80
Method #47 #48; // #46 at 0x0265
81
class #49; // #47 at 0x026A
82
NameAndType #50 #51; // #48 at 0x026D
83
Utf8 "java/lang/runtime/ObjectMethods"; // #49 at 0x0272
84
Utf8 "bootstrap"; // #50 at 0x029A
85
Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;"; // #51 at 0x02A6
86
String #53; // #52 at 0x035A
87
Utf8 "x;y"; // #53 at 0x035D
88
MethodHandle 1b #7; // #54 at 0x0363
89
MethodHandle 1b #13; // #55 at 0x0367
90
MethodHandle 6b #57; // #56 at 0x036B
91
Method #58 #59; // #57 at 0x036F
92
class #60; // #58 at 0x0374
93
NameAndType #61 #62; // #59 at 0x0377
94
Utf8 "java/lang/runtime/PatternHandles"; // #60 at 0x037C
95
Utf8 "ofLazyProjection"; // #61 at 0x039F
96
Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/runtime/PatternHandle;"; // #62 at 0x03B2
97
Utf8 "InnerClasses"; // #63 at 0x0453
98
class #65; // #64 at 0x0462
99
Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #65 at 0x0465
100
class #67; // #66 at 0x048D
101
Utf8 "java/lang/invoke/MethodHandles"; // #67 at 0x0490
102
Utf8 "Lookup"; // #68 at 0x04B1
105
0x0020; // access [ ACC_SUPER ] // Must be ACC_FINAL !!
113
{ // Member at 0x04C4
121
{ // Member at 0x04CC
131
{ // Member at 0x04D6
136
Attr(#34, 39) { // Code at 0x04DE
146
Attr(#35, 6) { // LineNumberTable at 0x04FF
147
[1] { // LineNumberTable
150
} // end LineNumberTable
154
Attr(#36, 9) { // MethodParameters at 0x050B
157
} // end MethodParameters
161
{ // Member at 0x051A
166
Attr(#34, 31) { // Code at 0x0522
175
Attr(#35, 6) { // LineNumberTable at 0x053B
176
[1] { // LineNumberTable
179
} // end LineNumberTable
185
{ // Member at 0x0547
190
Attr(#34, 31) { // Code at 0x054F
199
Attr(#35, 6) { // LineNumberTable at 0x0568
200
[1] { // LineNumberTable
203
} // end LineNumberTable
209
{ // Member at 0x0574
214
Attr(#34, 32) { // Code at 0x057C
223
Attr(#35, 6) { // LineNumberTable at 0x0596
224
[1] { // LineNumberTable
227
} // end LineNumberTable
233
{ // Member at 0x05A2
238
Attr(#34, 29) { // Code at 0x05AA
247
Attr(#35, 6) { // LineNumberTable at 0x05C1
248
[1] { // LineNumberTable
251
} // end LineNumberTable
257
{ // Member at 0x05CD
262
Attr(#34, 29) { // Code at 0x05D5
271
Attr(#35, 6) { // LineNumberTable at 0x05EC
272
[1] { // LineNumberTable
275
} // end LineNumberTable
281
{ // Member at 0x05F8
286
Attr(#34, 27) { // Code at 0x0600
295
Attr(#35, 6) { // LineNumberTable at 0x0615
296
[1] { // LineNumberTable
299
} // end LineNumberTable
307
Attr(#41, 2) { // SourceFile at 0x0623
311
Attr(#43, 14) { // Record at 0x062B
316
Attr(#44, 24) { // BootstrapMethods at 0x063F
317
[2] { // bootstrap_methods
318
{ // bootstrap_method
319
#45; // bootstrap_method_ref
320
[4] { // bootstrap_arguments
325
} // bootstrap_arguments
326
} // bootstrap_method
328
{ // bootstrap_method
329
#56; // bootstrap_method_ref
330
[3] { // bootstrap_arguments
334
} // bootstrap_arguments
335
} // bootstrap_method
337
} // end BootstrapMethods
339
Attr(#63, 10) { // InnerClasses at 0x065D
340
[1] { // InnerClasses
341
#64 #66 #68 25; // at 0x066D
343
} // end InnerClasses
345
} // end class notFinalRecord