1 /*
2 * Copyright (c) 2004, 2019, 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. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
27 #define CLASSFILE_CONSTANTS_H
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33 /* Classfile version number for this information */
34 #define JVM_CLASSFILE_MAJOR_VERSION @@VERSION_CLASSFILE_MAJOR@@
35 #define JVM_CLASSFILE_MINOR_VERSION @@VERSION_CLASSFILE_MINOR@@
36
37 /* Flags */
38
39 enum {
40 JVM_ACC_PUBLIC = 0x0001,
41 JVM_ACC_PRIVATE = 0x0002,
42 JVM_ACC_PROTECTED = 0x0004,
43 JVM_ACC_STATIC = 0x0008,
44 JVM_ACC_FINAL = 0x0010,
45 JVM_ACC_SYNCHRONIZED = 0x0020,
46 JVM_ACC_SUPER = 0x0020,
47 JVM_ACC_VOLATILE = 0x0040,
48 JVM_ACC_BRIDGE = 0x0040,
49 JVM_ACC_TRANSIENT = 0x0080,
50 JVM_ACC_VARARGS = 0x0080,
51 JVM_ACC_NATIVE = 0x0100,
52 JVM_ACC_INTERFACE = 0x0200,
53 JVM_ACC_ABSTRACT = 0x0400,
54 JVM_ACC_STRICT = 0x0800,
55 JVM_ACC_SYNTHETIC = 0x1000,
56 JVM_ACC_ANNOTATION = 0x2000,
57 JVM_ACC_ENUM = 0x4000,
58 JVM_ACC_MODULE = 0x8000
59 };
60
61 #define JVM_ACC_PUBLIC_BIT 0
62 #define JVM_ACC_PRIVATE_BIT 1
63 #define JVM_ACC_PROTECTED_BIT 2
64 #define JVM_ACC_STATIC_BIT 3
65 #define JVM_ACC_FINAL_BIT 4
66 #define JVM_ACC_SYNCHRONIZED_BIT 5
67 #define JVM_ACC_SUPER_BIT 5
68 #define JVM_ACC_VOLATILE_BIT 6
69 #define JVM_ACC_BRIDGE_BIT 6
70 #define JVM_ACC_TRANSIENT_BIT 7
71 #define JVM_ACC_VARARGS_BIT 7
72 #define JVM_ACC_NATIVE_BIT 8
73 #define JVM_ACC_INTERFACE_BIT 9
94
95 enum {
96 JVM_CONSTANT_Utf8 = 1,
97 JVM_CONSTANT_Unicode = 2, /* unused */
98 JVM_CONSTANT_Integer = 3,
99 JVM_CONSTANT_Float = 4,
100 JVM_CONSTANT_Long = 5,
101 JVM_CONSTANT_Double = 6,
102 JVM_CONSTANT_Class = 7,
103 JVM_CONSTANT_String = 8,
104 JVM_CONSTANT_Fieldref = 9,
105 JVM_CONSTANT_Methodref = 10,
106 JVM_CONSTANT_InterfaceMethodref = 11,
107 JVM_CONSTANT_NameAndType = 12,
108 JVM_CONSTANT_MethodHandle = 15, // JSR 292
109 JVM_CONSTANT_MethodType = 16, // JSR 292
110 JVM_CONSTANT_Dynamic = 17,
111 JVM_CONSTANT_InvokeDynamic = 18,
112 JVM_CONSTANT_Module = 19,
113 JVM_CONSTANT_Package = 20,
114 JVM_CONSTANT_ExternalMax = 20
115 };
116
117 /* JVM_CONSTANT_MethodHandle subtypes */
118 enum {
119 JVM_REF_getField = 1,
120 JVM_REF_getStatic = 2,
121 JVM_REF_putField = 3,
122 JVM_REF_putStatic = 4,
123 JVM_REF_invokeVirtual = 5,
124 JVM_REF_invokeStatic = 6,
125 JVM_REF_invokeSpecial = 7,
126 JVM_REF_newInvokeSpecial = 8,
127 JVM_REF_invokeInterface = 9
128 };
129
130 /* StackMapTable type item numbers */
131
132 enum {
133 JVM_ITEM_Top = 0,
134 JVM_ITEM_Integer = 1,
135 JVM_ITEM_Float = 2,
136 JVM_ITEM_Double = 3,
137 JVM_ITEM_Long = 4,
138 JVM_ITEM_Null = 5,
139 JVM_ITEM_UninitializedThis = 6,
140 JVM_ITEM_Object = 7,
141 JVM_ITEM_Uninitialized = 8
142 };
143
144 /* Type signatures */
145
146 enum {
147 JVM_SIGNATURE_SLASH = '/',
148 JVM_SIGNATURE_DOT = '.',
149 JVM_SIGNATURE_SPECIAL = '<',
150 JVM_SIGNATURE_ENDSPECIAL = '>',
151 JVM_SIGNATURE_ARRAY = '[',
152 JVM_SIGNATURE_BYTE = 'B',
153 JVM_SIGNATURE_CHAR = 'C',
154 JVM_SIGNATURE_CLASS = 'L',
155 JVM_SIGNATURE_ENDCLASS = ';',
156 JVM_SIGNATURE_ENUM = 'E',
157 JVM_SIGNATURE_FLOAT = 'F',
158 JVM_SIGNATURE_DOUBLE = 'D',
159 JVM_SIGNATURE_FUNC = '(',
160 JVM_SIGNATURE_ENDFUNC = ')',
161 JVM_SIGNATURE_INT = 'I',
162 JVM_SIGNATURE_LONG = 'J',
163 JVM_SIGNATURE_SHORT = 'S',
164 JVM_SIGNATURE_VOID = 'V',
165 JVM_SIGNATURE_BOOLEAN = 'Z'
166 };
167
168 /* Opcodes */
169
170 enum {
171 JVM_OPC_nop = 0,
172 JVM_OPC_aconst_null = 1,
173 JVM_OPC_iconst_m1 = 2,
174 JVM_OPC_iconst_0 = 3,
|
1 /*
2 * Copyright (c) 2004, 2022, 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. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
27 #define CLASSFILE_CONSTANTS_H
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33 /* Classfile version number for this information */
34 #define JVM_CLASSFILE_MAJOR_VERSION @@VERSION_CLASSFILE_MAJOR@@
35 #define JVM_CLASSFILE_MINOR_VERSION @@VERSION_CLASSFILE_MINOR@@
36
37 /* Flags */
38
39 enum {
40 JVM_ACC_PUBLIC = 0x0001,
41 JVM_ACC_PRIVATE = 0x0002,
42 JVM_ACC_PROTECTED = 0x0004,
43 JVM_ACC_STATIC = 0x0008,
44 JVM_ACC_FINAL = 0x0010,
45 JVM_ACC_SYNCHRONIZED = 0x0020,
46 JVM_ACC_SUPER = 0x0020,
47 JVM_ACC_IDENTITY = 0x0020,
48 JVM_ACC_VOLATILE = 0x0040,
49 JVM_ACC_BRIDGE = 0x0040,
50 JVM_ACC_TRANSIENT = 0x0080,
51 JVM_ACC_VARARGS = 0x0080,
52 JVM_ACC_NATIVE = 0x0100,
53 JVM_ACC_INTERFACE = 0x0200,
54 JVM_ACC_ABSTRACT = 0x0400,
55 JVM_ACC_PRIMITIVE = 0x0800,
56 JVM_ACC_STRICT = 0x0800,
57 JVM_ACC_SYNTHETIC = 0x1000,
58 JVM_ACC_ANNOTATION = 0x2000,
59 JVM_ACC_ENUM = 0x4000,
60 JVM_ACC_MODULE = 0x8000
61 };
62
63 #define JVM_ACC_PUBLIC_BIT 0
64 #define JVM_ACC_PRIVATE_BIT 1
65 #define JVM_ACC_PROTECTED_BIT 2
66 #define JVM_ACC_STATIC_BIT 3
67 #define JVM_ACC_FINAL_BIT 4
68 #define JVM_ACC_SYNCHRONIZED_BIT 5
69 #define JVM_ACC_SUPER_BIT 5
70 #define JVM_ACC_VOLATILE_BIT 6
71 #define JVM_ACC_BRIDGE_BIT 6
72 #define JVM_ACC_TRANSIENT_BIT 7
73 #define JVM_ACC_VARARGS_BIT 7
74 #define JVM_ACC_NATIVE_BIT 8
75 #define JVM_ACC_INTERFACE_BIT 9
96
97 enum {
98 JVM_CONSTANT_Utf8 = 1,
99 JVM_CONSTANT_Unicode = 2, /* unused */
100 JVM_CONSTANT_Integer = 3,
101 JVM_CONSTANT_Float = 4,
102 JVM_CONSTANT_Long = 5,
103 JVM_CONSTANT_Double = 6,
104 JVM_CONSTANT_Class = 7,
105 JVM_CONSTANT_String = 8,
106 JVM_CONSTANT_Fieldref = 9,
107 JVM_CONSTANT_Methodref = 10,
108 JVM_CONSTANT_InterfaceMethodref = 11,
109 JVM_CONSTANT_NameAndType = 12,
110 JVM_CONSTANT_MethodHandle = 15, // JSR 292
111 JVM_CONSTANT_MethodType = 16, // JSR 292
112 JVM_CONSTANT_Dynamic = 17,
113 JVM_CONSTANT_InvokeDynamic = 18,
114 JVM_CONSTANT_Module = 19,
115 JVM_CONSTANT_Package = 20,
116 JVM_CONSTANT_ExternalMax = 20
117 };
118
119 /* JVM_CONSTANT_MethodHandle subtypes */
120 enum {
121 JVM_REF_getField = 1,
122 JVM_REF_getStatic = 2,
123 JVM_REF_putField = 3,
124 JVM_REF_putStatic = 4,
125 JVM_REF_invokeVirtual = 5,
126 JVM_REF_invokeStatic = 6,
127 JVM_REF_invokeSpecial = 7,
128 JVM_REF_newInvokeSpecial = 8,
129 JVM_REF_invokeInterface = 9
130 };
131
132 /* StackMapTable type item numbers */
133
134 enum {
135 JVM_ITEM_Top = 0,
136 JVM_ITEM_Integer = 1,
137 JVM_ITEM_Float = 2,
138 JVM_ITEM_Double = 3,
139 JVM_ITEM_Long = 4,
140 JVM_ITEM_Null = 5,
141 JVM_ITEM_UninitializedThis = 6,
142 JVM_ITEM_Object = 7,
143 JVM_ITEM_Uninitialized = 8
144 };
145
146 /* Type signatures */
147
148 enum {
149 JVM_SIGNATURE_SLASH = '/',
150 JVM_SIGNATURE_DOT = '.',
151 JVM_SIGNATURE_SPECIAL = '<',
152 JVM_SIGNATURE_ENDSPECIAL = '>',
153 JVM_SIGNATURE_ARRAY = '[',
154 JVM_SIGNATURE_BYTE = 'B',
155 JVM_SIGNATURE_CHAR = 'C',
156 JVM_SIGNATURE_CLASS = 'L',
157 JVM_SIGNATURE_PRIMITIVE_OBJECT = 'Q',
158 JVM_SIGNATURE_ENDCLASS = ';',
159 JVM_SIGNATURE_ENUM = 'E',
160 JVM_SIGNATURE_FLOAT = 'F',
161 JVM_SIGNATURE_DOUBLE = 'D',
162 JVM_SIGNATURE_FUNC = '(',
163 JVM_SIGNATURE_ENDFUNC = ')',
164 JVM_SIGNATURE_INT = 'I',
165 JVM_SIGNATURE_LONG = 'J',
166 JVM_SIGNATURE_SHORT = 'S',
167 JVM_SIGNATURE_VOID = 'V',
168 JVM_SIGNATURE_BOOLEAN = 'Z'
169 };
170
171 /* Opcodes */
172
173 enum {
174 JVM_OPC_nop = 0,
175 JVM_OPC_aconst_null = 1,
176 JVM_OPC_iconst_m1 = 2,
177 JVM_OPC_iconst_0 = 3,
|