< 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
 74 #define JVM_ACC_ABSTRACT_BIT      10
 75 #define JVM_ACC_STRICT_BIT        11
 76 #define JVM_ACC_SYNTHETIC_BIT     12
 77 #define JVM_ACC_ANNOTATION_BIT    13
 78 #define JVM_ACC_ENUM_BIT          14
 79 
 80 /* Used in newarray instruction. */
 81 
 82 enum {
 83     JVM_T_BOOLEAN = 4,
 84     JVM_T_CHAR    = 5,
 85     JVM_T_FLOAT   = 6,
 86     JVM_T_DOUBLE  = 7,
 87     JVM_T_BYTE    = 8,
 88     JVM_T_SHORT   = 9,
 89     JVM_T_INT     = 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,
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_VALUE         = 0x0040,
 51     JVM_ACC_TRANSIENT     = 0x0080,
 52     JVM_ACC_VARARGS       = 0x0080,
 53     JVM_ACC_NATIVE        = 0x0100,
 54     JVM_ACC_PERMITS_VALUE = 0x0100,
 55     JVM_ACC_INTERFACE     = 0x0200,
 56     JVM_ACC_ABSTRACT      = 0x0400,
 57     JVM_ACC_PRIMITIVE     = 0x0800,
 58     JVM_ACC_STRICT        = 0x0800,
 59     JVM_ACC_SYNTHETIC     = 0x1000,
 60     JVM_ACC_ANNOTATION    = 0x2000,
 61     JVM_ACC_ENUM          = 0x4000,
 62     JVM_ACC_MODULE        = 0x8000
 63 };
 64 
 65 #define JVM_ACC_PUBLIC_BIT        0
 66 #define JVM_ACC_PRIVATE_BIT       1
 67 #define JVM_ACC_PROTECTED_BIT     2
 68 #define JVM_ACC_STATIC_BIT        3
 69 #define JVM_ACC_FINAL_BIT         4
 70 #define JVM_ACC_SYNCHRONIZED_BIT  5
 71 #define JVM_ACC_SUPER_BIT         5
 72 #define JVM_ACC_VOLATILE_BIT      6
 73 #define JVM_ACC_BRIDGE_BIT        6
 74 #define JVM_ACC_PERMITS_VALUE_BIT 6
 75 #define JVM_ACC_TRANSIENT_BIT     7
 76 #define JVM_ACC_VARARGS_BIT       7
 77 #define JVM_ACC_NATIVE_BIT        8
 78 #define JVM_ACC_INTERFACE_BIT     9
 79 #define JVM_ACC_ABSTRACT_BIT      10
 80 #define JVM_ACC_STRICT_BIT        11
 81 #define JVM_ACC_SYNTHETIC_BIT     12
 82 #define JVM_ACC_ANNOTATION_BIT    13
 83 #define JVM_ACC_ENUM_BIT          14
 84 
 85 /* Used in newarray instruction. */
 86 
 87 enum {
 88     JVM_T_BOOLEAN = 4,
 89     JVM_T_CHAR    = 5,
 90     JVM_T_FLOAT   = 6,
 91     JVM_T_DOUBLE  = 7,
 92     JVM_T_BYTE    = 8,
 93     JVM_T_SHORT   = 9,
 94     JVM_T_INT     = 10,

 99 
100 enum {
101     JVM_CONSTANT_Utf8                   = 1,
102     JVM_CONSTANT_Unicode                = 2, /* unused */
103     JVM_CONSTANT_Integer                = 3,
104     JVM_CONSTANT_Float                  = 4,
105     JVM_CONSTANT_Long                   = 5,
106     JVM_CONSTANT_Double                 = 6,
107     JVM_CONSTANT_Class                  = 7,
108     JVM_CONSTANT_String                 = 8,
109     JVM_CONSTANT_Fieldref               = 9,
110     JVM_CONSTANT_Methodref              = 10,
111     JVM_CONSTANT_InterfaceMethodref     = 11,
112     JVM_CONSTANT_NameAndType            = 12,
113     JVM_CONSTANT_MethodHandle           = 15,  // JSR 292
114     JVM_CONSTANT_MethodType             = 16,  // JSR 292
115     JVM_CONSTANT_Dynamic                = 17,
116     JVM_CONSTANT_InvokeDynamic          = 18,
117     JVM_CONSTANT_Module                 = 19,
118     JVM_CONSTANT_Package                = 20,
119     JVM_CONSTANT_ExternalMax            = 20
120 };
121 
122 /* JVM_CONSTANT_MethodHandle subtypes */
123 enum {
124     JVM_REF_getField                = 1,
125     JVM_REF_getStatic               = 2,
126     JVM_REF_putField                = 3,
127     JVM_REF_putStatic               = 4,
128     JVM_REF_invokeVirtual           = 5,
129     JVM_REF_invokeStatic            = 6,
130     JVM_REF_invokeSpecial           = 7,
131     JVM_REF_newInvokeSpecial        = 8,
132     JVM_REF_invokeInterface         = 9
133 };
134 
135 /* StackMapTable type item numbers */
136 
137 enum {
138     JVM_ITEM_Top                = 0,
139     JVM_ITEM_Integer            = 1,
140     JVM_ITEM_Float              = 2,
141     JVM_ITEM_Double             = 3,
142     JVM_ITEM_Long               = 4,
143     JVM_ITEM_Null               = 5,
144     JVM_ITEM_UninitializedThis  = 6,
145     JVM_ITEM_Object             = 7,
146     JVM_ITEM_Uninitialized      = 8
147 };
148 
149 /* Type signatures */
150 
151 enum {
152     JVM_SIGNATURE_SLASH         = '/',
153     JVM_SIGNATURE_DOT           = '.',
154     JVM_SIGNATURE_SPECIAL       = '<',
155     JVM_SIGNATURE_ENDSPECIAL    = '>',
156     JVM_SIGNATURE_ARRAY         = '[',
157     JVM_SIGNATURE_BYTE          = 'B',
158     JVM_SIGNATURE_CHAR          = 'C',
159     JVM_SIGNATURE_CLASS         = 'L',
160     JVM_SIGNATURE_PRIMITIVE_OBJECT = 'Q',
161     JVM_SIGNATURE_ENDCLASS      = ';',
162     JVM_SIGNATURE_ENUM          = 'E',
163     JVM_SIGNATURE_FLOAT         = 'F',
164     JVM_SIGNATURE_DOUBLE        = 'D',
165     JVM_SIGNATURE_FUNC          = '(',
166     JVM_SIGNATURE_ENDFUNC       = ')',
167     JVM_SIGNATURE_INT           = 'I',
168     JVM_SIGNATURE_LONG          = 'J',
169     JVM_SIGNATURE_SHORT         = 'S',
170     JVM_SIGNATURE_VOID          = 'V',
171     JVM_SIGNATURE_BOOLEAN       = 'Z'
172 };
173 
174 /* Opcodes */
175 
176 enum {
177     JVM_OPC_nop                 = 0,
178     JVM_OPC_aconst_null         = 1,
179     JVM_OPC_iconst_m1           = 2,
180     JVM_OPC_iconst_0            = 3,
< prev index next >