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
74 #define JVM_ACC_ABSTRACT_BIT 10
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,
|
1 /*
2 * Copyright (c) 2004, 2026, 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_STRICT = 0x0800,
56 JVM_ACC_STRICT_INIT = 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
76 #define JVM_ACC_ABSTRACT_BIT 10
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,
|