jpayne@69
|
1 /*
|
jpayne@69
|
2 * Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
|
jpayne@69
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
jpayne@69
|
4 *
|
jpayne@69
|
5 * This code is free software; you can redistribute it and/or modify it
|
jpayne@69
|
6 * under the terms of the GNU General Public License version 2 only, as
|
jpayne@69
|
7 * published by the Free Software Foundation. Oracle designates this
|
jpayne@69
|
8 * particular file as subject to the "Classpath" exception as provided
|
jpayne@69
|
9 * by Oracle in the LICENSE file that accompanied this code.
|
jpayne@69
|
10 *
|
jpayne@69
|
11 * This code is distributed in the hope that it will be useful, but WITHOUT
|
jpayne@69
|
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
jpayne@69
|
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
jpayne@69
|
14 * version 2 for more details (a copy is included in the LICENSE file that
|
jpayne@69
|
15 * accompanied this code).
|
jpayne@69
|
16 *
|
jpayne@69
|
17 * You should have received a copy of the GNU General Public License version
|
jpayne@69
|
18 * 2 along with this work; if not, write to the Free Software Foundation,
|
jpayne@69
|
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
jpayne@69
|
20 *
|
jpayne@69
|
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
jpayne@69
|
22 * or visit www.oracle.com if you need additional information or have any
|
jpayne@69
|
23 * questions.
|
jpayne@69
|
24 */
|
jpayne@69
|
25
|
jpayne@69
|
26 #ifndef CLASSFILE_CONSTANTS_H
|
jpayne@69
|
27 #define CLASSFILE_CONSTANTS_H
|
jpayne@69
|
28
|
jpayne@69
|
29 #ifdef __cplusplus
|
jpayne@69
|
30 extern "C" {
|
jpayne@69
|
31 #endif
|
jpayne@69
|
32
|
jpayne@69
|
33 /* Classfile version number for this information */
|
jpayne@69
|
34 #define JVM_CLASSFILE_MAJOR_VERSION 55
|
jpayne@69
|
35 #define JVM_CLASSFILE_MINOR_VERSION 0
|
jpayne@69
|
36
|
jpayne@69
|
37 /* Flags */
|
jpayne@69
|
38
|
jpayne@69
|
39 enum {
|
jpayne@69
|
40 JVM_ACC_PUBLIC = 0x0001,
|
jpayne@69
|
41 JVM_ACC_PRIVATE = 0x0002,
|
jpayne@69
|
42 JVM_ACC_PROTECTED = 0x0004,
|
jpayne@69
|
43 JVM_ACC_STATIC = 0x0008,
|
jpayne@69
|
44 JVM_ACC_FINAL = 0x0010,
|
jpayne@69
|
45 JVM_ACC_SYNCHRONIZED = 0x0020,
|
jpayne@69
|
46 JVM_ACC_SUPER = 0x0020,
|
jpayne@69
|
47 JVM_ACC_VOLATILE = 0x0040,
|
jpayne@69
|
48 JVM_ACC_BRIDGE = 0x0040,
|
jpayne@69
|
49 JVM_ACC_TRANSIENT = 0x0080,
|
jpayne@69
|
50 JVM_ACC_VARARGS = 0x0080,
|
jpayne@69
|
51 JVM_ACC_NATIVE = 0x0100,
|
jpayne@69
|
52 JVM_ACC_INTERFACE = 0x0200,
|
jpayne@69
|
53 JVM_ACC_ABSTRACT = 0x0400,
|
jpayne@69
|
54 JVM_ACC_STRICT = 0x0800,
|
jpayne@69
|
55 JVM_ACC_SYNTHETIC = 0x1000,
|
jpayne@69
|
56 JVM_ACC_ANNOTATION = 0x2000,
|
jpayne@69
|
57 JVM_ACC_ENUM = 0x4000,
|
jpayne@69
|
58 JVM_ACC_MODULE = 0x8000
|
jpayne@69
|
59 };
|
jpayne@69
|
60
|
jpayne@69
|
61 #define JVM_ACC_PUBLIC_BIT 0
|
jpayne@69
|
62 #define JVM_ACC_PRIVATE_BIT 1
|
jpayne@69
|
63 #define JVM_ACC_PROTECTED_BIT 2
|
jpayne@69
|
64 #define JVM_ACC_STATIC_BIT 3
|
jpayne@69
|
65 #define JVM_ACC_FINAL_BIT 4
|
jpayne@69
|
66 #define JVM_ACC_SYNCHRONIZED_BIT 5
|
jpayne@69
|
67 #define JVM_ACC_SUPER_BIT 5
|
jpayne@69
|
68 #define JVM_ACC_VOLATILE_BIT 6
|
jpayne@69
|
69 #define JVM_ACC_BRIDGE_BIT 6
|
jpayne@69
|
70 #define JVM_ACC_TRANSIENT_BIT 7
|
jpayne@69
|
71 #define JVM_ACC_VARARGS_BIT 7
|
jpayne@69
|
72 #define JVM_ACC_NATIVE_BIT 8
|
jpayne@69
|
73 #define JVM_ACC_INTERFACE_BIT 9
|
jpayne@69
|
74 #define JVM_ACC_ABSTRACT_BIT 10
|
jpayne@69
|
75 #define JVM_ACC_STRICT_BIT 11
|
jpayne@69
|
76 #define JVM_ACC_SYNTHETIC_BIT 12
|
jpayne@69
|
77 #define JVM_ACC_ANNOTATION_BIT 13
|
jpayne@69
|
78 #define JVM_ACC_ENUM_BIT 14
|
jpayne@69
|
79
|
jpayne@69
|
80 /* Used in newarray instruction. */
|
jpayne@69
|
81
|
jpayne@69
|
82 enum {
|
jpayne@69
|
83 JVM_T_BOOLEAN = 4,
|
jpayne@69
|
84 JVM_T_CHAR = 5,
|
jpayne@69
|
85 JVM_T_FLOAT = 6,
|
jpayne@69
|
86 JVM_T_DOUBLE = 7,
|
jpayne@69
|
87 JVM_T_BYTE = 8,
|
jpayne@69
|
88 JVM_T_SHORT = 9,
|
jpayne@69
|
89 JVM_T_INT = 10,
|
jpayne@69
|
90 JVM_T_LONG = 11
|
jpayne@69
|
91 };
|
jpayne@69
|
92
|
jpayne@69
|
93 /* Constant Pool Entries */
|
jpayne@69
|
94
|
jpayne@69
|
95 enum {
|
jpayne@69
|
96 JVM_CONSTANT_Utf8 = 1,
|
jpayne@69
|
97 JVM_CONSTANT_Unicode = 2, /* unused */
|
jpayne@69
|
98 JVM_CONSTANT_Integer = 3,
|
jpayne@69
|
99 JVM_CONSTANT_Float = 4,
|
jpayne@69
|
100 JVM_CONSTANT_Long = 5,
|
jpayne@69
|
101 JVM_CONSTANT_Double = 6,
|
jpayne@69
|
102 JVM_CONSTANT_Class = 7,
|
jpayne@69
|
103 JVM_CONSTANT_String = 8,
|
jpayne@69
|
104 JVM_CONSTANT_Fieldref = 9,
|
jpayne@69
|
105 JVM_CONSTANT_Methodref = 10,
|
jpayne@69
|
106 JVM_CONSTANT_InterfaceMethodref = 11,
|
jpayne@69
|
107 JVM_CONSTANT_NameAndType = 12,
|
jpayne@69
|
108 JVM_CONSTANT_MethodHandle = 15, // JSR 292
|
jpayne@69
|
109 JVM_CONSTANT_MethodType = 16, // JSR 292
|
jpayne@69
|
110 JVM_CONSTANT_Dynamic = 17,
|
jpayne@69
|
111 JVM_CONSTANT_InvokeDynamic = 18,
|
jpayne@69
|
112 JVM_CONSTANT_ExternalMax = 18
|
jpayne@69
|
113 };
|
jpayne@69
|
114
|
jpayne@69
|
115 /* JVM_CONSTANT_MethodHandle subtypes */
|
jpayne@69
|
116 enum {
|
jpayne@69
|
117 JVM_REF_getField = 1,
|
jpayne@69
|
118 JVM_REF_getStatic = 2,
|
jpayne@69
|
119 JVM_REF_putField = 3,
|
jpayne@69
|
120 JVM_REF_putStatic = 4,
|
jpayne@69
|
121 JVM_REF_invokeVirtual = 5,
|
jpayne@69
|
122 JVM_REF_invokeStatic = 6,
|
jpayne@69
|
123 JVM_REF_invokeSpecial = 7,
|
jpayne@69
|
124 JVM_REF_newInvokeSpecial = 8,
|
jpayne@69
|
125 JVM_REF_invokeInterface = 9
|
jpayne@69
|
126 };
|
jpayne@69
|
127
|
jpayne@69
|
128 /* StackMapTable type item numbers */
|
jpayne@69
|
129
|
jpayne@69
|
130 enum {
|
jpayne@69
|
131 JVM_ITEM_Top = 0,
|
jpayne@69
|
132 JVM_ITEM_Integer = 1,
|
jpayne@69
|
133 JVM_ITEM_Float = 2,
|
jpayne@69
|
134 JVM_ITEM_Double = 3,
|
jpayne@69
|
135 JVM_ITEM_Long = 4,
|
jpayne@69
|
136 JVM_ITEM_Null = 5,
|
jpayne@69
|
137 JVM_ITEM_UninitializedThis = 6,
|
jpayne@69
|
138 JVM_ITEM_Object = 7,
|
jpayne@69
|
139 JVM_ITEM_Uninitialized = 8
|
jpayne@69
|
140 };
|
jpayne@69
|
141
|
jpayne@69
|
142 /* Type signatures */
|
jpayne@69
|
143
|
jpayne@69
|
144 enum {
|
jpayne@69
|
145 JVM_SIGNATURE_ARRAY = '[',
|
jpayne@69
|
146 JVM_SIGNATURE_BYTE = 'B',
|
jpayne@69
|
147 JVM_SIGNATURE_CHAR = 'C',
|
jpayne@69
|
148 JVM_SIGNATURE_CLASS = 'L',
|
jpayne@69
|
149 JVM_SIGNATURE_ENDCLASS = ';',
|
jpayne@69
|
150 JVM_SIGNATURE_ENUM = 'E',
|
jpayne@69
|
151 JVM_SIGNATURE_FLOAT = 'F',
|
jpayne@69
|
152 JVM_SIGNATURE_DOUBLE = 'D',
|
jpayne@69
|
153 JVM_SIGNATURE_FUNC = '(',
|
jpayne@69
|
154 JVM_SIGNATURE_ENDFUNC = ')',
|
jpayne@69
|
155 JVM_SIGNATURE_INT = 'I',
|
jpayne@69
|
156 JVM_SIGNATURE_LONG = 'J',
|
jpayne@69
|
157 JVM_SIGNATURE_SHORT = 'S',
|
jpayne@69
|
158 JVM_SIGNATURE_VOID = 'V',
|
jpayne@69
|
159 JVM_SIGNATURE_BOOLEAN = 'Z'
|
jpayne@69
|
160 };
|
jpayne@69
|
161
|
jpayne@69
|
162 /* Opcodes */
|
jpayne@69
|
163
|
jpayne@69
|
164 enum {
|
jpayne@69
|
165 JVM_OPC_nop = 0,
|
jpayne@69
|
166 JVM_OPC_aconst_null = 1,
|
jpayne@69
|
167 JVM_OPC_iconst_m1 = 2,
|
jpayne@69
|
168 JVM_OPC_iconst_0 = 3,
|
jpayne@69
|
169 JVM_OPC_iconst_1 = 4,
|
jpayne@69
|
170 JVM_OPC_iconst_2 = 5,
|
jpayne@69
|
171 JVM_OPC_iconst_3 = 6,
|
jpayne@69
|
172 JVM_OPC_iconst_4 = 7,
|
jpayne@69
|
173 JVM_OPC_iconst_5 = 8,
|
jpayne@69
|
174 JVM_OPC_lconst_0 = 9,
|
jpayne@69
|
175 JVM_OPC_lconst_1 = 10,
|
jpayne@69
|
176 JVM_OPC_fconst_0 = 11,
|
jpayne@69
|
177 JVM_OPC_fconst_1 = 12,
|
jpayne@69
|
178 JVM_OPC_fconst_2 = 13,
|
jpayne@69
|
179 JVM_OPC_dconst_0 = 14,
|
jpayne@69
|
180 JVM_OPC_dconst_1 = 15,
|
jpayne@69
|
181 JVM_OPC_bipush = 16,
|
jpayne@69
|
182 JVM_OPC_sipush = 17,
|
jpayne@69
|
183 JVM_OPC_ldc = 18,
|
jpayne@69
|
184 JVM_OPC_ldc_w = 19,
|
jpayne@69
|
185 JVM_OPC_ldc2_w = 20,
|
jpayne@69
|
186 JVM_OPC_iload = 21,
|
jpayne@69
|
187 JVM_OPC_lload = 22,
|
jpayne@69
|
188 JVM_OPC_fload = 23,
|
jpayne@69
|
189 JVM_OPC_dload = 24,
|
jpayne@69
|
190 JVM_OPC_aload = 25,
|
jpayne@69
|
191 JVM_OPC_iload_0 = 26,
|
jpayne@69
|
192 JVM_OPC_iload_1 = 27,
|
jpayne@69
|
193 JVM_OPC_iload_2 = 28,
|
jpayne@69
|
194 JVM_OPC_iload_3 = 29,
|
jpayne@69
|
195 JVM_OPC_lload_0 = 30,
|
jpayne@69
|
196 JVM_OPC_lload_1 = 31,
|
jpayne@69
|
197 JVM_OPC_lload_2 = 32,
|
jpayne@69
|
198 JVM_OPC_lload_3 = 33,
|
jpayne@69
|
199 JVM_OPC_fload_0 = 34,
|
jpayne@69
|
200 JVM_OPC_fload_1 = 35,
|
jpayne@69
|
201 JVM_OPC_fload_2 = 36,
|
jpayne@69
|
202 JVM_OPC_fload_3 = 37,
|
jpayne@69
|
203 JVM_OPC_dload_0 = 38,
|
jpayne@69
|
204 JVM_OPC_dload_1 = 39,
|
jpayne@69
|
205 JVM_OPC_dload_2 = 40,
|
jpayne@69
|
206 JVM_OPC_dload_3 = 41,
|
jpayne@69
|
207 JVM_OPC_aload_0 = 42,
|
jpayne@69
|
208 JVM_OPC_aload_1 = 43,
|
jpayne@69
|
209 JVM_OPC_aload_2 = 44,
|
jpayne@69
|
210 JVM_OPC_aload_3 = 45,
|
jpayne@69
|
211 JVM_OPC_iaload = 46,
|
jpayne@69
|
212 JVM_OPC_laload = 47,
|
jpayne@69
|
213 JVM_OPC_faload = 48,
|
jpayne@69
|
214 JVM_OPC_daload = 49,
|
jpayne@69
|
215 JVM_OPC_aaload = 50,
|
jpayne@69
|
216 JVM_OPC_baload = 51,
|
jpayne@69
|
217 JVM_OPC_caload = 52,
|
jpayne@69
|
218 JVM_OPC_saload = 53,
|
jpayne@69
|
219 JVM_OPC_istore = 54,
|
jpayne@69
|
220 JVM_OPC_lstore = 55,
|
jpayne@69
|
221 JVM_OPC_fstore = 56,
|
jpayne@69
|
222 JVM_OPC_dstore = 57,
|
jpayne@69
|
223 JVM_OPC_astore = 58,
|
jpayne@69
|
224 JVM_OPC_istore_0 = 59,
|
jpayne@69
|
225 JVM_OPC_istore_1 = 60,
|
jpayne@69
|
226 JVM_OPC_istore_2 = 61,
|
jpayne@69
|
227 JVM_OPC_istore_3 = 62,
|
jpayne@69
|
228 JVM_OPC_lstore_0 = 63,
|
jpayne@69
|
229 JVM_OPC_lstore_1 = 64,
|
jpayne@69
|
230 JVM_OPC_lstore_2 = 65,
|
jpayne@69
|
231 JVM_OPC_lstore_3 = 66,
|
jpayne@69
|
232 JVM_OPC_fstore_0 = 67,
|
jpayne@69
|
233 JVM_OPC_fstore_1 = 68,
|
jpayne@69
|
234 JVM_OPC_fstore_2 = 69,
|
jpayne@69
|
235 JVM_OPC_fstore_3 = 70,
|
jpayne@69
|
236 JVM_OPC_dstore_0 = 71,
|
jpayne@69
|
237 JVM_OPC_dstore_1 = 72,
|
jpayne@69
|
238 JVM_OPC_dstore_2 = 73,
|
jpayne@69
|
239 JVM_OPC_dstore_3 = 74,
|
jpayne@69
|
240 JVM_OPC_astore_0 = 75,
|
jpayne@69
|
241 JVM_OPC_astore_1 = 76,
|
jpayne@69
|
242 JVM_OPC_astore_2 = 77,
|
jpayne@69
|
243 JVM_OPC_astore_3 = 78,
|
jpayne@69
|
244 JVM_OPC_iastore = 79,
|
jpayne@69
|
245 JVM_OPC_lastore = 80,
|
jpayne@69
|
246 JVM_OPC_fastore = 81,
|
jpayne@69
|
247 JVM_OPC_dastore = 82,
|
jpayne@69
|
248 JVM_OPC_aastore = 83,
|
jpayne@69
|
249 JVM_OPC_bastore = 84,
|
jpayne@69
|
250 JVM_OPC_castore = 85,
|
jpayne@69
|
251 JVM_OPC_sastore = 86,
|
jpayne@69
|
252 JVM_OPC_pop = 87,
|
jpayne@69
|
253 JVM_OPC_pop2 = 88,
|
jpayne@69
|
254 JVM_OPC_dup = 89,
|
jpayne@69
|
255 JVM_OPC_dup_x1 = 90,
|
jpayne@69
|
256 JVM_OPC_dup_x2 = 91,
|
jpayne@69
|
257 JVM_OPC_dup2 = 92,
|
jpayne@69
|
258 JVM_OPC_dup2_x1 = 93,
|
jpayne@69
|
259 JVM_OPC_dup2_x2 = 94,
|
jpayne@69
|
260 JVM_OPC_swap = 95,
|
jpayne@69
|
261 JVM_OPC_iadd = 96,
|
jpayne@69
|
262 JVM_OPC_ladd = 97,
|
jpayne@69
|
263 JVM_OPC_fadd = 98,
|
jpayne@69
|
264 JVM_OPC_dadd = 99,
|
jpayne@69
|
265 JVM_OPC_isub = 100,
|
jpayne@69
|
266 JVM_OPC_lsub = 101,
|
jpayne@69
|
267 JVM_OPC_fsub = 102,
|
jpayne@69
|
268 JVM_OPC_dsub = 103,
|
jpayne@69
|
269 JVM_OPC_imul = 104,
|
jpayne@69
|
270 JVM_OPC_lmul = 105,
|
jpayne@69
|
271 JVM_OPC_fmul = 106,
|
jpayne@69
|
272 JVM_OPC_dmul = 107,
|
jpayne@69
|
273 JVM_OPC_idiv = 108,
|
jpayne@69
|
274 JVM_OPC_ldiv = 109,
|
jpayne@69
|
275 JVM_OPC_fdiv = 110,
|
jpayne@69
|
276 JVM_OPC_ddiv = 111,
|
jpayne@69
|
277 JVM_OPC_irem = 112,
|
jpayne@69
|
278 JVM_OPC_lrem = 113,
|
jpayne@69
|
279 JVM_OPC_frem = 114,
|
jpayne@69
|
280 JVM_OPC_drem = 115,
|
jpayne@69
|
281 JVM_OPC_ineg = 116,
|
jpayne@69
|
282 JVM_OPC_lneg = 117,
|
jpayne@69
|
283 JVM_OPC_fneg = 118,
|
jpayne@69
|
284 JVM_OPC_dneg = 119,
|
jpayne@69
|
285 JVM_OPC_ishl = 120,
|
jpayne@69
|
286 JVM_OPC_lshl = 121,
|
jpayne@69
|
287 JVM_OPC_ishr = 122,
|
jpayne@69
|
288 JVM_OPC_lshr = 123,
|
jpayne@69
|
289 JVM_OPC_iushr = 124,
|
jpayne@69
|
290 JVM_OPC_lushr = 125,
|
jpayne@69
|
291 JVM_OPC_iand = 126,
|
jpayne@69
|
292 JVM_OPC_land = 127,
|
jpayne@69
|
293 JVM_OPC_ior = 128,
|
jpayne@69
|
294 JVM_OPC_lor = 129,
|
jpayne@69
|
295 JVM_OPC_ixor = 130,
|
jpayne@69
|
296 JVM_OPC_lxor = 131,
|
jpayne@69
|
297 JVM_OPC_iinc = 132,
|
jpayne@69
|
298 JVM_OPC_i2l = 133,
|
jpayne@69
|
299 JVM_OPC_i2f = 134,
|
jpayne@69
|
300 JVM_OPC_i2d = 135,
|
jpayne@69
|
301 JVM_OPC_l2i = 136,
|
jpayne@69
|
302 JVM_OPC_l2f = 137,
|
jpayne@69
|
303 JVM_OPC_l2d = 138,
|
jpayne@69
|
304 JVM_OPC_f2i = 139,
|
jpayne@69
|
305 JVM_OPC_f2l = 140,
|
jpayne@69
|
306 JVM_OPC_f2d = 141,
|
jpayne@69
|
307 JVM_OPC_d2i = 142,
|
jpayne@69
|
308 JVM_OPC_d2l = 143,
|
jpayne@69
|
309 JVM_OPC_d2f = 144,
|
jpayne@69
|
310 JVM_OPC_i2b = 145,
|
jpayne@69
|
311 JVM_OPC_i2c = 146,
|
jpayne@69
|
312 JVM_OPC_i2s = 147,
|
jpayne@69
|
313 JVM_OPC_lcmp = 148,
|
jpayne@69
|
314 JVM_OPC_fcmpl = 149,
|
jpayne@69
|
315 JVM_OPC_fcmpg = 150,
|
jpayne@69
|
316 JVM_OPC_dcmpl = 151,
|
jpayne@69
|
317 JVM_OPC_dcmpg = 152,
|
jpayne@69
|
318 JVM_OPC_ifeq = 153,
|
jpayne@69
|
319 JVM_OPC_ifne = 154,
|
jpayne@69
|
320 JVM_OPC_iflt = 155,
|
jpayne@69
|
321 JVM_OPC_ifge = 156,
|
jpayne@69
|
322 JVM_OPC_ifgt = 157,
|
jpayne@69
|
323 JVM_OPC_ifle = 158,
|
jpayne@69
|
324 JVM_OPC_if_icmpeq = 159,
|
jpayne@69
|
325 JVM_OPC_if_icmpne = 160,
|
jpayne@69
|
326 JVM_OPC_if_icmplt = 161,
|
jpayne@69
|
327 JVM_OPC_if_icmpge = 162,
|
jpayne@69
|
328 JVM_OPC_if_icmpgt = 163,
|
jpayne@69
|
329 JVM_OPC_if_icmple = 164,
|
jpayne@69
|
330 JVM_OPC_if_acmpeq = 165,
|
jpayne@69
|
331 JVM_OPC_if_acmpne = 166,
|
jpayne@69
|
332 JVM_OPC_goto = 167,
|
jpayne@69
|
333 JVM_OPC_jsr = 168,
|
jpayne@69
|
334 JVM_OPC_ret = 169,
|
jpayne@69
|
335 JVM_OPC_tableswitch = 170,
|
jpayne@69
|
336 JVM_OPC_lookupswitch = 171,
|
jpayne@69
|
337 JVM_OPC_ireturn = 172,
|
jpayne@69
|
338 JVM_OPC_lreturn = 173,
|
jpayne@69
|
339 JVM_OPC_freturn = 174,
|
jpayne@69
|
340 JVM_OPC_dreturn = 175,
|
jpayne@69
|
341 JVM_OPC_areturn = 176,
|
jpayne@69
|
342 JVM_OPC_return = 177,
|
jpayne@69
|
343 JVM_OPC_getstatic = 178,
|
jpayne@69
|
344 JVM_OPC_putstatic = 179,
|
jpayne@69
|
345 JVM_OPC_getfield = 180,
|
jpayne@69
|
346 JVM_OPC_putfield = 181,
|
jpayne@69
|
347 JVM_OPC_invokevirtual = 182,
|
jpayne@69
|
348 JVM_OPC_invokespecial = 183,
|
jpayne@69
|
349 JVM_OPC_invokestatic = 184,
|
jpayne@69
|
350 JVM_OPC_invokeinterface = 185,
|
jpayne@69
|
351 JVM_OPC_invokedynamic = 186,
|
jpayne@69
|
352 JVM_OPC_new = 187,
|
jpayne@69
|
353 JVM_OPC_newarray = 188,
|
jpayne@69
|
354 JVM_OPC_anewarray = 189,
|
jpayne@69
|
355 JVM_OPC_arraylength = 190,
|
jpayne@69
|
356 JVM_OPC_athrow = 191,
|
jpayne@69
|
357 JVM_OPC_checkcast = 192,
|
jpayne@69
|
358 JVM_OPC_instanceof = 193,
|
jpayne@69
|
359 JVM_OPC_monitorenter = 194,
|
jpayne@69
|
360 JVM_OPC_monitorexit = 195,
|
jpayne@69
|
361 JVM_OPC_wide = 196,
|
jpayne@69
|
362 JVM_OPC_multianewarray = 197,
|
jpayne@69
|
363 JVM_OPC_ifnull = 198,
|
jpayne@69
|
364 JVM_OPC_ifnonnull = 199,
|
jpayne@69
|
365 JVM_OPC_goto_w = 200,
|
jpayne@69
|
366 JVM_OPC_jsr_w = 201,
|
jpayne@69
|
367 JVM_OPC_MAX = 201
|
jpayne@69
|
368 };
|
jpayne@69
|
369
|
jpayne@69
|
370 /* Opcode length initializer, use with something like:
|
jpayne@69
|
371 * unsigned char opcode_length[JVM_OPC_MAX+1] = JVM_OPCODE_LENGTH_INITIALIZER;
|
jpayne@69
|
372 */
|
jpayne@69
|
373 #define JVM_OPCODE_LENGTH_INITIALIZER { \
|
jpayne@69
|
374 1, /* nop */ \
|
jpayne@69
|
375 1, /* aconst_null */ \
|
jpayne@69
|
376 1, /* iconst_m1 */ \
|
jpayne@69
|
377 1, /* iconst_0 */ \
|
jpayne@69
|
378 1, /* iconst_1 */ \
|
jpayne@69
|
379 1, /* iconst_2 */ \
|
jpayne@69
|
380 1, /* iconst_3 */ \
|
jpayne@69
|
381 1, /* iconst_4 */ \
|
jpayne@69
|
382 1, /* iconst_5 */ \
|
jpayne@69
|
383 1, /* lconst_0 */ \
|
jpayne@69
|
384 1, /* lconst_1 */ \
|
jpayne@69
|
385 1, /* fconst_0 */ \
|
jpayne@69
|
386 1, /* fconst_1 */ \
|
jpayne@69
|
387 1, /* fconst_2 */ \
|
jpayne@69
|
388 1, /* dconst_0 */ \
|
jpayne@69
|
389 1, /* dconst_1 */ \
|
jpayne@69
|
390 2, /* bipush */ \
|
jpayne@69
|
391 3, /* sipush */ \
|
jpayne@69
|
392 2, /* ldc */ \
|
jpayne@69
|
393 3, /* ldc_w */ \
|
jpayne@69
|
394 3, /* ldc2_w */ \
|
jpayne@69
|
395 2, /* iload */ \
|
jpayne@69
|
396 2, /* lload */ \
|
jpayne@69
|
397 2, /* fload */ \
|
jpayne@69
|
398 2, /* dload */ \
|
jpayne@69
|
399 2, /* aload */ \
|
jpayne@69
|
400 1, /* iload_0 */ \
|
jpayne@69
|
401 1, /* iload_1 */ \
|
jpayne@69
|
402 1, /* iload_2 */ \
|
jpayne@69
|
403 1, /* iload_3 */ \
|
jpayne@69
|
404 1, /* lload_0 */ \
|
jpayne@69
|
405 1, /* lload_1 */ \
|
jpayne@69
|
406 1, /* lload_2 */ \
|
jpayne@69
|
407 1, /* lload_3 */ \
|
jpayne@69
|
408 1, /* fload_0 */ \
|
jpayne@69
|
409 1, /* fload_1 */ \
|
jpayne@69
|
410 1, /* fload_2 */ \
|
jpayne@69
|
411 1, /* fload_3 */ \
|
jpayne@69
|
412 1, /* dload_0 */ \
|
jpayne@69
|
413 1, /* dload_1 */ \
|
jpayne@69
|
414 1, /* dload_2 */ \
|
jpayne@69
|
415 1, /* dload_3 */ \
|
jpayne@69
|
416 1, /* aload_0 */ \
|
jpayne@69
|
417 1, /* aload_1 */ \
|
jpayne@69
|
418 1, /* aload_2 */ \
|
jpayne@69
|
419 1, /* aload_3 */ \
|
jpayne@69
|
420 1, /* iaload */ \
|
jpayne@69
|
421 1, /* laload */ \
|
jpayne@69
|
422 1, /* faload */ \
|
jpayne@69
|
423 1, /* daload */ \
|
jpayne@69
|
424 1, /* aaload */ \
|
jpayne@69
|
425 1, /* baload */ \
|
jpayne@69
|
426 1, /* caload */ \
|
jpayne@69
|
427 1, /* saload */ \
|
jpayne@69
|
428 2, /* istore */ \
|
jpayne@69
|
429 2, /* lstore */ \
|
jpayne@69
|
430 2, /* fstore */ \
|
jpayne@69
|
431 2, /* dstore */ \
|
jpayne@69
|
432 2, /* astore */ \
|
jpayne@69
|
433 1, /* istore_0 */ \
|
jpayne@69
|
434 1, /* istore_1 */ \
|
jpayne@69
|
435 1, /* istore_2 */ \
|
jpayne@69
|
436 1, /* istore_3 */ \
|
jpayne@69
|
437 1, /* lstore_0 */ \
|
jpayne@69
|
438 1, /* lstore_1 */ \
|
jpayne@69
|
439 1, /* lstore_2 */ \
|
jpayne@69
|
440 1, /* lstore_3 */ \
|
jpayne@69
|
441 1, /* fstore_0 */ \
|
jpayne@69
|
442 1, /* fstore_1 */ \
|
jpayne@69
|
443 1, /* fstore_2 */ \
|
jpayne@69
|
444 1, /* fstore_3 */ \
|
jpayne@69
|
445 1, /* dstore_0 */ \
|
jpayne@69
|
446 1, /* dstore_1 */ \
|
jpayne@69
|
447 1, /* dstore_2 */ \
|
jpayne@69
|
448 1, /* dstore_3 */ \
|
jpayne@69
|
449 1, /* astore_0 */ \
|
jpayne@69
|
450 1, /* astore_1 */ \
|
jpayne@69
|
451 1, /* astore_2 */ \
|
jpayne@69
|
452 1, /* astore_3 */ \
|
jpayne@69
|
453 1, /* iastore */ \
|
jpayne@69
|
454 1, /* lastore */ \
|
jpayne@69
|
455 1, /* fastore */ \
|
jpayne@69
|
456 1, /* dastore */ \
|
jpayne@69
|
457 1, /* aastore */ \
|
jpayne@69
|
458 1, /* bastore */ \
|
jpayne@69
|
459 1, /* castore */ \
|
jpayne@69
|
460 1, /* sastore */ \
|
jpayne@69
|
461 1, /* pop */ \
|
jpayne@69
|
462 1, /* pop2 */ \
|
jpayne@69
|
463 1, /* dup */ \
|
jpayne@69
|
464 1, /* dup_x1 */ \
|
jpayne@69
|
465 1, /* dup_x2 */ \
|
jpayne@69
|
466 1, /* dup2 */ \
|
jpayne@69
|
467 1, /* dup2_x1 */ \
|
jpayne@69
|
468 1, /* dup2_x2 */ \
|
jpayne@69
|
469 1, /* swap */ \
|
jpayne@69
|
470 1, /* iadd */ \
|
jpayne@69
|
471 1, /* ladd */ \
|
jpayne@69
|
472 1, /* fadd */ \
|
jpayne@69
|
473 1, /* dadd */ \
|
jpayne@69
|
474 1, /* isub */ \
|
jpayne@69
|
475 1, /* lsub */ \
|
jpayne@69
|
476 1, /* fsub */ \
|
jpayne@69
|
477 1, /* dsub */ \
|
jpayne@69
|
478 1, /* imul */ \
|
jpayne@69
|
479 1, /* lmul */ \
|
jpayne@69
|
480 1, /* fmul */ \
|
jpayne@69
|
481 1, /* dmul */ \
|
jpayne@69
|
482 1, /* idiv */ \
|
jpayne@69
|
483 1, /* ldiv */ \
|
jpayne@69
|
484 1, /* fdiv */ \
|
jpayne@69
|
485 1, /* ddiv */ \
|
jpayne@69
|
486 1, /* irem */ \
|
jpayne@69
|
487 1, /* lrem */ \
|
jpayne@69
|
488 1, /* frem */ \
|
jpayne@69
|
489 1, /* drem */ \
|
jpayne@69
|
490 1, /* ineg */ \
|
jpayne@69
|
491 1, /* lneg */ \
|
jpayne@69
|
492 1, /* fneg */ \
|
jpayne@69
|
493 1, /* dneg */ \
|
jpayne@69
|
494 1, /* ishl */ \
|
jpayne@69
|
495 1, /* lshl */ \
|
jpayne@69
|
496 1, /* ishr */ \
|
jpayne@69
|
497 1, /* lshr */ \
|
jpayne@69
|
498 1, /* iushr */ \
|
jpayne@69
|
499 1, /* lushr */ \
|
jpayne@69
|
500 1, /* iand */ \
|
jpayne@69
|
501 1, /* land */ \
|
jpayne@69
|
502 1, /* ior */ \
|
jpayne@69
|
503 1, /* lor */ \
|
jpayne@69
|
504 1, /* ixor */ \
|
jpayne@69
|
505 1, /* lxor */ \
|
jpayne@69
|
506 3, /* iinc */ \
|
jpayne@69
|
507 1, /* i2l */ \
|
jpayne@69
|
508 1, /* i2f */ \
|
jpayne@69
|
509 1, /* i2d */ \
|
jpayne@69
|
510 1, /* l2i */ \
|
jpayne@69
|
511 1, /* l2f */ \
|
jpayne@69
|
512 1, /* l2d */ \
|
jpayne@69
|
513 1, /* f2i */ \
|
jpayne@69
|
514 1, /* f2l */ \
|
jpayne@69
|
515 1, /* f2d */ \
|
jpayne@69
|
516 1, /* d2i */ \
|
jpayne@69
|
517 1, /* d2l */ \
|
jpayne@69
|
518 1, /* d2f */ \
|
jpayne@69
|
519 1, /* i2b */ \
|
jpayne@69
|
520 1, /* i2c */ \
|
jpayne@69
|
521 1, /* i2s */ \
|
jpayne@69
|
522 1, /* lcmp */ \
|
jpayne@69
|
523 1, /* fcmpl */ \
|
jpayne@69
|
524 1, /* fcmpg */ \
|
jpayne@69
|
525 1, /* dcmpl */ \
|
jpayne@69
|
526 1, /* dcmpg */ \
|
jpayne@69
|
527 3, /* ifeq */ \
|
jpayne@69
|
528 3, /* ifne */ \
|
jpayne@69
|
529 3, /* iflt */ \
|
jpayne@69
|
530 3, /* ifge */ \
|
jpayne@69
|
531 3, /* ifgt */ \
|
jpayne@69
|
532 3, /* ifle */ \
|
jpayne@69
|
533 3, /* if_icmpeq */ \
|
jpayne@69
|
534 3, /* if_icmpne */ \
|
jpayne@69
|
535 3, /* if_icmplt */ \
|
jpayne@69
|
536 3, /* if_icmpge */ \
|
jpayne@69
|
537 3, /* if_icmpgt */ \
|
jpayne@69
|
538 3, /* if_icmple */ \
|
jpayne@69
|
539 3, /* if_acmpeq */ \
|
jpayne@69
|
540 3, /* if_acmpne */ \
|
jpayne@69
|
541 3, /* goto */ \
|
jpayne@69
|
542 3, /* jsr */ \
|
jpayne@69
|
543 2, /* ret */ \
|
jpayne@69
|
544 99, /* tableswitch */ \
|
jpayne@69
|
545 99, /* lookupswitch */ \
|
jpayne@69
|
546 1, /* ireturn */ \
|
jpayne@69
|
547 1, /* lreturn */ \
|
jpayne@69
|
548 1, /* freturn */ \
|
jpayne@69
|
549 1, /* dreturn */ \
|
jpayne@69
|
550 1, /* areturn */ \
|
jpayne@69
|
551 1, /* return */ \
|
jpayne@69
|
552 3, /* getstatic */ \
|
jpayne@69
|
553 3, /* putstatic */ \
|
jpayne@69
|
554 3, /* getfield */ \
|
jpayne@69
|
555 3, /* putfield */ \
|
jpayne@69
|
556 3, /* invokevirtual */ \
|
jpayne@69
|
557 3, /* invokespecial */ \
|
jpayne@69
|
558 3, /* invokestatic */ \
|
jpayne@69
|
559 5, /* invokeinterface */ \
|
jpayne@69
|
560 5, /* invokedynamic */ \
|
jpayne@69
|
561 3, /* new */ \
|
jpayne@69
|
562 2, /* newarray */ \
|
jpayne@69
|
563 3, /* anewarray */ \
|
jpayne@69
|
564 1, /* arraylength */ \
|
jpayne@69
|
565 1, /* athrow */ \
|
jpayne@69
|
566 3, /* checkcast */ \
|
jpayne@69
|
567 3, /* instanceof */ \
|
jpayne@69
|
568 1, /* monitorenter */ \
|
jpayne@69
|
569 1, /* monitorexit */ \
|
jpayne@69
|
570 0, /* wide */ \
|
jpayne@69
|
571 4, /* multianewarray */ \
|
jpayne@69
|
572 3, /* ifnull */ \
|
jpayne@69
|
573 3, /* ifnonnull */ \
|
jpayne@69
|
574 5, /* goto_w */ \
|
jpayne@69
|
575 5 /* jsr_w */ \
|
jpayne@69
|
576 }
|
jpayne@69
|
577
|
jpayne@69
|
578 #ifdef __cplusplus
|
jpayne@69
|
579 } /* extern "C" */
|
jpayne@69
|
580 #endif /* __cplusplus */
|
jpayne@69
|
581
|
jpayne@69
|
582 #endif /* CLASSFILE_CONSTANTS */
|