< prev index next >

src/java.base/share/native/include/classfile_constants.h.template

Print this page

  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,
< prev index next >