1 /*
2 * Copyright (c) 2001, 2020, 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.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
229 public static final int _newarray = 188; // 0xbc
230 public static final int _anewarray = 189; // 0xbd
231 public static final int _arraylength = 190; // 0xbe
232 public static final int _athrow = 191; // 0xbf
233 public static final int _checkcast = 192; // 0xc0
234 public static final int _instanceof = 193; // 0xc1
235 public static final int _monitorenter = 194; // 0xc2
236 public static final int _monitorexit = 195; // 0xc3
237 public static final int _wide = 196; // 0xc4
238 public static final int _multianewarray = 197; // 0xc5
239 public static final int _ifnull = 198; // 0xc6
240 public static final int _ifnonnull = 199; // 0xc7
241 public static final int _goto_w = 200; // 0xc8
242 public static final int _jsr_w = 201; // 0xc9
243 public static final int _breakpoint = 202; // 0xca
244
245 public static final int number_of_java_codes = 203;
246
247 // JVM bytecodes
248 public static final int _fast_agetfield = number_of_java_codes;
249 public static final int _fast_bgetfield = 204;
250 public static final int _fast_cgetfield = 205;
251 public static final int _fast_dgetfield = 206;
252 public static final int _fast_fgetfield = 207;
253 public static final int _fast_igetfield = 208;
254 public static final int _fast_lgetfield = 209;
255 public static final int _fast_sgetfield = 210;
256 public static final int _fast_aputfield = 211;
257 public static final int _fast_bputfield = 212;
258 public static final int _fast_zputfield = 213;
259 public static final int _fast_cputfield = 214;
260 public static final int _fast_dputfield = 215;
261 public static final int _fast_fputfield = 216;
262 public static final int _fast_iputfield = 217;
263 public static final int _fast_lputfield = 218;
264 public static final int _fast_sputfield = 219;
265 public static final int _fast_aload_0 = 220;
266 public static final int _fast_iaccess_0 = 221;
267 public static final int _fast_aaccess_0 = 222;
268 public static final int _fast_faccess_0 = 223;
269 public static final int _fast_iload = 224;
270 public static final int _fast_iload2 = 225;
271 public static final int _fast_icaload = 226;
272 public static final int _fast_invokevfinal = 227;
273 public static final int _fast_linearswitch = 228;
274 public static final int _fast_binaryswitch = 229;
275 public static final int _fast_aldc = 230;
276 public static final int _fast_aldc_w = 231;
277 public static final int _return_register_finalizer = 232;
278 public static final int _invokehandle = 233;
279
280 // Bytecodes rewritten at CDS dump time
281 public static final int _nofast_getfield = 234;
282 public static final int _nofast_putfield = 235;
283 public static final int _nofast_aload_0 = 236;
284 public static final int _nofast_iload = 237;
285 public static final int _shouldnotreachhere = 238; // For debugging
286
287 public static final int number_of_codes = 239;
288
289 // Flag bits derived from format strings, can_trap, can_rewrite, etc.:
290 // semantic flags:
291 static final int _bc_can_trap = 1<<0; // bytecode execution can trap or block
292 static final int _bc_can_rewrite = 1<<1; // bytecode execution has an alternate form
293
294 // format bits (determined only by the format string):
295 static final int _fmt_has_c = 1<<2; // constant, such as sipush "bcc"
296 static final int _fmt_has_j = 1<<3; // constant pool cache index, such as getfield "bjj"
297 static final int _fmt_has_k = 1<<4; // constant pool index, such as ldc "bk"
298 static final int _fmt_has_i = 1<<5; // local index, such as iload
299 static final int _fmt_has_o = 1<<6; // offset, such as ifeq
300 static final int _fmt_has_nbo = 1<<7; // contains native-order field(s)
301 static final int _fmt_has_u2 = 1<<8; // contains double-byte field(s)
302 static final int _fmt_has_u4 = 1<<9; // contains quad-byte field
303 static final int _fmt_not_variable = 1<<10; // not of variable length (simple or wide)
304 static final int _fmt_not_simple = 1<<11; // either wide or variable length
305 static final int _all_fmt_bits = (_fmt_not_simple*2 - _fmt_has_c);
306
307 // Example derived format syndromes:
759 def(_newarray , "newarray" , "bc" , null , BasicType.getTObject() , 0, true );
760 def(_anewarray , "anewarray" , "bkk" , null , BasicType.getTObject() , 0, true );
761 def(_arraylength , "arraylength" , "b" , null , BasicType.getTVoid() , 0, true );
762 def(_athrow , "athrow" , "b" , null , BasicType.getTVoid() , -1, true );
763 def(_checkcast , "checkcast" , "bkk" , null , BasicType.getTObject() , 0, true );
764 def(_instanceof , "instanceof" , "bkk" , null , BasicType.getTInt() , 0, true );
765 def(_monitorenter , "monitorenter" , "b" , null , BasicType.getTVoid() , -1, true );
766 def(_monitorexit , "monitorexit" , "b" , null , BasicType.getTVoid() , -1, true );
767 def(_wide , "wide" , "" , null , BasicType.getTVoid() , 0, false);
768 def(_multianewarray , "multianewarray" , "bkkc" , null , BasicType.getTObject() , 1, true );
769 def(_ifnull , "ifnull" , "boo" , null , BasicType.getTVoid() , -1, false);
770 def(_ifnonnull , "ifnonnull" , "boo" , null , BasicType.getTVoid() , -1, false);
771 def(_goto_w , "goto_w" , "boooo", null , BasicType.getTVoid() , 0, false);
772 def(_jsr_w , "jsr_w" , "boooo", null , BasicType.getTInt() , 0, false);
773 def(_breakpoint , "breakpoint" , "" , null , BasicType.getTVoid() , 0, true );
774
775 // JVM bytecodes
776 // bytecode bytecode name format wide f. result tp stk traps std code
777
778 def(_fast_agetfield , "fast_agetfield" , "bJJ" , null , BasicType.getTObject() , 0, true , _getfield );
779 def(_fast_bgetfield , "fast_bgetfield" , "bJJ" , null , BasicType.getTInt() , 0, true , _getfield );
780 def(_fast_cgetfield , "fast_cgetfield" , "bJJ" , null , BasicType.getTChar() , 0, true , _getfield );
781 def(_fast_dgetfield , "fast_dgetfield" , "bJJ" , null , BasicType.getTDouble() , 0, true , _getfield );
782 def(_fast_fgetfield , "fast_fgetfield" , "bJJ" , null , BasicType.getTFloat() , 0, true , _getfield );
783 def(_fast_igetfield , "fast_igetfield" , "bJJ" , null , BasicType.getTInt() , 0, true , _getfield );
784 def(_fast_lgetfield , "fast_lgetfield" , "bJJ" , null , BasicType.getTLong() , 0, true , _getfield );
785 def(_fast_sgetfield , "fast_sgetfield" , "bJJ" , null , BasicType.getTShort() , 0, true , _getfield );
786
787 def(_fast_aputfield , "fast_aputfield" , "bJJ" , null , BasicType.getTObject() , 0, true , _putfield );
788 def(_fast_bputfield , "fast_bputfield" , "bJJ" , null , BasicType.getTInt() , 0, true , _putfield );
789 def(_fast_zputfield , "fast_zputfield" , "bJJ" , null , BasicType.getTInt() , 0, true , _putfield );
790 def(_fast_cputfield , "fast_cputfield" , "bJJ" , null , BasicType.getTChar() , 0, true , _putfield );
791 def(_fast_dputfield , "fast_dputfield" , "bJJ" , null , BasicType.getTDouble() , 0, true , _putfield );
792 def(_fast_fputfield , "fast_fputfield" , "bJJ" , null , BasicType.getTFloat() , 0, true , _putfield );
793 def(_fast_iputfield , "fast_iputfield" , "bJJ" , null , BasicType.getTInt() , 0, true , _putfield );
794 def(_fast_lputfield , "fast_lputfield" , "bJJ" , null , BasicType.getTLong() , 0, true , _putfield );
795 def(_fast_sputfield , "fast_sputfield" , "bJJ" , null , BasicType.getTShort() , 0, true , _putfield );
796
797 def(_fast_aload_0 , "fast_aload_0" , "b" , null , BasicType.getTObject() , 1, true , _aload_0 );
798 def(_fast_iaccess_0 , "fast_iaccess_0" , "b_JJ" , null , BasicType.getTInt() , 1, true , _aload_0 );
799 def(_fast_aaccess_0 , "fast_aaccess_0" , "b_JJ" , null , BasicType.getTObject() , 1, true , _aload_0 );
800 def(_fast_faccess_0 , "fast_faccess_0" , "b_JJ" , null , BasicType.getTObject() , 1, true , _aload_0 );
801
802 def(_fast_iload , "fast_iload" , "bi" , null , BasicType.getTInt() , 1, false, _iload );
803 def(_fast_iload2 , "fast_iload2" , "bi_i" , null , BasicType.getTInt() , 2, false, _iload );
804 def(_fast_icaload , "fast_icaload" , "bi_" , null , BasicType.getTInt() , 0, false, _iload );
805
806 // Faster method invocation.
807 def(_fast_invokevfinal , "fast_invokevfinal" , "bJJ" , null , BasicType.getTIllegal(), -1, true, _invokevirtual );
|
1 /*
2 * Copyright (c) 2001, 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.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
229 public static final int _newarray = 188; // 0xbc
230 public static final int _anewarray = 189; // 0xbd
231 public static final int _arraylength = 190; // 0xbe
232 public static final int _athrow = 191; // 0xbf
233 public static final int _checkcast = 192; // 0xc0
234 public static final int _instanceof = 193; // 0xc1
235 public static final int _monitorenter = 194; // 0xc2
236 public static final int _monitorexit = 195; // 0xc3
237 public static final int _wide = 196; // 0xc4
238 public static final int _multianewarray = 197; // 0xc5
239 public static final int _ifnull = 198; // 0xc6
240 public static final int _ifnonnull = 199; // 0xc7
241 public static final int _goto_w = 200; // 0xc8
242 public static final int _jsr_w = 201; // 0xc9
243 public static final int _breakpoint = 202; // 0xca
244
245 public static final int number_of_java_codes = 203;
246
247 // JVM bytecodes
248 public static final int _fast_agetfield = number_of_java_codes;
249 public static final int _fast_vgetfield = 204;
250 public static final int _fast_bgetfield = 205;
251 public static final int _fast_cgetfield = 206;
252 public static final int _fast_dgetfield = 207;
253 public static final int _fast_fgetfield = 208;
254 public static final int _fast_igetfield = 209;
255 public static final int _fast_lgetfield = 210;
256 public static final int _fast_sgetfield = 211;
257 public static final int _fast_aputfield = 212;
258 public static final int _fast_vputfield = 213;
259 public static final int _fast_bputfield = 214;
260 public static final int _fast_zputfield = 215;
261 public static final int _fast_cputfield = 216;
262 public static final int _fast_dputfield = 217;
263 public static final int _fast_fputfield = 218;
264 public static final int _fast_iputfield = 219;
265 public static final int _fast_lputfield = 220;
266 public static final int _fast_sputfield = 221;
267 public static final int _fast_aload_0 = 222;
268 public static final int _fast_iaccess_0 = 223;
269 public static final int _fast_aaccess_0 = 224;
270 public static final int _fast_faccess_0 = 225;
271 public static final int _fast_iload = 226;
272 public static final int _fast_iload2 = 227;
273 public static final int _fast_icaload = 228;
274 public static final int _fast_invokevfinal = 229;
275 public static final int _fast_linearswitch = 230;
276 public static final int _fast_binaryswitch = 231;
277 public static final int _fast_aldc = 232;
278 public static final int _fast_aldc_w = 233;
279 public static final int _return_register_finalizer = 234;
280 public static final int _invokehandle = 235;
281
282 // Bytecodes rewritten at CDS dump time
283 public static final int _nofast_getfield = 236;
284 public static final int _nofast_putfield = 237;
285 public static final int _nofast_aload_0 = 238;
286 public static final int _nofast_iload = 239;
287 public static final int _shouldnotreachhere = 240; // For debugging
288
289 public static final int number_of_codes = 241;
290
291 // Flag bits derived from format strings, can_trap, can_rewrite, etc.:
292 // semantic flags:
293 static final int _bc_can_trap = 1<<0; // bytecode execution can trap or block
294 static final int _bc_can_rewrite = 1<<1; // bytecode execution has an alternate form
295
296 // format bits (determined only by the format string):
297 static final int _fmt_has_c = 1<<2; // constant, such as sipush "bcc"
298 static final int _fmt_has_j = 1<<3; // constant pool cache index, such as getfield "bjj"
299 static final int _fmt_has_k = 1<<4; // constant pool index, such as ldc "bk"
300 static final int _fmt_has_i = 1<<5; // local index, such as iload
301 static final int _fmt_has_o = 1<<6; // offset, such as ifeq
302 static final int _fmt_has_nbo = 1<<7; // contains native-order field(s)
303 static final int _fmt_has_u2 = 1<<8; // contains double-byte field(s)
304 static final int _fmt_has_u4 = 1<<9; // contains quad-byte field
305 static final int _fmt_not_variable = 1<<10; // not of variable length (simple or wide)
306 static final int _fmt_not_simple = 1<<11; // either wide or variable length
307 static final int _all_fmt_bits = (_fmt_not_simple*2 - _fmt_has_c);
308
309 // Example derived format syndromes:
761 def(_newarray , "newarray" , "bc" , null , BasicType.getTObject() , 0, true );
762 def(_anewarray , "anewarray" , "bkk" , null , BasicType.getTObject() , 0, true );
763 def(_arraylength , "arraylength" , "b" , null , BasicType.getTVoid() , 0, true );
764 def(_athrow , "athrow" , "b" , null , BasicType.getTVoid() , -1, true );
765 def(_checkcast , "checkcast" , "bkk" , null , BasicType.getTObject() , 0, true );
766 def(_instanceof , "instanceof" , "bkk" , null , BasicType.getTInt() , 0, true );
767 def(_monitorenter , "monitorenter" , "b" , null , BasicType.getTVoid() , -1, true );
768 def(_monitorexit , "monitorexit" , "b" , null , BasicType.getTVoid() , -1, true );
769 def(_wide , "wide" , "" , null , BasicType.getTVoid() , 0, false);
770 def(_multianewarray , "multianewarray" , "bkkc" , null , BasicType.getTObject() , 1, true );
771 def(_ifnull , "ifnull" , "boo" , null , BasicType.getTVoid() , -1, false);
772 def(_ifnonnull , "ifnonnull" , "boo" , null , BasicType.getTVoid() , -1, false);
773 def(_goto_w , "goto_w" , "boooo", null , BasicType.getTVoid() , 0, false);
774 def(_jsr_w , "jsr_w" , "boooo", null , BasicType.getTInt() , 0, false);
775 def(_breakpoint , "breakpoint" , "" , null , BasicType.getTVoid() , 0, true );
776
777 // JVM bytecodes
778 // bytecode bytecode name format wide f. result tp stk traps std code
779
780 def(_fast_agetfield , "fast_agetfield" , "bJJ" , null , BasicType.getTObject() , 0, true , _getfield );
781 def(_fast_vgetfield , "fast_vgetfield" , "bJJ" , null , BasicType.getTObject() , 0, true , _getfield );
782 def(_fast_bgetfield , "fast_bgetfield" , "bJJ" , null , BasicType.getTInt() , 0, true , _getfield );
783 def(_fast_cgetfield , "fast_cgetfield" , "bJJ" , null , BasicType.getTChar() , 0, true , _getfield );
784 def(_fast_dgetfield , "fast_dgetfield" , "bJJ" , null , BasicType.getTDouble() , 0, true , _getfield );
785 def(_fast_fgetfield , "fast_fgetfield" , "bJJ" , null , BasicType.getTFloat() , 0, true , _getfield );
786 def(_fast_igetfield , "fast_igetfield" , "bJJ" , null , BasicType.getTInt() , 0, true , _getfield );
787 def(_fast_lgetfield , "fast_lgetfield" , "bJJ" , null , BasicType.getTLong() , 0, true , _getfield );
788 def(_fast_sgetfield , "fast_sgetfield" , "bJJ" , null , BasicType.getTShort() , 0, true , _getfield );
789
790 def(_fast_aputfield , "fast_aputfield" , "bJJ" , null , BasicType.getTObject() , 0, true , _putfield );
791 def(_fast_vputfield , "fast_vputfield" , "bJJ" , null , BasicType.getTObject() , 0, true , _putfield );
792 def(_fast_bputfield , "fast_bputfield" , "bJJ" , null , BasicType.getTInt() , 0, true , _putfield );
793 def(_fast_zputfield , "fast_zputfield" , "bJJ" , null , BasicType.getTInt() , 0, true , _putfield );
794 def(_fast_cputfield , "fast_cputfield" , "bJJ" , null , BasicType.getTChar() , 0, true , _putfield );
795 def(_fast_dputfield , "fast_dputfield" , "bJJ" , null , BasicType.getTDouble() , 0, true , _putfield );
796 def(_fast_fputfield , "fast_fputfield" , "bJJ" , null , BasicType.getTFloat() , 0, true , _putfield );
797 def(_fast_iputfield , "fast_iputfield" , "bJJ" , null , BasicType.getTInt() , 0, true , _putfield );
798 def(_fast_lputfield , "fast_lputfield" , "bJJ" , null , BasicType.getTLong() , 0, true , _putfield );
799 def(_fast_sputfield , "fast_sputfield" , "bJJ" , null , BasicType.getTShort() , 0, true , _putfield );
800
801 def(_fast_aload_0 , "fast_aload_0" , "b" , null , BasicType.getTObject() , 1, true , _aload_0 );
802 def(_fast_iaccess_0 , "fast_iaccess_0" , "b_JJ" , null , BasicType.getTInt() , 1, true , _aload_0 );
803 def(_fast_aaccess_0 , "fast_aaccess_0" , "b_JJ" , null , BasicType.getTObject() , 1, true , _aload_0 );
804 def(_fast_faccess_0 , "fast_faccess_0" , "b_JJ" , null , BasicType.getTObject() , 1, true , _aload_0 );
805
806 def(_fast_iload , "fast_iload" , "bi" , null , BasicType.getTInt() , 1, false, _iload );
807 def(_fast_iload2 , "fast_iload2" , "bi_i" , null , BasicType.getTInt() , 2, false, _iload );
808 def(_fast_icaload , "fast_icaload" , "bi_" , null , BasicType.getTInt() , 0, false, _iload );
809
810 // Faster method invocation.
811 def(_fast_invokevfinal , "fast_invokevfinal" , "bJJ" , null , BasicType.getTIllegal(), -1, true, _invokevirtual );
|