| 1 | /* | 
|---|
| 2 | * Copyright (c) 1997, 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. | 
|---|
| 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 | * | 
|---|
| 23 | */ | 
|---|
| 24 |  | 
|---|
| 25 | #include "precompiled.hpp" | 
|---|
| 26 | #include "gc/shared/barrierSet.hpp" | 
|---|
| 27 | #include "interpreter/interp_masm.hpp" | 
|---|
| 28 | #include "interpreter/templateTable.hpp" | 
|---|
| 29 | #include "runtime/timerTrace.hpp" | 
|---|
| 30 |  | 
|---|
| 31 | #ifdef CC_INTERP | 
|---|
| 32 |  | 
|---|
| 33 | void templateTable_init() { | 
|---|
| 34 | } | 
|---|
| 35 |  | 
|---|
| 36 | #else | 
|---|
| 37 |  | 
|---|
| 38 | //---------------------------------------------------------------------------------------------------- | 
|---|
| 39 | // Implementation of Template | 
|---|
| 40 |  | 
|---|
| 41 |  | 
|---|
| 42 | void Template::initialize(int flags, TosState tos_in, TosState tos_out, generator gen, int arg) { | 
|---|
| 43 | _flags   = flags; | 
|---|
| 44 | _tos_in  = tos_in; | 
|---|
| 45 | _tos_out = tos_out; | 
|---|
| 46 | _gen     = gen; | 
|---|
| 47 | _arg     = arg; | 
|---|
| 48 | } | 
|---|
| 49 |  | 
|---|
| 50 |  | 
|---|
| 51 | Bytecodes::Code Template::bytecode() const { | 
|---|
| 52 | int i = this - TemplateTable::_template_table; | 
|---|
| 53 | if (i < 0 || i >= Bytecodes::number_of_codes) i = this - TemplateTable::_template_table_wide; | 
|---|
| 54 | return Bytecodes::cast(i); | 
|---|
| 55 | } | 
|---|
| 56 |  | 
|---|
| 57 |  | 
|---|
| 58 | void Template::generate(InterpreterMacroAssembler* masm) { | 
|---|
| 59 | // parameter passing | 
|---|
| 60 | TemplateTable::_desc = this; | 
|---|
| 61 | TemplateTable::_masm = masm; | 
|---|
| 62 | // code generation | 
|---|
| 63 | _gen(_arg); | 
|---|
| 64 | masm->flush(); | 
|---|
| 65 | } | 
|---|
| 66 |  | 
|---|
| 67 |  | 
|---|
| 68 | //---------------------------------------------------------------------------------------------------- | 
|---|
| 69 | // Implementation of TemplateTable: Platform-independent helper routines | 
|---|
| 70 |  | 
|---|
| 71 | void TemplateTable::call_VM(Register oop_result, address entry_point) { | 
|---|
| 72 | assert(_desc->calls_vm(), "inconsistent calls_vm information"); | 
|---|
| 73 | _masm->call_VM(oop_result, entry_point); | 
|---|
| 74 | } | 
|---|
| 75 |  | 
|---|
| 76 |  | 
|---|
| 77 | void TemplateTable::call_VM(Register oop_result, address entry_point, Register arg_1) { | 
|---|
| 78 | assert(_desc->calls_vm(), "inconsistent calls_vm information"); | 
|---|
| 79 | _masm->call_VM(oop_result, entry_point, arg_1); | 
|---|
| 80 | } | 
|---|
| 81 |  | 
|---|
| 82 |  | 
|---|
| 83 | void TemplateTable::call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2) { | 
|---|
| 84 | assert(_desc->calls_vm(), "inconsistent calls_vm information"); | 
|---|
| 85 | _masm->call_VM(oop_result, entry_point, arg_1, arg_2); | 
|---|
| 86 | } | 
|---|
| 87 |  | 
|---|
| 88 |  | 
|---|
| 89 | void TemplateTable::call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2, Register arg_3) { | 
|---|
| 90 | assert(_desc->calls_vm(), "inconsistent calls_vm information"); | 
|---|
| 91 | _masm->call_VM(oop_result, entry_point, arg_1, arg_2, arg_3); | 
|---|
| 92 | } | 
|---|
| 93 |  | 
|---|
| 94 |  | 
|---|
| 95 | void TemplateTable::call_VM(Register oop_result, Register last_java_sp, address entry_point) { | 
|---|
| 96 | assert(_desc->calls_vm(), "inconsistent calls_vm information"); | 
|---|
| 97 | _masm->call_VM(oop_result, last_java_sp, entry_point); | 
|---|
| 98 | } | 
|---|
| 99 |  | 
|---|
| 100 |  | 
|---|
| 101 | void TemplateTable::call_VM(Register oop_result, Register last_java_sp, address entry_point, Register arg_1) { | 
|---|
| 102 | assert(_desc->calls_vm(), "inconsistent calls_vm information"); | 
|---|
| 103 | _masm->call_VM(oop_result, last_java_sp, entry_point, arg_1); | 
|---|
| 104 | } | 
|---|
| 105 |  | 
|---|
| 106 |  | 
|---|
| 107 | void TemplateTable::call_VM(Register oop_result, Register last_java_sp, address entry_point, Register arg_1, Register arg_2) { | 
|---|
| 108 | assert(_desc->calls_vm(), "inconsistent calls_vm information"); | 
|---|
| 109 | _masm->call_VM(oop_result, last_java_sp, entry_point, arg_1, arg_2); | 
|---|
| 110 | } | 
|---|
| 111 |  | 
|---|
| 112 |  | 
|---|
| 113 | void TemplateTable::call_VM(Register oop_result, Register last_java_sp, address entry_point, Register arg_1, Register arg_2, Register arg_3) { | 
|---|
| 114 | assert(_desc->calls_vm(), "inconsistent calls_vm information"); | 
|---|
| 115 | _masm->call_VM(oop_result, last_java_sp, entry_point, arg_1, arg_2, arg_3); | 
|---|
| 116 | } | 
|---|
| 117 |  | 
|---|
| 118 |  | 
|---|
| 119 | //---------------------------------------------------------------------------------------------------- | 
|---|
| 120 | // Implementation of TemplateTable: Platform-independent bytecodes | 
|---|
| 121 |  | 
|---|
| 122 | void TemplateTable::float_cmp(int unordered_result) { | 
|---|
| 123 | transition(ftos, itos); | 
|---|
| 124 | float_cmp(true, unordered_result); | 
|---|
| 125 | } | 
|---|
| 126 |  | 
|---|
| 127 |  | 
|---|
| 128 | void TemplateTable::double_cmp(int unordered_result) { | 
|---|
| 129 | transition(dtos, itos); | 
|---|
| 130 | float_cmp(false, unordered_result); | 
|---|
| 131 | } | 
|---|
| 132 |  | 
|---|
| 133 |  | 
|---|
| 134 | void TemplateTable::_goto() { | 
|---|
| 135 | transition(vtos, vtos); | 
|---|
| 136 | branch(false, false); | 
|---|
| 137 | } | 
|---|
| 138 |  | 
|---|
| 139 |  | 
|---|
| 140 | void TemplateTable::goto_w() { | 
|---|
| 141 | transition(vtos, vtos); | 
|---|
| 142 | branch(false, true); | 
|---|
| 143 | } | 
|---|
| 144 |  | 
|---|
| 145 |  | 
|---|
| 146 | void TemplateTable::jsr_w() { | 
|---|
| 147 | transition(vtos, vtos);       // result is not an oop, so do not transition to atos | 
|---|
| 148 | branch(true, true); | 
|---|
| 149 | } | 
|---|
| 150 |  | 
|---|
| 151 |  | 
|---|
| 152 | void TemplateTable::jsr() { | 
|---|
| 153 | transition(vtos, vtos);       // result is not an oop, so do not transition to atos | 
|---|
| 154 | branch(true, false); | 
|---|
| 155 | } | 
|---|
| 156 |  | 
|---|
| 157 |  | 
|---|
| 158 |  | 
|---|
| 159 | //---------------------------------------------------------------------------------------------------- | 
|---|
| 160 | // Implementation of TemplateTable: Debugging | 
|---|
| 161 |  | 
|---|
| 162 | void TemplateTable::transition(TosState tos_in, TosState tos_out) { | 
|---|
| 163 | assert(_desc->tos_in()  == tos_in , "inconsistent tos_in  information"); | 
|---|
| 164 | assert(_desc->tos_out() == tos_out, "inconsistent tos_out information"); | 
|---|
| 165 | } | 
|---|
| 166 |  | 
|---|
| 167 |  | 
|---|
| 168 | //---------------------------------------------------------------------------------------------------- | 
|---|
| 169 | // Implementation of TemplateTable: Initialization | 
|---|
| 170 |  | 
|---|
| 171 | bool                       TemplateTable::_is_initialized = false; | 
|---|
| 172 | Template                   TemplateTable::_template_table     [Bytecodes::number_of_codes]; | 
|---|
| 173 | Template                   TemplateTable::_template_table_wide[Bytecodes::number_of_codes]; | 
|---|
| 174 |  | 
|---|
| 175 | Template*                  TemplateTable::_desc; | 
|---|
| 176 | InterpreterMacroAssembler* TemplateTable::_masm; | 
|---|
| 177 | BarrierSet*                TemplateTable::_bs; | 
|---|
| 178 |  | 
|---|
| 179 |  | 
|---|
| 180 | void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(), char filler) { | 
|---|
| 181 | assert(filler == ' ', "just checkin'"); | 
|---|
| 182 | def(code, flags, in, out, (Template::generator)gen, 0); | 
|---|
| 183 | } | 
|---|
| 184 |  | 
|---|
| 185 |  | 
|---|
| 186 | void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(int arg), int arg) { | 
|---|
| 187 | // should factor out these constants | 
|---|
| 188 | const int ubcp = 1 << Template::uses_bcp_bit; | 
|---|
| 189 | const int disp = 1 << Template::does_dispatch_bit; | 
|---|
| 190 | const int clvm = 1 << Template::calls_vm_bit; | 
|---|
| 191 | const int iswd = 1 << Template::wide_bit; | 
|---|
| 192 | // determine which table to use | 
|---|
| 193 | bool is_wide = (flags & iswd) != 0; | 
|---|
| 194 | // make sure that wide instructions have a vtos entry point | 
|---|
| 195 | // (since they are executed extremely rarely, it doesn't pay out to have an | 
|---|
| 196 | // extra set of 5 dispatch tables for the wide instructions - for simplicity | 
|---|
| 197 | // they all go with one table) | 
|---|
| 198 | assert(in == vtos || !is_wide, "wide instructions have vtos entry point only"); | 
|---|
| 199 | Template* t = is_wide ? template_for_wide(code) : template_for(code); | 
|---|
| 200 | // setup entry | 
|---|
| 201 | t->initialize(flags, in, out, gen, arg); | 
|---|
| 202 | assert(t->bytecode() == code, "just checkin'"); | 
|---|
| 203 | } | 
|---|
| 204 |  | 
|---|
| 205 |  | 
|---|
| 206 | void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(Operation op), Operation op) { | 
|---|
| 207 | def(code, flags, in, out, (Template::generator)gen, (int)op); | 
|---|
| 208 | } | 
|---|
| 209 |  | 
|---|
| 210 |  | 
|---|
| 211 | void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(bool arg    ), bool arg) { | 
|---|
| 212 | def(code, flags, in, out, (Template::generator)gen, (int)arg); | 
|---|
| 213 | } | 
|---|
| 214 |  | 
|---|
| 215 |  | 
|---|
| 216 | void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(TosState tos), TosState tos) { | 
|---|
| 217 | def(code, flags, in, out, (Template::generator)gen, (int)tos); | 
|---|
| 218 | } | 
|---|
| 219 |  | 
|---|
| 220 |  | 
|---|
| 221 | void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(Condition cc), Condition cc) { | 
|---|
| 222 | def(code, flags, in, out, (Template::generator)gen, (int)cc); | 
|---|
| 223 | } | 
|---|
| 224 |  | 
|---|
| 225 | void TemplateTable::initialize() { | 
|---|
| 226 | if (_is_initialized) return; | 
|---|
| 227 |  | 
|---|
| 228 | // Initialize table | 
|---|
| 229 | TraceTime timer( "TemplateTable initialization", TRACETIME_LOG(Info, startuptime)); | 
|---|
| 230 |  | 
|---|
| 231 | _bs = BarrierSet::barrier_set(); | 
|---|
| 232 |  | 
|---|
| 233 | // For better readability | 
|---|
| 234 | const char _    = ' '; | 
|---|
| 235 | const int  ____ = 0; | 
|---|
| 236 | const int  ubcp = 1 << Template::uses_bcp_bit; | 
|---|
| 237 | const int  disp = 1 << Template::does_dispatch_bit; | 
|---|
| 238 | const int  clvm = 1 << Template::calls_vm_bit; | 
|---|
| 239 | const int  iswd = 1 << Template::wide_bit; | 
|---|
| 240 | //                                    interpr. templates | 
|---|
| 241 | // Java spec bytecodes                ubcp|disp|clvm|iswd  in    out   generator             argument | 
|---|
| 242 | def(Bytecodes::_nop                 , ____|____|____|____, vtos, vtos, nop                 ,  _           ); | 
|---|
| 243 | def(Bytecodes::_aconst_null         , ____|____|____|____, vtos, atos, aconst_null         ,  _           ); | 
|---|
| 244 | def(Bytecodes::_iconst_m1           , ____|____|____|____, vtos, itos, iconst              , -1           ); | 
|---|
| 245 | def(Bytecodes::_iconst_0            , ____|____|____|____, vtos, itos, iconst              ,  0           ); | 
|---|
| 246 | def(Bytecodes::_iconst_1            , ____|____|____|____, vtos, itos, iconst              ,  1           ); | 
|---|
| 247 | def(Bytecodes::_iconst_2            , ____|____|____|____, vtos, itos, iconst              ,  2           ); | 
|---|
| 248 | def(Bytecodes::_iconst_3            , ____|____|____|____, vtos, itos, iconst              ,  3           ); | 
|---|
| 249 | def(Bytecodes::_iconst_4            , ____|____|____|____, vtos, itos, iconst              ,  4           ); | 
|---|
| 250 | def(Bytecodes::_iconst_5            , ____|____|____|____, vtos, itos, iconst              ,  5           ); | 
|---|
| 251 | def(Bytecodes::_lconst_0            , ____|____|____|____, vtos, ltos, lconst              ,  0           ); | 
|---|
| 252 | def(Bytecodes::_lconst_1            , ____|____|____|____, vtos, ltos, lconst              ,  1           ); | 
|---|
| 253 | def(Bytecodes::_fconst_0            , ____|____|____|____, vtos, ftos, fconst              ,  0           ); | 
|---|
| 254 | def(Bytecodes::_fconst_1            , ____|____|____|____, vtos, ftos, fconst              ,  1           ); | 
|---|
| 255 | def(Bytecodes::_fconst_2            , ____|____|____|____, vtos, ftos, fconst              ,  2           ); | 
|---|
| 256 | def(Bytecodes::_dconst_0            , ____|____|____|____, vtos, dtos, dconst              ,  0           ); | 
|---|
| 257 | def(Bytecodes::_dconst_1            , ____|____|____|____, vtos, dtos, dconst              ,  1           ); | 
|---|
| 258 | def(Bytecodes::_bipush              , ubcp|____|____|____, vtos, itos, bipush              ,  _           ); | 
|---|
| 259 | def(Bytecodes::_sipush              , ubcp|____|____|____, vtos, itos, sipush              ,  _           ); | 
|---|
| 260 | def(Bytecodes::_ldc                 , ubcp|____|clvm|____, vtos, vtos, ldc                 ,  false       ); | 
|---|
| 261 | def(Bytecodes::_ldc_w               , ubcp|____|clvm|____, vtos, vtos, ldc                 ,  true        ); | 
|---|
| 262 | def(Bytecodes::_ldc2_w              , ubcp|____|clvm|____, vtos, vtos, ldc2_w              ,  _           ); | 
|---|
| 263 | def(Bytecodes::_iload               , ubcp|____|clvm|____, vtos, itos, iload               ,  _           ); | 
|---|
| 264 | def(Bytecodes::_lload               , ubcp|____|____|____, vtos, ltos, lload               ,  _           ); | 
|---|
| 265 | def(Bytecodes::_fload               , ubcp|____|____|____, vtos, ftos, fload               ,  _           ); | 
|---|
| 266 | def(Bytecodes::_dload               , ubcp|____|____|____, vtos, dtos, dload               ,  _           ); | 
|---|
| 267 | def(Bytecodes::_aload               , ubcp|____|clvm|____, vtos, atos, aload               ,  _           ); | 
|---|
| 268 | def(Bytecodes::_iload_0             , ____|____|____|____, vtos, itos, iload               ,  0           ); | 
|---|
| 269 | def(Bytecodes::_iload_1             , ____|____|____|____, vtos, itos, iload               ,  1           ); | 
|---|
| 270 | def(Bytecodes::_iload_2             , ____|____|____|____, vtos, itos, iload               ,  2           ); | 
|---|
| 271 | def(Bytecodes::_iload_3             , ____|____|____|____, vtos, itos, iload               ,  3           ); | 
|---|
| 272 | def(Bytecodes::_lload_0             , ____|____|____|____, vtos, ltos, lload               ,  0           ); | 
|---|
| 273 | def(Bytecodes::_lload_1             , ____|____|____|____, vtos, ltos, lload               ,  1           ); | 
|---|
| 274 | def(Bytecodes::_lload_2             , ____|____|____|____, vtos, ltos, lload               ,  2           ); | 
|---|
| 275 | def(Bytecodes::_lload_3             , ____|____|____|____, vtos, ltos, lload               ,  3           ); | 
|---|
| 276 | def(Bytecodes::_fload_0             , ____|____|____|____, vtos, ftos, fload               ,  0           ); | 
|---|
| 277 | def(Bytecodes::_fload_1             , ____|____|____|____, vtos, ftos, fload               ,  1           ); | 
|---|
| 278 | def(Bytecodes::_fload_2             , ____|____|____|____, vtos, ftos, fload               ,  2           ); | 
|---|
| 279 | def(Bytecodes::_fload_3             , ____|____|____|____, vtos, ftos, fload               ,  3           ); | 
|---|
| 280 | def(Bytecodes::_dload_0             , ____|____|____|____, vtos, dtos, dload               ,  0           ); | 
|---|
| 281 | def(Bytecodes::_dload_1             , ____|____|____|____, vtos, dtos, dload               ,  1           ); | 
|---|
| 282 | def(Bytecodes::_dload_2             , ____|____|____|____, vtos, dtos, dload               ,  2           ); | 
|---|
| 283 | def(Bytecodes::_dload_3             , ____|____|____|____, vtos, dtos, dload               ,  3           ); | 
|---|
| 284 | def(Bytecodes::_aload_0             , ubcp|____|clvm|____, vtos, atos, aload_0             ,  _           ); | 
|---|
| 285 | def(Bytecodes::_aload_1             , ____|____|____|____, vtos, atos, aload               ,  1           ); | 
|---|
| 286 | def(Bytecodes::_aload_2             , ____|____|____|____, vtos, atos, aload               ,  2           ); | 
|---|
| 287 | def(Bytecodes::_aload_3             , ____|____|____|____, vtos, atos, aload               ,  3           ); | 
|---|
| 288 | def(Bytecodes::_iaload              , ____|____|____|____, itos, itos, iaload              ,  _           ); | 
|---|
| 289 | def(Bytecodes::_laload              , ____|____|____|____, itos, ltos, laload              ,  _           ); | 
|---|
| 290 | def(Bytecodes::_faload              , ____|____|____|____, itos, ftos, faload              ,  _           ); | 
|---|
| 291 | def(Bytecodes::_daload              , ____|____|____|____, itos, dtos, daload              ,  _           ); | 
|---|
| 292 | def(Bytecodes::_aaload              , ____|____|____|____, itos, atos, aaload              ,  _           ); | 
|---|
| 293 | def(Bytecodes::_baload              , ____|____|____|____, itos, itos, baload              ,  _           ); | 
|---|
| 294 | def(Bytecodes::_caload              , ____|____|____|____, itos, itos, caload              ,  _           ); | 
|---|
| 295 | def(Bytecodes::_saload              , ____|____|____|____, itos, itos, saload              ,  _           ); | 
|---|
| 296 | def(Bytecodes::_istore              , ubcp|____|clvm|____, itos, vtos, istore              ,  _           ); | 
|---|
| 297 | def(Bytecodes::_lstore              , ubcp|____|____|____, ltos, vtos, lstore              ,  _           ); | 
|---|
| 298 | def(Bytecodes::_fstore              , ubcp|____|____|____, ftos, vtos, fstore              ,  _           ); | 
|---|
| 299 | def(Bytecodes::_dstore              , ubcp|____|____|____, dtos, vtos, dstore              ,  _           ); | 
|---|
| 300 | def(Bytecodes::_astore              , ubcp|____|clvm|____, vtos, vtos, astore              ,  _           ); | 
|---|
| 301 | def(Bytecodes::_istore_0            , ____|____|____|____, itos, vtos, istore              ,  0           ); | 
|---|
| 302 | def(Bytecodes::_istore_1            , ____|____|____|____, itos, vtos, istore              ,  1           ); | 
|---|
| 303 | def(Bytecodes::_istore_2            , ____|____|____|____, itos, vtos, istore              ,  2           ); | 
|---|
| 304 | def(Bytecodes::_istore_3            , ____|____|____|____, itos, vtos, istore              ,  3           ); | 
|---|
| 305 | def(Bytecodes::_lstore_0            , ____|____|____|____, ltos, vtos, lstore              ,  0           ); | 
|---|
| 306 | def(Bytecodes::_lstore_1            , ____|____|____|____, ltos, vtos, lstore              ,  1           ); | 
|---|
| 307 | def(Bytecodes::_lstore_2            , ____|____|____|____, ltos, vtos, lstore              ,  2           ); | 
|---|
| 308 | def(Bytecodes::_lstore_3            , ____|____|____|____, ltos, vtos, lstore              ,  3           ); | 
|---|
| 309 | def(Bytecodes::_fstore_0            , ____|____|____|____, ftos, vtos, fstore              ,  0           ); | 
|---|
| 310 | def(Bytecodes::_fstore_1            , ____|____|____|____, ftos, vtos, fstore              ,  1           ); | 
|---|
| 311 | def(Bytecodes::_fstore_2            , ____|____|____|____, ftos, vtos, fstore              ,  2           ); | 
|---|
| 312 | def(Bytecodes::_fstore_3            , ____|____|____|____, ftos, vtos, fstore              ,  3           ); | 
|---|
| 313 | def(Bytecodes::_dstore_0            , ____|____|____|____, dtos, vtos, dstore              ,  0           ); | 
|---|
| 314 | def(Bytecodes::_dstore_1            , ____|____|____|____, dtos, vtos, dstore              ,  1           ); | 
|---|
| 315 | def(Bytecodes::_dstore_2            , ____|____|____|____, dtos, vtos, dstore              ,  2           ); | 
|---|
| 316 | def(Bytecodes::_dstore_3            , ____|____|____|____, dtos, vtos, dstore              ,  3           ); | 
|---|
| 317 | def(Bytecodes::_astore_0            , ____|____|____|____, vtos, vtos, astore              ,  0           ); | 
|---|
| 318 | def(Bytecodes::_astore_1            , ____|____|____|____, vtos, vtos, astore              ,  1           ); | 
|---|
| 319 | def(Bytecodes::_astore_2            , ____|____|____|____, vtos, vtos, astore              ,  2           ); | 
|---|
| 320 | def(Bytecodes::_astore_3            , ____|____|____|____, vtos, vtos, astore              ,  3           ); | 
|---|
| 321 | def(Bytecodes::_iastore             , ____|____|____|____, itos, vtos, iastore             ,  _           ); | 
|---|
| 322 | def(Bytecodes::_lastore             , ____|____|____|____, ltos, vtos, lastore             ,  _           ); | 
|---|
| 323 | def(Bytecodes::_fastore             , ____|____|____|____, ftos, vtos, fastore             ,  _           ); | 
|---|
| 324 | def(Bytecodes::_dastore             , ____|____|____|____, dtos, vtos, dastore             ,  _           ); | 
|---|
| 325 | def(Bytecodes::_aastore             , ____|____|clvm|____, vtos, vtos, aastore             ,  _           ); | 
|---|
| 326 | def(Bytecodes::_bastore             , ____|____|____|____, itos, vtos, bastore             ,  _           ); | 
|---|
| 327 | def(Bytecodes::_castore             , ____|____|____|____, itos, vtos, castore             ,  _           ); | 
|---|
| 328 | def(Bytecodes::_sastore             , ____|____|____|____, itos, vtos, sastore             ,  _           ); | 
|---|
| 329 | def(Bytecodes::_pop                 , ____|____|____|____, vtos, vtos, pop                 ,  _           ); | 
|---|
| 330 | def(Bytecodes::_pop2                , ____|____|____|____, vtos, vtos, pop2                ,  _           ); | 
|---|
| 331 | def(Bytecodes::_dup                 , ____|____|____|____, vtos, vtos, dup                 ,  _           ); | 
|---|
| 332 | def(Bytecodes::_dup_x1              , ____|____|____|____, vtos, vtos, dup_x1              ,  _           ); | 
|---|
| 333 | def(Bytecodes::_dup_x2              , ____|____|____|____, vtos, vtos, dup_x2              ,  _           ); | 
|---|
| 334 | def(Bytecodes::_dup2                , ____|____|____|____, vtos, vtos, dup2                ,  _           ); | 
|---|
| 335 | def(Bytecodes::_dup2_x1             , ____|____|____|____, vtos, vtos, dup2_x1             ,  _           ); | 
|---|
| 336 | def(Bytecodes::_dup2_x2             , ____|____|____|____, vtos, vtos, dup2_x2             ,  _           ); | 
|---|
| 337 | def(Bytecodes::_swap                , ____|____|____|____, vtos, vtos, swap                ,  _           ); | 
|---|
| 338 | def(Bytecodes::_iadd                , ____|____|____|____, itos, itos, iop2                , add          ); | 
|---|
| 339 | def(Bytecodes::_ladd                , ____|____|____|____, ltos, ltos, lop2                , add          ); | 
|---|
| 340 | def(Bytecodes::_fadd                , ____|____|____|____, ftos, ftos, fop2                , add          ); | 
|---|
| 341 | def(Bytecodes::_dadd                , ____|____|____|____, dtos, dtos, dop2                , add          ); | 
|---|
| 342 | def(Bytecodes::_isub                , ____|____|____|____, itos, itos, iop2                , sub          ); | 
|---|
| 343 | def(Bytecodes::_lsub                , ____|____|____|____, ltos, ltos, lop2                , sub          ); | 
|---|
| 344 | def(Bytecodes::_fsub                , ____|____|____|____, ftos, ftos, fop2                , sub          ); | 
|---|
| 345 | def(Bytecodes::_dsub                , ____|____|____|____, dtos, dtos, dop2                , sub          ); | 
|---|
| 346 | def(Bytecodes::_imul                , ____|____|____|____, itos, itos, iop2                , mul          ); | 
|---|
| 347 | def(Bytecodes::_lmul                , ____|____|____|____, ltos, ltos, lmul                ,  _           ); | 
|---|
| 348 | def(Bytecodes::_fmul                , ____|____|____|____, ftos, ftos, fop2                , mul          ); | 
|---|
| 349 | def(Bytecodes::_dmul                , ____|____|____|____, dtos, dtos, dop2                , mul          ); | 
|---|
| 350 | def(Bytecodes::_idiv                , ____|____|____|____, itos, itos, idiv                ,  _           ); | 
|---|
| 351 | def(Bytecodes::_ldiv                , ____|____|____|____, ltos, ltos, ldiv                ,  _           ); | 
|---|
| 352 | def(Bytecodes::_fdiv                , ____|____|____|____, ftos, ftos, fop2                , div          ); | 
|---|
| 353 | def(Bytecodes::_ddiv                , ____|____|____|____, dtos, dtos, dop2                , div          ); | 
|---|
| 354 | def(Bytecodes::_irem                , ____|____|____|____, itos, itos, irem                ,  _           ); | 
|---|
| 355 | def(Bytecodes::_lrem                , ____|____|____|____, ltos, ltos, lrem                ,  _           ); | 
|---|
| 356 | def(Bytecodes::_frem                , ____|____|____|____, ftos, ftos, fop2                , rem          ); | 
|---|
| 357 | def(Bytecodes::_drem                , ____|____|____|____, dtos, dtos, dop2                , rem          ); | 
|---|
| 358 | def(Bytecodes::_ineg                , ____|____|____|____, itos, itos, ineg                ,  _           ); | 
|---|
| 359 | def(Bytecodes::_lneg                , ____|____|____|____, ltos, ltos, lneg                ,  _           ); | 
|---|
| 360 | def(Bytecodes::_fneg                , ____|____|____|____, ftos, ftos, fneg                ,  _           ); | 
|---|
| 361 | def(Bytecodes::_dneg                , ____|____|____|____, dtos, dtos, dneg                ,  _           ); | 
|---|
| 362 | def(Bytecodes::_ishl                , ____|____|____|____, itos, itos, iop2                , shl          ); | 
|---|
| 363 | def(Bytecodes::_lshl                , ____|____|____|____, itos, ltos, lshl                ,  _           ); | 
|---|
| 364 | def(Bytecodes::_ishr                , ____|____|____|____, itos, itos, iop2                , shr          ); | 
|---|
| 365 | def(Bytecodes::_lshr                , ____|____|____|____, itos, ltos, lshr                ,  _           ); | 
|---|
| 366 | def(Bytecodes::_iushr               , ____|____|____|____, itos, itos, iop2                , ushr         ); | 
|---|
| 367 | def(Bytecodes::_lushr               , ____|____|____|____, itos, ltos, lushr               ,  _           ); | 
|---|
| 368 | def(Bytecodes::_iand                , ____|____|____|____, itos, itos, iop2                , _and         ); | 
|---|
| 369 | def(Bytecodes::_land                , ____|____|____|____, ltos, ltos, lop2                , _and         ); | 
|---|
| 370 | def(Bytecodes::_ior                 , ____|____|____|____, itos, itos, iop2                , _or          ); | 
|---|
| 371 | def(Bytecodes::_lor                 , ____|____|____|____, ltos, ltos, lop2                , _or          ); | 
|---|
| 372 | def(Bytecodes::_ixor                , ____|____|____|____, itos, itos, iop2                , _xor         ); | 
|---|
| 373 | def(Bytecodes::_lxor                , ____|____|____|____, ltos, ltos, lop2                , _xor         ); | 
|---|
| 374 | def(Bytecodes::_iinc                , ubcp|____|clvm|____, vtos, vtos, iinc                ,  _           ); | 
|---|
| 375 | def(Bytecodes::_i2l                 , ____|____|____|____, itos, ltos, convert             ,  _           ); | 
|---|
| 376 | def(Bytecodes::_i2f                 , ____|____|____|____, itos, ftos, convert             ,  _           ); | 
|---|
| 377 | def(Bytecodes::_i2d                 , ____|____|____|____, itos, dtos, convert             ,  _           ); | 
|---|
| 378 | def(Bytecodes::_l2i                 , ____|____|____|____, ltos, itos, convert             ,  _           ); | 
|---|
| 379 | def(Bytecodes::_l2f                 , ____|____|____|____, ltos, ftos, convert             ,  _           ); | 
|---|
| 380 | def(Bytecodes::_l2d                 , ____|____|____|____, ltos, dtos, convert             ,  _           ); | 
|---|
| 381 | def(Bytecodes::_f2i                 , ____|____|____|____, ftos, itos, convert             ,  _           ); | 
|---|
| 382 | def(Bytecodes::_f2l                 , ____|____|____|____, ftos, ltos, convert             ,  _           ); | 
|---|
| 383 | def(Bytecodes::_f2d                 , ____|____|____|____, ftos, dtos, convert             ,  _           ); | 
|---|
| 384 | def(Bytecodes::_d2i                 , ____|____|____|____, dtos, itos, convert             ,  _           ); | 
|---|
| 385 | def(Bytecodes::_d2l                 , ____|____|____|____, dtos, ltos, convert             ,  _           ); | 
|---|
| 386 | def(Bytecodes::_d2f                 , ____|____|____|____, dtos, ftos, convert             ,  _           ); | 
|---|
| 387 | def(Bytecodes::_i2b                 , ____|____|____|____, itos, itos, convert             ,  _           ); | 
|---|
| 388 | def(Bytecodes::_i2c                 , ____|____|____|____, itos, itos, convert             ,  _           ); | 
|---|
| 389 | def(Bytecodes::_i2s                 , ____|____|____|____, itos, itos, convert             ,  _           ); | 
|---|
| 390 | def(Bytecodes::_lcmp                , ____|____|____|____, ltos, itos, lcmp                ,  _           ); | 
|---|
| 391 | def(Bytecodes::_fcmpl               , ____|____|____|____, ftos, itos, float_cmp           , -1           ); | 
|---|
| 392 | def(Bytecodes::_fcmpg               , ____|____|____|____, ftos, itos, float_cmp           ,  1           ); | 
|---|
| 393 | def(Bytecodes::_dcmpl               , ____|____|____|____, dtos, itos, double_cmp          , -1           ); | 
|---|
| 394 | def(Bytecodes::_dcmpg               , ____|____|____|____, dtos, itos, double_cmp          ,  1           ); | 
|---|
| 395 | def(Bytecodes::_ifeq                , ubcp|____|clvm|____, itos, vtos, if_0cmp             , equal        ); | 
|---|
| 396 | def(Bytecodes::_ifne                , ubcp|____|clvm|____, itos, vtos, if_0cmp             , not_equal    ); | 
|---|
| 397 | def(Bytecodes::_iflt                , ubcp|____|clvm|____, itos, vtos, if_0cmp             , less         ); | 
|---|
| 398 | def(Bytecodes::_ifge                , ubcp|____|clvm|____, itos, vtos, if_0cmp             , greater_equal); | 
|---|
| 399 | def(Bytecodes::_ifgt                , ubcp|____|clvm|____, itos, vtos, if_0cmp             , greater      ); | 
|---|
| 400 | def(Bytecodes::_ifle                , ubcp|____|clvm|____, itos, vtos, if_0cmp             , less_equal   ); | 
|---|
| 401 | def(Bytecodes::_if_icmpeq           , ubcp|____|clvm|____, itos, vtos, if_icmp             , equal        ); | 
|---|
| 402 | def(Bytecodes::_if_icmpne           , ubcp|____|clvm|____, itos, vtos, if_icmp             , not_equal    ); | 
|---|
| 403 | def(Bytecodes::_if_icmplt           , ubcp|____|clvm|____, itos, vtos, if_icmp             , less         ); | 
|---|
| 404 | def(Bytecodes::_if_icmpge           , ubcp|____|clvm|____, itos, vtos, if_icmp             , greater_equal); | 
|---|
| 405 | def(Bytecodes::_if_icmpgt           , ubcp|____|clvm|____, itos, vtos, if_icmp             , greater      ); | 
|---|
| 406 | def(Bytecodes::_if_icmple           , ubcp|____|clvm|____, itos, vtos, if_icmp             , less_equal   ); | 
|---|
| 407 | def(Bytecodes::_if_acmpeq           , ubcp|____|clvm|____, atos, vtos, if_acmp             , equal        ); | 
|---|
| 408 | def(Bytecodes::_if_acmpne           , ubcp|____|clvm|____, atos, vtos, if_acmp             , not_equal    ); | 
|---|
| 409 | def(Bytecodes::_goto                , ubcp|disp|clvm|____, vtos, vtos, _goto               ,  _           ); | 
|---|
| 410 | def(Bytecodes::_jsr                 , ubcp|disp|____|____, vtos, vtos, jsr                 ,  _           ); // result is not an oop, so do not transition to atos | 
|---|
| 411 | def(Bytecodes::_ret                 , ubcp|disp|____|____, vtos, vtos, ret                 ,  _           ); | 
|---|
| 412 | def(Bytecodes::_tableswitch         , ubcp|disp|____|____, itos, vtos, tableswitch         ,  _           ); | 
|---|
| 413 | def(Bytecodes::_lookupswitch        , ubcp|disp|____|____, itos, itos, lookupswitch        ,  _           ); | 
|---|
| 414 | def(Bytecodes::_ireturn             , ____|disp|clvm|____, itos, itos, _return             , itos         ); | 
|---|
| 415 | def(Bytecodes::_lreturn             , ____|disp|clvm|____, ltos, ltos, _return             , ltos         ); | 
|---|
| 416 | def(Bytecodes::_freturn             , ____|disp|clvm|____, ftos, ftos, _return             , ftos         ); | 
|---|
| 417 | def(Bytecodes::_dreturn             , ____|disp|clvm|____, dtos, dtos, _return             , dtos         ); | 
|---|
| 418 | def(Bytecodes::_areturn             , ____|disp|clvm|____, atos, atos, _return             , atos         ); | 
|---|
| 419 | def(Bytecodes::_return              , ____|disp|clvm|____, vtos, vtos, _return             , vtos         ); | 
|---|
| 420 | def(Bytecodes::_getstatic           , ubcp|____|clvm|____, vtos, vtos, getstatic           , f1_byte      ); | 
|---|
| 421 | def(Bytecodes::_putstatic           , ubcp|____|clvm|____, vtos, vtos, putstatic           , f2_byte      ); | 
|---|
| 422 | def(Bytecodes::_getfield            , ubcp|____|clvm|____, vtos, vtos, getfield            , f1_byte      ); | 
|---|
| 423 | def(Bytecodes::_putfield            , ubcp|____|clvm|____, vtos, vtos, putfield            , f2_byte      ); | 
|---|
| 424 | def(Bytecodes::_invokevirtual       , ubcp|disp|clvm|____, vtos, vtos, invokevirtual       , f2_byte      ); | 
|---|
| 425 | def(Bytecodes::_invokespecial       , ubcp|disp|clvm|____, vtos, vtos, invokespecial       , f1_byte      ); | 
|---|
| 426 | def(Bytecodes::_invokestatic        , ubcp|disp|clvm|____, vtos, vtos, invokestatic        , f1_byte      ); | 
|---|
| 427 | def(Bytecodes::_invokeinterface     , ubcp|disp|clvm|____, vtos, vtos, invokeinterface     , f1_byte      ); | 
|---|
| 428 | def(Bytecodes::_invokedynamic       , ubcp|disp|clvm|____, vtos, vtos, invokedynamic       , f1_byte      ); | 
|---|
| 429 | def(Bytecodes::_new                 , ubcp|____|clvm|____, vtos, atos, _new                ,  _           ); | 
|---|
| 430 | def(Bytecodes::_newarray            , ubcp|____|clvm|____, itos, atos, newarray            ,  _           ); | 
|---|
| 431 | def(Bytecodes::_anewarray           , ubcp|____|clvm|____, itos, atos, anewarray           ,  _           ); | 
|---|
| 432 | def(Bytecodes::_arraylength         , ____|____|____|____, atos, itos, arraylength         ,  _           ); | 
|---|
| 433 | def(Bytecodes::_athrow              , ____|disp|____|____, atos, vtos, athrow              ,  _           ); | 
|---|
| 434 | def(Bytecodes::_checkcast           , ubcp|____|clvm|____, atos, atos, checkcast           ,  _           ); | 
|---|
| 435 | def(Bytecodes::_instanceof          , ubcp|____|clvm|____, atos, itos, instanceof          ,  _           ); | 
|---|
| 436 | def(Bytecodes::_monitorenter        , ____|disp|clvm|____, atos, vtos, monitorenter        ,  _           ); | 
|---|
| 437 | def(Bytecodes::_monitorexit         , ____|____|clvm|____, atos, vtos, monitorexit         ,  _           ); | 
|---|
| 438 | def(Bytecodes::_wide                , ubcp|disp|____|____, vtos, vtos, wide                ,  _           ); | 
|---|
| 439 | def(Bytecodes::_multianewarray      , ubcp|____|clvm|____, vtos, atos, multianewarray      ,  _           ); | 
|---|
| 440 | def(Bytecodes::_ifnull              , ubcp|____|clvm|____, atos, vtos, if_nullcmp          , equal        ); | 
|---|
| 441 | def(Bytecodes::_ifnonnull           , ubcp|____|clvm|____, atos, vtos, if_nullcmp          , not_equal    ); | 
|---|
| 442 | def(Bytecodes::_goto_w              , ubcp|____|clvm|____, vtos, vtos, goto_w              ,  _           ); | 
|---|
| 443 | def(Bytecodes::_jsr_w               , ubcp|____|____|____, vtos, vtos, jsr_w               ,  _           ); | 
|---|
| 444 |  | 
|---|
| 445 | // wide Java spec bytecodes | 
|---|
| 446 | def(Bytecodes::_iload               , ubcp|____|____|iswd, vtos, itos, wide_iload          ,  _           ); | 
|---|
| 447 | def(Bytecodes::_lload               , ubcp|____|____|iswd, vtos, ltos, wide_lload          ,  _           ); | 
|---|
| 448 | def(Bytecodes::_fload               , ubcp|____|____|iswd, vtos, ftos, wide_fload          ,  _           ); | 
|---|
| 449 | def(Bytecodes::_dload               , ubcp|____|____|iswd, vtos, dtos, wide_dload          ,  _           ); | 
|---|
| 450 | def(Bytecodes::_aload               , ubcp|____|____|iswd, vtos, atos, wide_aload          ,  _           ); | 
|---|
| 451 | def(Bytecodes::_istore              , ubcp|____|____|iswd, vtos, vtos, wide_istore         ,  _           ); | 
|---|
| 452 | def(Bytecodes::_lstore              , ubcp|____|____|iswd, vtos, vtos, wide_lstore         ,  _           ); | 
|---|
| 453 | def(Bytecodes::_fstore              , ubcp|____|____|iswd, vtos, vtos, wide_fstore         ,  _           ); | 
|---|
| 454 | def(Bytecodes::_dstore              , ubcp|____|____|iswd, vtos, vtos, wide_dstore         ,  _           ); | 
|---|
| 455 | def(Bytecodes::_astore              , ubcp|____|____|iswd, vtos, vtos, wide_astore         ,  _           ); | 
|---|
| 456 | def(Bytecodes::_iinc                , ubcp|____|____|iswd, vtos, vtos, wide_iinc           ,  _           ); | 
|---|
| 457 | def(Bytecodes::_ret                 , ubcp|disp|____|iswd, vtos, vtos, wide_ret            ,  _           ); | 
|---|
| 458 | def(Bytecodes::_breakpoint          , ubcp|disp|clvm|____, vtos, vtos, _breakpoint         ,  _           ); | 
|---|
| 459 |  | 
|---|
| 460 | // JVM bytecodes | 
|---|
| 461 | def(Bytecodes::_fast_agetfield      , ubcp|____|____|____, atos, atos, fast_accessfield    ,  atos        ); | 
|---|
| 462 | def(Bytecodes::_fast_bgetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        ); | 
|---|
| 463 | def(Bytecodes::_fast_cgetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        ); | 
|---|
| 464 | def(Bytecodes::_fast_dgetfield      , ubcp|____|____|____, atos, dtos, fast_accessfield    ,  dtos        ); | 
|---|
| 465 | def(Bytecodes::_fast_fgetfield      , ubcp|____|____|____, atos, ftos, fast_accessfield    ,  ftos        ); | 
|---|
| 466 | def(Bytecodes::_fast_igetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        ); | 
|---|
| 467 | def(Bytecodes::_fast_lgetfield      , ubcp|____|____|____, atos, ltos, fast_accessfield    ,  ltos        ); | 
|---|
| 468 | def(Bytecodes::_fast_sgetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        ); | 
|---|
| 469 |  | 
|---|
| 470 | def(Bytecodes::_fast_aputfield      , ubcp|____|____|____, atos, vtos, fast_storefield ,   atos        ); | 
|---|
| 471 | def(Bytecodes::_fast_bputfield      , ubcp|____|____|____, itos, vtos, fast_storefield ,   itos        ); | 
|---|
| 472 | def(Bytecodes::_fast_zputfield      , ubcp|____|____|____, itos, vtos, fast_storefield ,   itos        ); | 
|---|
| 473 | def(Bytecodes::_fast_cputfield      , ubcp|____|____|____, itos, vtos, fast_storefield  ,  itos        ); | 
|---|
| 474 | def(Bytecodes::_fast_dputfield      , ubcp|____|____|____, dtos, vtos, fast_storefield  ,  dtos        ); | 
|---|
| 475 | def(Bytecodes::_fast_fputfield      , ubcp|____|____|____, ftos, vtos, fast_storefield  ,  ftos        ); | 
|---|
| 476 | def(Bytecodes::_fast_iputfield      , ubcp|____|____|____, itos, vtos, fast_storefield  ,  itos        ); | 
|---|
| 477 | def(Bytecodes::_fast_lputfield      , ubcp|____|____|____, ltos, vtos, fast_storefield  ,  ltos        ); | 
|---|
| 478 | def(Bytecodes::_fast_sputfield      , ubcp|____|____|____, itos, vtos, fast_storefield  ,  itos        ); | 
|---|
| 479 |  | 
|---|
| 480 | def(Bytecodes::_fast_aload_0        , ____|____|____|____, vtos, atos, aload               ,  0           ); | 
|---|
| 481 | def(Bytecodes::_fast_iaccess_0      , ubcp|____|____|____, vtos, itos, fast_xaccess        ,  itos        ); | 
|---|
| 482 | def(Bytecodes::_fast_aaccess_0      , ubcp|____|____|____, vtos, atos, fast_xaccess        ,  atos        ); | 
|---|
| 483 | def(Bytecodes::_fast_faccess_0      , ubcp|____|____|____, vtos, ftos, fast_xaccess        ,  ftos        ); | 
|---|
| 484 |  | 
|---|
| 485 | def(Bytecodes::_fast_iload          , ubcp|____|____|____, vtos, itos, fast_iload          ,  _       ); | 
|---|
| 486 | def(Bytecodes::_fast_iload2         , ubcp|____|____|____, vtos, itos, fast_iload2         ,  _       ); | 
|---|
| 487 | def(Bytecodes::_fast_icaload        , ubcp|____|____|____, vtos, itos, fast_icaload        ,  _       ); | 
|---|
| 488 |  | 
|---|
| 489 | def(Bytecodes::_fast_invokevfinal   , ubcp|disp|clvm|____, vtos, vtos, fast_invokevfinal   , f2_byte      ); | 
|---|
| 490 |  | 
|---|
| 491 | def(Bytecodes::_fast_linearswitch   , ubcp|disp|____|____, itos, vtos, fast_linearswitch   ,  _           ); | 
|---|
| 492 | def(Bytecodes::_fast_binaryswitch   , ubcp|disp|____|____, itos, vtos, fast_binaryswitch   ,  _           ); | 
|---|
| 493 |  | 
|---|
| 494 | def(Bytecodes::_fast_aldc           , ubcp|____|clvm|____, vtos, atos, fast_aldc           ,  false       ); | 
|---|
| 495 | def(Bytecodes::_fast_aldc_w         , ubcp|____|clvm|____, vtos, atos, fast_aldc           ,  true        ); | 
|---|
| 496 |  | 
|---|
| 497 | def(Bytecodes::_return_register_finalizer , ____|disp|clvm|____, vtos, vtos, _return       ,  vtos        ); | 
|---|
| 498 |  | 
|---|
| 499 | def(Bytecodes::_invokehandle        , ubcp|disp|clvm|____, vtos, vtos, invokehandle        , f1_byte      ); | 
|---|
| 500 |  | 
|---|
| 501 | def(Bytecodes::_nofast_getfield     , ubcp|____|clvm|____, vtos, vtos, nofast_getfield     , f1_byte      ); | 
|---|
| 502 | def(Bytecodes::_nofast_putfield     , ubcp|____|clvm|____, vtos, vtos, nofast_putfield     , f2_byte      ); | 
|---|
| 503 |  | 
|---|
| 504 | def(Bytecodes::_nofast_aload_0      , ____|____|clvm|____, vtos, atos, nofast_aload_0      ,  _           ); | 
|---|
| 505 | def(Bytecodes::_nofast_iload        , ubcp|____|clvm|____, vtos, itos, nofast_iload        ,  _           ); | 
|---|
| 506 |  | 
|---|
| 507 | def(Bytecodes::_shouldnotreachhere   , ____|____|____|____, vtos, vtos, shouldnotreachhere ,  _           ); | 
|---|
| 508 | // platform specific bytecodes | 
|---|
| 509 | pd_initialize(); | 
|---|
| 510 |  | 
|---|
| 511 | _is_initialized = true; | 
|---|
| 512 | } | 
|---|
| 513 |  | 
|---|
| 514 | void templateTable_init() { | 
|---|
| 515 | TemplateTable::initialize(); | 
|---|
| 516 | } | 
|---|
| 517 |  | 
|---|
| 518 |  | 
|---|
| 519 | void TemplateTable::unimplemented_bc() { | 
|---|
| 520 | _masm->unimplemented( Bytecodes::name(_desc->bytecode())); | 
|---|
| 521 | } | 
|---|
| 522 | #endif /* !CC_INTERP */ | 
|---|
| 523 |  | 
|---|