1/* 2 * Copyright (C) 2007 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.dx.dex.code; 18 19import com.android.dx.dex.DexOptions; 20import com.android.dx.dex.code.form.Form10t; 21import com.android.dx.dex.code.form.Form10x; 22import com.android.dx.dex.code.form.Form11n; 23import com.android.dx.dex.code.form.Form11x; 24import com.android.dx.dex.code.form.Form12x; 25import com.android.dx.dex.code.form.Form20t; 26import com.android.dx.dex.code.form.Form21c; 27import com.android.dx.dex.code.form.Form21h; 28import com.android.dx.dex.code.form.Form21s; 29import com.android.dx.dex.code.form.Form21t; 30import com.android.dx.dex.code.form.Form22b; 31import com.android.dx.dex.code.form.Form22c; 32import com.android.dx.dex.code.form.Form22s; 33import com.android.dx.dex.code.form.Form22t; 34import com.android.dx.dex.code.form.Form22x; 35import com.android.dx.dex.code.form.Form23x; 36import com.android.dx.dex.code.form.Form30t; 37import com.android.dx.dex.code.form.Form31c; 38import com.android.dx.dex.code.form.Form31i; 39import com.android.dx.dex.code.form.Form31t; 40import com.android.dx.dex.code.form.Form32x; 41import com.android.dx.dex.code.form.Form35c; 42import com.android.dx.dex.code.form.Form3rc; 43import com.android.dx.dex.code.form.Form41c; 44import com.android.dx.dex.code.form.Form51l; 45import com.android.dx.dex.code.form.Form52c; 46import com.android.dx.dex.code.form.Form5rc; 47import com.android.dx.dex.code.form.SpecialFormat; 48import com.android.dx.io.Opcodes; 49 50/** 51 * Standard instances of {@link Dop} and utility methods for getting 52 * them. 53 */ 54public final class Dops { 55 /** {@code non-null;} array containing all the standard instances */ 56 private static final Dop[] DOPS; 57 58 /** 59 * pseudo-opcode used for nonstandard formatted "instructions" 60 * (which are mostly not actually instructions, though they do 61 * appear in instruction lists). TODO: Retire the usage of this 62 * constant. 63 */ 64 public static final Dop SPECIAL_FORMAT = 65 new Dop(Opcodes.SPECIAL_FORMAT, Opcodes.SPECIAL_FORMAT, 66 Opcodes.NO_NEXT, SpecialFormat.THE_ONE, false); 67 68 // BEGIN(dops); GENERATED AUTOMATICALLY BY opcode-gen 69 public static final Dop NOP = 70 new Dop(Opcodes.NOP, Opcodes.NOP, 71 Opcodes.NO_NEXT, Form10x.THE_ONE, false); 72 73 public static final Dop MOVE = 74 new Dop(Opcodes.MOVE, Opcodes.MOVE, 75 Opcodes.MOVE_FROM16, Form12x.THE_ONE, true); 76 77 public static final Dop MOVE_FROM16 = 78 new Dop(Opcodes.MOVE_FROM16, Opcodes.MOVE, 79 Opcodes.MOVE_16, Form22x.THE_ONE, true); 80 81 public static final Dop MOVE_16 = 82 new Dop(Opcodes.MOVE_16, Opcodes.MOVE, 83 Opcodes.NO_NEXT, Form32x.THE_ONE, true); 84 85 public static final Dop MOVE_WIDE = 86 new Dop(Opcodes.MOVE_WIDE, Opcodes.MOVE_WIDE, 87 Opcodes.MOVE_WIDE_FROM16, Form12x.THE_ONE, true); 88 89 public static final Dop MOVE_WIDE_FROM16 = 90 new Dop(Opcodes.MOVE_WIDE_FROM16, Opcodes.MOVE_WIDE, 91 Opcodes.MOVE_WIDE_16, Form22x.THE_ONE, true); 92 93 public static final Dop MOVE_WIDE_16 = 94 new Dop(Opcodes.MOVE_WIDE_16, Opcodes.MOVE_WIDE, 95 Opcodes.NO_NEXT, Form32x.THE_ONE, true); 96 97 public static final Dop MOVE_OBJECT = 98 new Dop(Opcodes.MOVE_OBJECT, Opcodes.MOVE_OBJECT, 99 Opcodes.MOVE_OBJECT_FROM16, Form12x.THE_ONE, true); 100 101 public static final Dop MOVE_OBJECT_FROM16 = 102 new Dop(Opcodes.MOVE_OBJECT_FROM16, Opcodes.MOVE_OBJECT, 103 Opcodes.MOVE_OBJECT_16, Form22x.THE_ONE, true); 104 105 public static final Dop MOVE_OBJECT_16 = 106 new Dop(Opcodes.MOVE_OBJECT_16, Opcodes.MOVE_OBJECT, 107 Opcodes.NO_NEXT, Form32x.THE_ONE, true); 108 109 public static final Dop MOVE_RESULT = 110 new Dop(Opcodes.MOVE_RESULT, Opcodes.MOVE_RESULT, 111 Opcodes.NO_NEXT, Form11x.THE_ONE, true); 112 113 public static final Dop MOVE_RESULT_WIDE = 114 new Dop(Opcodes.MOVE_RESULT_WIDE, Opcodes.MOVE_RESULT_WIDE, 115 Opcodes.NO_NEXT, Form11x.THE_ONE, true); 116 117 public static final Dop MOVE_RESULT_OBJECT = 118 new Dop(Opcodes.MOVE_RESULT_OBJECT, Opcodes.MOVE_RESULT_OBJECT, 119 Opcodes.NO_NEXT, Form11x.THE_ONE, true); 120 121 public static final Dop MOVE_EXCEPTION = 122 new Dop(Opcodes.MOVE_EXCEPTION, Opcodes.MOVE_EXCEPTION, 123 Opcodes.NO_NEXT, Form11x.THE_ONE, true); 124 125 public static final Dop RETURN_VOID = 126 new Dop(Opcodes.RETURN_VOID, Opcodes.RETURN_VOID, 127 Opcodes.NO_NEXT, Form10x.THE_ONE, false); 128 129 public static final Dop RETURN = 130 new Dop(Opcodes.RETURN, Opcodes.RETURN, 131 Opcodes.NO_NEXT, Form11x.THE_ONE, false); 132 133 public static final Dop RETURN_WIDE = 134 new Dop(Opcodes.RETURN_WIDE, Opcodes.RETURN_WIDE, 135 Opcodes.NO_NEXT, Form11x.THE_ONE, false); 136 137 public static final Dop RETURN_OBJECT = 138 new Dop(Opcodes.RETURN_OBJECT, Opcodes.RETURN_OBJECT, 139 Opcodes.NO_NEXT, Form11x.THE_ONE, false); 140 141 public static final Dop CONST_4 = 142 new Dop(Opcodes.CONST_4, Opcodes.CONST, 143 Opcodes.CONST_16, Form11n.THE_ONE, true); 144 145 public static final Dop CONST_16 = 146 new Dop(Opcodes.CONST_16, Opcodes.CONST, 147 Opcodes.CONST_HIGH16, Form21s.THE_ONE, true); 148 149 public static final Dop CONST = 150 new Dop(Opcodes.CONST, Opcodes.CONST, 151 Opcodes.NO_NEXT, Form31i.THE_ONE, true); 152 153 public static final Dop CONST_HIGH16 = 154 new Dop(Opcodes.CONST_HIGH16, Opcodes.CONST, 155 Opcodes.CONST, Form21h.THE_ONE, true); 156 157 public static final Dop CONST_WIDE_16 = 158 new Dop(Opcodes.CONST_WIDE_16, Opcodes.CONST_WIDE, 159 Opcodes.CONST_WIDE_HIGH16, Form21s.THE_ONE, true); 160 161 public static final Dop CONST_WIDE_32 = 162 new Dop(Opcodes.CONST_WIDE_32, Opcodes.CONST_WIDE, 163 Opcodes.CONST_WIDE, Form31i.THE_ONE, true); 164 165 public static final Dop CONST_WIDE = 166 new Dop(Opcodes.CONST_WIDE, Opcodes.CONST_WIDE, 167 Opcodes.NO_NEXT, Form51l.THE_ONE, true); 168 169 public static final Dop CONST_WIDE_HIGH16 = 170 new Dop(Opcodes.CONST_WIDE_HIGH16, Opcodes.CONST_WIDE, 171 Opcodes.CONST_WIDE_32, Form21h.THE_ONE, true); 172 173 public static final Dop CONST_STRING = 174 new Dop(Opcodes.CONST_STRING, Opcodes.CONST_STRING, 175 Opcodes.CONST_STRING_JUMBO, Form21c.THE_ONE, true); 176 177 public static final Dop CONST_STRING_JUMBO = 178 new Dop(Opcodes.CONST_STRING_JUMBO, Opcodes.CONST_STRING, 179 Opcodes.NO_NEXT, Form31c.THE_ONE, true); 180 181 public static final Dop CONST_CLASS = 182 new Dop(Opcodes.CONST_CLASS, Opcodes.CONST_CLASS, 183 Opcodes.CONST_CLASS_JUMBO, Form21c.THE_ONE, true); 184 185 public static final Dop MONITOR_ENTER = 186 new Dop(Opcodes.MONITOR_ENTER, Opcodes.MONITOR_ENTER, 187 Opcodes.NO_NEXT, Form11x.THE_ONE, false); 188 189 public static final Dop MONITOR_EXIT = 190 new Dop(Opcodes.MONITOR_EXIT, Opcodes.MONITOR_EXIT, 191 Opcodes.NO_NEXT, Form11x.THE_ONE, false); 192 193 public static final Dop CHECK_CAST = 194 new Dop(Opcodes.CHECK_CAST, Opcodes.CHECK_CAST, 195 Opcodes.CHECK_CAST_JUMBO, Form21c.THE_ONE, true); 196 197 public static final Dop INSTANCE_OF = 198 new Dop(Opcodes.INSTANCE_OF, Opcodes.INSTANCE_OF, 199 Opcodes.INSTANCE_OF_JUMBO, Form22c.THE_ONE, true); 200 201 public static final Dop ARRAY_LENGTH = 202 new Dop(Opcodes.ARRAY_LENGTH, Opcodes.ARRAY_LENGTH, 203 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 204 205 public static final Dop NEW_INSTANCE = 206 new Dop(Opcodes.NEW_INSTANCE, Opcodes.NEW_INSTANCE, 207 Opcodes.NEW_INSTANCE_JUMBO, Form21c.THE_ONE, true); 208 209 public static final Dop NEW_ARRAY = 210 new Dop(Opcodes.NEW_ARRAY, Opcodes.NEW_ARRAY, 211 Opcodes.NEW_ARRAY_JUMBO, Form22c.THE_ONE, true); 212 213 public static final Dop FILLED_NEW_ARRAY = 214 new Dop(Opcodes.FILLED_NEW_ARRAY, Opcodes.FILLED_NEW_ARRAY, 215 Opcodes.FILLED_NEW_ARRAY_RANGE, Form35c.THE_ONE, false); 216 217 public static final Dop FILLED_NEW_ARRAY_RANGE = 218 new Dop(Opcodes.FILLED_NEW_ARRAY_RANGE, Opcodes.FILLED_NEW_ARRAY, 219 Opcodes.FILLED_NEW_ARRAY_JUMBO, Form3rc.THE_ONE, false); 220 221 public static final Dop FILL_ARRAY_DATA = 222 new Dop(Opcodes.FILL_ARRAY_DATA, Opcodes.FILL_ARRAY_DATA, 223 Opcodes.NO_NEXT, Form31t.THE_ONE, false); 224 225 public static final Dop THROW = 226 new Dop(Opcodes.THROW, Opcodes.THROW, 227 Opcodes.NO_NEXT, Form11x.THE_ONE, false); 228 229 public static final Dop GOTO = 230 new Dop(Opcodes.GOTO, Opcodes.GOTO, 231 Opcodes.GOTO_16, Form10t.THE_ONE, false); 232 233 public static final Dop GOTO_16 = 234 new Dop(Opcodes.GOTO_16, Opcodes.GOTO, 235 Opcodes.GOTO_32, Form20t.THE_ONE, false); 236 237 public static final Dop GOTO_32 = 238 new Dop(Opcodes.GOTO_32, Opcodes.GOTO, 239 Opcodes.NO_NEXT, Form30t.THE_ONE, false); 240 241 public static final Dop PACKED_SWITCH = 242 new Dop(Opcodes.PACKED_SWITCH, Opcodes.PACKED_SWITCH, 243 Opcodes.NO_NEXT, Form31t.THE_ONE, false); 244 245 public static final Dop SPARSE_SWITCH = 246 new Dop(Opcodes.SPARSE_SWITCH, Opcodes.SPARSE_SWITCH, 247 Opcodes.NO_NEXT, Form31t.THE_ONE, false); 248 249 public static final Dop CMPL_FLOAT = 250 new Dop(Opcodes.CMPL_FLOAT, Opcodes.CMPL_FLOAT, 251 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 252 253 public static final Dop CMPG_FLOAT = 254 new Dop(Opcodes.CMPG_FLOAT, Opcodes.CMPG_FLOAT, 255 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 256 257 public static final Dop CMPL_DOUBLE = 258 new Dop(Opcodes.CMPL_DOUBLE, Opcodes.CMPL_DOUBLE, 259 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 260 261 public static final Dop CMPG_DOUBLE = 262 new Dop(Opcodes.CMPG_DOUBLE, Opcodes.CMPG_DOUBLE, 263 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 264 265 public static final Dop CMP_LONG = 266 new Dop(Opcodes.CMP_LONG, Opcodes.CMP_LONG, 267 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 268 269 public static final Dop IF_EQ = 270 new Dop(Opcodes.IF_EQ, Opcodes.IF_EQ, 271 Opcodes.NO_NEXT, Form22t.THE_ONE, false); 272 273 public static final Dop IF_NE = 274 new Dop(Opcodes.IF_NE, Opcodes.IF_NE, 275 Opcodes.NO_NEXT, Form22t.THE_ONE, false); 276 277 public static final Dop IF_LT = 278 new Dop(Opcodes.IF_LT, Opcodes.IF_LT, 279 Opcodes.NO_NEXT, Form22t.THE_ONE, false); 280 281 public static final Dop IF_GE = 282 new Dop(Opcodes.IF_GE, Opcodes.IF_GE, 283 Opcodes.NO_NEXT, Form22t.THE_ONE, false); 284 285 public static final Dop IF_GT = 286 new Dop(Opcodes.IF_GT, Opcodes.IF_GT, 287 Opcodes.NO_NEXT, Form22t.THE_ONE, false); 288 289 public static final Dop IF_LE = 290 new Dop(Opcodes.IF_LE, Opcodes.IF_LE, 291 Opcodes.NO_NEXT, Form22t.THE_ONE, false); 292 293 public static final Dop IF_EQZ = 294 new Dop(Opcodes.IF_EQZ, Opcodes.IF_EQZ, 295 Opcodes.NO_NEXT, Form21t.THE_ONE, false); 296 297 public static final Dop IF_NEZ = 298 new Dop(Opcodes.IF_NEZ, Opcodes.IF_NEZ, 299 Opcodes.NO_NEXT, Form21t.THE_ONE, false); 300 301 public static final Dop IF_LTZ = 302 new Dop(Opcodes.IF_LTZ, Opcodes.IF_LTZ, 303 Opcodes.NO_NEXT, Form21t.THE_ONE, false); 304 305 public static final Dop IF_GEZ = 306 new Dop(Opcodes.IF_GEZ, Opcodes.IF_GEZ, 307 Opcodes.NO_NEXT, Form21t.THE_ONE, false); 308 309 public static final Dop IF_GTZ = 310 new Dop(Opcodes.IF_GTZ, Opcodes.IF_GTZ, 311 Opcodes.NO_NEXT, Form21t.THE_ONE, false); 312 313 public static final Dop IF_LEZ = 314 new Dop(Opcodes.IF_LEZ, Opcodes.IF_LEZ, 315 Opcodes.NO_NEXT, Form21t.THE_ONE, false); 316 317 public static final Dop AGET = 318 new Dop(Opcodes.AGET, Opcodes.AGET, 319 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 320 321 public static final Dop AGET_WIDE = 322 new Dop(Opcodes.AGET_WIDE, Opcodes.AGET_WIDE, 323 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 324 325 public static final Dop AGET_OBJECT = 326 new Dop(Opcodes.AGET_OBJECT, Opcodes.AGET_OBJECT, 327 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 328 329 public static final Dop AGET_BOOLEAN = 330 new Dop(Opcodes.AGET_BOOLEAN, Opcodes.AGET_BOOLEAN, 331 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 332 333 public static final Dop AGET_BYTE = 334 new Dop(Opcodes.AGET_BYTE, Opcodes.AGET_BYTE, 335 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 336 337 public static final Dop AGET_CHAR = 338 new Dop(Opcodes.AGET_CHAR, Opcodes.AGET_CHAR, 339 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 340 341 public static final Dop AGET_SHORT = 342 new Dop(Opcodes.AGET_SHORT, Opcodes.AGET_SHORT, 343 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 344 345 public static final Dop APUT = 346 new Dop(Opcodes.APUT, Opcodes.APUT, 347 Opcodes.NO_NEXT, Form23x.THE_ONE, false); 348 349 public static final Dop APUT_WIDE = 350 new Dop(Opcodes.APUT_WIDE, Opcodes.APUT_WIDE, 351 Opcodes.NO_NEXT, Form23x.THE_ONE, false); 352 353 public static final Dop APUT_OBJECT = 354 new Dop(Opcodes.APUT_OBJECT, Opcodes.APUT_OBJECT, 355 Opcodes.NO_NEXT, Form23x.THE_ONE, false); 356 357 public static final Dop APUT_BOOLEAN = 358 new Dop(Opcodes.APUT_BOOLEAN, Opcodes.APUT_BOOLEAN, 359 Opcodes.NO_NEXT, Form23x.THE_ONE, false); 360 361 public static final Dop APUT_BYTE = 362 new Dop(Opcodes.APUT_BYTE, Opcodes.APUT_BYTE, 363 Opcodes.NO_NEXT, Form23x.THE_ONE, false); 364 365 public static final Dop APUT_CHAR = 366 new Dop(Opcodes.APUT_CHAR, Opcodes.APUT_CHAR, 367 Opcodes.NO_NEXT, Form23x.THE_ONE, false); 368 369 public static final Dop APUT_SHORT = 370 new Dop(Opcodes.APUT_SHORT, Opcodes.APUT_SHORT, 371 Opcodes.NO_NEXT, Form23x.THE_ONE, false); 372 373 public static final Dop IGET = 374 new Dop(Opcodes.IGET, Opcodes.IGET, 375 Opcodes.IGET_JUMBO, Form22c.THE_ONE, true); 376 377 public static final Dop IGET_WIDE = 378 new Dop(Opcodes.IGET_WIDE, Opcodes.IGET_WIDE, 379 Opcodes.IGET_WIDE_JUMBO, Form22c.THE_ONE, true); 380 381 public static final Dop IGET_OBJECT = 382 new Dop(Opcodes.IGET_OBJECT, Opcodes.IGET_OBJECT, 383 Opcodes.IGET_OBJECT_JUMBO, Form22c.THE_ONE, true); 384 385 public static final Dop IGET_BOOLEAN = 386 new Dop(Opcodes.IGET_BOOLEAN, Opcodes.IGET_BOOLEAN, 387 Opcodes.IGET_BOOLEAN_JUMBO, Form22c.THE_ONE, true); 388 389 public static final Dop IGET_BYTE = 390 new Dop(Opcodes.IGET_BYTE, Opcodes.IGET_BYTE, 391 Opcodes.IGET_BYTE_JUMBO, Form22c.THE_ONE, true); 392 393 public static final Dop IGET_CHAR = 394 new Dop(Opcodes.IGET_CHAR, Opcodes.IGET_CHAR, 395 Opcodes.IGET_CHAR_JUMBO, Form22c.THE_ONE, true); 396 397 public static final Dop IGET_SHORT = 398 new Dop(Opcodes.IGET_SHORT, Opcodes.IGET_SHORT, 399 Opcodes.IGET_SHORT_JUMBO, Form22c.THE_ONE, true); 400 401 public static final Dop IPUT = 402 new Dop(Opcodes.IPUT, Opcodes.IPUT, 403 Opcodes.IPUT_JUMBO, Form22c.THE_ONE, false); 404 405 public static final Dop IPUT_WIDE = 406 new Dop(Opcodes.IPUT_WIDE, Opcodes.IPUT_WIDE, 407 Opcodes.IPUT_WIDE_JUMBO, Form22c.THE_ONE, false); 408 409 public static final Dop IPUT_OBJECT = 410 new Dop(Opcodes.IPUT_OBJECT, Opcodes.IPUT_OBJECT, 411 Opcodes.IPUT_OBJECT_JUMBO, Form22c.THE_ONE, false); 412 413 public static final Dop IPUT_BOOLEAN = 414 new Dop(Opcodes.IPUT_BOOLEAN, Opcodes.IPUT_BOOLEAN, 415 Opcodes.IPUT_BOOLEAN_JUMBO, Form22c.THE_ONE, false); 416 417 public static final Dop IPUT_BYTE = 418 new Dop(Opcodes.IPUT_BYTE, Opcodes.IPUT_BYTE, 419 Opcodes.IPUT_BYTE_JUMBO, Form22c.THE_ONE, false); 420 421 public static final Dop IPUT_CHAR = 422 new Dop(Opcodes.IPUT_CHAR, Opcodes.IPUT_CHAR, 423 Opcodes.IPUT_CHAR_JUMBO, Form22c.THE_ONE, false); 424 425 public static final Dop IPUT_SHORT = 426 new Dop(Opcodes.IPUT_SHORT, Opcodes.IPUT_SHORT, 427 Opcodes.IPUT_SHORT_JUMBO, Form22c.THE_ONE, false); 428 429 public static final Dop SGET = 430 new Dop(Opcodes.SGET, Opcodes.SGET, 431 Opcodes.SGET_JUMBO, Form21c.THE_ONE, true); 432 433 public static final Dop SGET_WIDE = 434 new Dop(Opcodes.SGET_WIDE, Opcodes.SGET_WIDE, 435 Opcodes.SGET_WIDE_JUMBO, Form21c.THE_ONE, true); 436 437 public static final Dop SGET_OBJECT = 438 new Dop(Opcodes.SGET_OBJECT, Opcodes.SGET_OBJECT, 439 Opcodes.SGET_OBJECT_JUMBO, Form21c.THE_ONE, true); 440 441 public static final Dop SGET_BOOLEAN = 442 new Dop(Opcodes.SGET_BOOLEAN, Opcodes.SGET_BOOLEAN, 443 Opcodes.SGET_BOOLEAN_JUMBO, Form21c.THE_ONE, true); 444 445 public static final Dop SGET_BYTE = 446 new Dop(Opcodes.SGET_BYTE, Opcodes.SGET_BYTE, 447 Opcodes.SGET_BYTE_JUMBO, Form21c.THE_ONE, true); 448 449 public static final Dop SGET_CHAR = 450 new Dop(Opcodes.SGET_CHAR, Opcodes.SGET_CHAR, 451 Opcodes.SGET_CHAR_JUMBO, Form21c.THE_ONE, true); 452 453 public static final Dop SGET_SHORT = 454 new Dop(Opcodes.SGET_SHORT, Opcodes.SGET_SHORT, 455 Opcodes.SGET_SHORT_JUMBO, Form21c.THE_ONE, true); 456 457 public static final Dop SPUT = 458 new Dop(Opcodes.SPUT, Opcodes.SPUT, 459 Opcodes.SPUT_JUMBO, Form21c.THE_ONE, false); 460 461 public static final Dop SPUT_WIDE = 462 new Dop(Opcodes.SPUT_WIDE, Opcodes.SPUT_WIDE, 463 Opcodes.SPUT_WIDE_JUMBO, Form21c.THE_ONE, false); 464 465 public static final Dop SPUT_OBJECT = 466 new Dop(Opcodes.SPUT_OBJECT, Opcodes.SPUT_OBJECT, 467 Opcodes.SPUT_OBJECT_JUMBO, Form21c.THE_ONE, false); 468 469 public static final Dop SPUT_BOOLEAN = 470 new Dop(Opcodes.SPUT_BOOLEAN, Opcodes.SPUT_BOOLEAN, 471 Opcodes.SPUT_BOOLEAN_JUMBO, Form21c.THE_ONE, false); 472 473 public static final Dop SPUT_BYTE = 474 new Dop(Opcodes.SPUT_BYTE, Opcodes.SPUT_BYTE, 475 Opcodes.SPUT_BYTE_JUMBO, Form21c.THE_ONE, false); 476 477 public static final Dop SPUT_CHAR = 478 new Dop(Opcodes.SPUT_CHAR, Opcodes.SPUT_CHAR, 479 Opcodes.SPUT_CHAR_JUMBO, Form21c.THE_ONE, false); 480 481 public static final Dop SPUT_SHORT = 482 new Dop(Opcodes.SPUT_SHORT, Opcodes.SPUT_SHORT, 483 Opcodes.SPUT_SHORT_JUMBO, Form21c.THE_ONE, false); 484 485 public static final Dop INVOKE_VIRTUAL = 486 new Dop(Opcodes.INVOKE_VIRTUAL, Opcodes.INVOKE_VIRTUAL, 487 Opcodes.INVOKE_VIRTUAL_RANGE, Form35c.THE_ONE, false); 488 489 public static final Dop INVOKE_SUPER = 490 new Dop(Opcodes.INVOKE_SUPER, Opcodes.INVOKE_SUPER, 491 Opcodes.INVOKE_SUPER_RANGE, Form35c.THE_ONE, false); 492 493 public static final Dop INVOKE_DIRECT = 494 new Dop(Opcodes.INVOKE_DIRECT, Opcodes.INVOKE_DIRECT, 495 Opcodes.INVOKE_DIRECT_RANGE, Form35c.THE_ONE, false); 496 497 public static final Dop INVOKE_STATIC = 498 new Dop(Opcodes.INVOKE_STATIC, Opcodes.INVOKE_STATIC, 499 Opcodes.INVOKE_STATIC_RANGE, Form35c.THE_ONE, false); 500 501 public static final Dop INVOKE_INTERFACE = 502 new Dop(Opcodes.INVOKE_INTERFACE, Opcodes.INVOKE_INTERFACE, 503 Opcodes.INVOKE_INTERFACE_RANGE, Form35c.THE_ONE, false); 504 505 public static final Dop INVOKE_VIRTUAL_RANGE = 506 new Dop(Opcodes.INVOKE_VIRTUAL_RANGE, Opcodes.INVOKE_VIRTUAL, 507 Opcodes.INVOKE_VIRTUAL_JUMBO, Form3rc.THE_ONE, false); 508 509 public static final Dop INVOKE_SUPER_RANGE = 510 new Dop(Opcodes.INVOKE_SUPER_RANGE, Opcodes.INVOKE_SUPER, 511 Opcodes.INVOKE_SUPER_JUMBO, Form3rc.THE_ONE, false); 512 513 public static final Dop INVOKE_DIRECT_RANGE = 514 new Dop(Opcodes.INVOKE_DIRECT_RANGE, Opcodes.INVOKE_DIRECT, 515 Opcodes.INVOKE_DIRECT_JUMBO, Form3rc.THE_ONE, false); 516 517 public static final Dop INVOKE_STATIC_RANGE = 518 new Dop(Opcodes.INVOKE_STATIC_RANGE, Opcodes.INVOKE_STATIC, 519 Opcodes.INVOKE_STATIC_JUMBO, Form3rc.THE_ONE, false); 520 521 public static final Dop INVOKE_INTERFACE_RANGE = 522 new Dop(Opcodes.INVOKE_INTERFACE_RANGE, Opcodes.INVOKE_INTERFACE, 523 Opcodes.INVOKE_INTERFACE_JUMBO, Form3rc.THE_ONE, false); 524 525 public static final Dop NEG_INT = 526 new Dop(Opcodes.NEG_INT, Opcodes.NEG_INT, 527 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 528 529 public static final Dop NOT_INT = 530 new Dop(Opcodes.NOT_INT, Opcodes.NOT_INT, 531 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 532 533 public static final Dop NEG_LONG = 534 new Dop(Opcodes.NEG_LONG, Opcodes.NEG_LONG, 535 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 536 537 public static final Dop NOT_LONG = 538 new Dop(Opcodes.NOT_LONG, Opcodes.NOT_LONG, 539 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 540 541 public static final Dop NEG_FLOAT = 542 new Dop(Opcodes.NEG_FLOAT, Opcodes.NEG_FLOAT, 543 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 544 545 public static final Dop NEG_DOUBLE = 546 new Dop(Opcodes.NEG_DOUBLE, Opcodes.NEG_DOUBLE, 547 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 548 549 public static final Dop INT_TO_LONG = 550 new Dop(Opcodes.INT_TO_LONG, Opcodes.INT_TO_LONG, 551 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 552 553 public static final Dop INT_TO_FLOAT = 554 new Dop(Opcodes.INT_TO_FLOAT, Opcodes.INT_TO_FLOAT, 555 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 556 557 public static final Dop INT_TO_DOUBLE = 558 new Dop(Opcodes.INT_TO_DOUBLE, Opcodes.INT_TO_DOUBLE, 559 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 560 561 public static final Dop LONG_TO_INT = 562 new Dop(Opcodes.LONG_TO_INT, Opcodes.LONG_TO_INT, 563 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 564 565 public static final Dop LONG_TO_FLOAT = 566 new Dop(Opcodes.LONG_TO_FLOAT, Opcodes.LONG_TO_FLOAT, 567 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 568 569 public static final Dop LONG_TO_DOUBLE = 570 new Dop(Opcodes.LONG_TO_DOUBLE, Opcodes.LONG_TO_DOUBLE, 571 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 572 573 public static final Dop FLOAT_TO_INT = 574 new Dop(Opcodes.FLOAT_TO_INT, Opcodes.FLOAT_TO_INT, 575 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 576 577 public static final Dop FLOAT_TO_LONG = 578 new Dop(Opcodes.FLOAT_TO_LONG, Opcodes.FLOAT_TO_LONG, 579 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 580 581 public static final Dop FLOAT_TO_DOUBLE = 582 new Dop(Opcodes.FLOAT_TO_DOUBLE, Opcodes.FLOAT_TO_DOUBLE, 583 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 584 585 public static final Dop DOUBLE_TO_INT = 586 new Dop(Opcodes.DOUBLE_TO_INT, Opcodes.DOUBLE_TO_INT, 587 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 588 589 public static final Dop DOUBLE_TO_LONG = 590 new Dop(Opcodes.DOUBLE_TO_LONG, Opcodes.DOUBLE_TO_LONG, 591 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 592 593 public static final Dop DOUBLE_TO_FLOAT = 594 new Dop(Opcodes.DOUBLE_TO_FLOAT, Opcodes.DOUBLE_TO_FLOAT, 595 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 596 597 public static final Dop INT_TO_BYTE = 598 new Dop(Opcodes.INT_TO_BYTE, Opcodes.INT_TO_BYTE, 599 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 600 601 public static final Dop INT_TO_CHAR = 602 new Dop(Opcodes.INT_TO_CHAR, Opcodes.INT_TO_CHAR, 603 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 604 605 public static final Dop INT_TO_SHORT = 606 new Dop(Opcodes.INT_TO_SHORT, Opcodes.INT_TO_SHORT, 607 Opcodes.NO_NEXT, Form12x.THE_ONE, true); 608 609 public static final Dop ADD_INT = 610 new Dop(Opcodes.ADD_INT, Opcodes.ADD_INT, 611 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 612 613 public static final Dop SUB_INT = 614 new Dop(Opcodes.SUB_INT, Opcodes.SUB_INT, 615 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 616 617 public static final Dop MUL_INT = 618 new Dop(Opcodes.MUL_INT, Opcodes.MUL_INT, 619 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 620 621 public static final Dop DIV_INT = 622 new Dop(Opcodes.DIV_INT, Opcodes.DIV_INT, 623 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 624 625 public static final Dop REM_INT = 626 new Dop(Opcodes.REM_INT, Opcodes.REM_INT, 627 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 628 629 public static final Dop AND_INT = 630 new Dop(Opcodes.AND_INT, Opcodes.AND_INT, 631 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 632 633 public static final Dop OR_INT = 634 new Dop(Opcodes.OR_INT, Opcodes.OR_INT, 635 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 636 637 public static final Dop XOR_INT = 638 new Dop(Opcodes.XOR_INT, Opcodes.XOR_INT, 639 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 640 641 public static final Dop SHL_INT = 642 new Dop(Opcodes.SHL_INT, Opcodes.SHL_INT, 643 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 644 645 public static final Dop SHR_INT = 646 new Dop(Opcodes.SHR_INT, Opcodes.SHR_INT, 647 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 648 649 public static final Dop USHR_INT = 650 new Dop(Opcodes.USHR_INT, Opcodes.USHR_INT, 651 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 652 653 public static final Dop ADD_LONG = 654 new Dop(Opcodes.ADD_LONG, Opcodes.ADD_LONG, 655 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 656 657 public static final Dop SUB_LONG = 658 new Dop(Opcodes.SUB_LONG, Opcodes.SUB_LONG, 659 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 660 661 public static final Dop MUL_LONG = 662 new Dop(Opcodes.MUL_LONG, Opcodes.MUL_LONG, 663 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 664 665 public static final Dop DIV_LONG = 666 new Dop(Opcodes.DIV_LONG, Opcodes.DIV_LONG, 667 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 668 669 public static final Dop REM_LONG = 670 new Dop(Opcodes.REM_LONG, Opcodes.REM_LONG, 671 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 672 673 public static final Dop AND_LONG = 674 new Dop(Opcodes.AND_LONG, Opcodes.AND_LONG, 675 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 676 677 public static final Dop OR_LONG = 678 new Dop(Opcodes.OR_LONG, Opcodes.OR_LONG, 679 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 680 681 public static final Dop XOR_LONG = 682 new Dop(Opcodes.XOR_LONG, Opcodes.XOR_LONG, 683 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 684 685 public static final Dop SHL_LONG = 686 new Dop(Opcodes.SHL_LONG, Opcodes.SHL_LONG, 687 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 688 689 public static final Dop SHR_LONG = 690 new Dop(Opcodes.SHR_LONG, Opcodes.SHR_LONG, 691 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 692 693 public static final Dop USHR_LONG = 694 new Dop(Opcodes.USHR_LONG, Opcodes.USHR_LONG, 695 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 696 697 public static final Dop ADD_FLOAT = 698 new Dop(Opcodes.ADD_FLOAT, Opcodes.ADD_FLOAT, 699 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 700 701 public static final Dop SUB_FLOAT = 702 new Dop(Opcodes.SUB_FLOAT, Opcodes.SUB_FLOAT, 703 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 704 705 public static final Dop MUL_FLOAT = 706 new Dop(Opcodes.MUL_FLOAT, Opcodes.MUL_FLOAT, 707 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 708 709 public static final Dop DIV_FLOAT = 710 new Dop(Opcodes.DIV_FLOAT, Opcodes.DIV_FLOAT, 711 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 712 713 public static final Dop REM_FLOAT = 714 new Dop(Opcodes.REM_FLOAT, Opcodes.REM_FLOAT, 715 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 716 717 public static final Dop ADD_DOUBLE = 718 new Dop(Opcodes.ADD_DOUBLE, Opcodes.ADD_DOUBLE, 719 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 720 721 public static final Dop SUB_DOUBLE = 722 new Dop(Opcodes.SUB_DOUBLE, Opcodes.SUB_DOUBLE, 723 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 724 725 public static final Dop MUL_DOUBLE = 726 new Dop(Opcodes.MUL_DOUBLE, Opcodes.MUL_DOUBLE, 727 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 728 729 public static final Dop DIV_DOUBLE = 730 new Dop(Opcodes.DIV_DOUBLE, Opcodes.DIV_DOUBLE, 731 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 732 733 public static final Dop REM_DOUBLE = 734 new Dop(Opcodes.REM_DOUBLE, Opcodes.REM_DOUBLE, 735 Opcodes.NO_NEXT, Form23x.THE_ONE, true); 736 737 public static final Dop ADD_INT_2ADDR = 738 new Dop(Opcodes.ADD_INT_2ADDR, Opcodes.ADD_INT, 739 Opcodes.ADD_INT, Form12x.THE_ONE, true); 740 741 public static final Dop SUB_INT_2ADDR = 742 new Dop(Opcodes.SUB_INT_2ADDR, Opcodes.SUB_INT, 743 Opcodes.SUB_INT, Form12x.THE_ONE, true); 744 745 public static final Dop MUL_INT_2ADDR = 746 new Dop(Opcodes.MUL_INT_2ADDR, Opcodes.MUL_INT, 747 Opcodes.MUL_INT, Form12x.THE_ONE, true); 748 749 public static final Dop DIV_INT_2ADDR = 750 new Dop(Opcodes.DIV_INT_2ADDR, Opcodes.DIV_INT, 751 Opcodes.DIV_INT, Form12x.THE_ONE, true); 752 753 public static final Dop REM_INT_2ADDR = 754 new Dop(Opcodes.REM_INT_2ADDR, Opcodes.REM_INT, 755 Opcodes.REM_INT, Form12x.THE_ONE, true); 756 757 public static final Dop AND_INT_2ADDR = 758 new Dop(Opcodes.AND_INT_2ADDR, Opcodes.AND_INT, 759 Opcodes.AND_INT, Form12x.THE_ONE, true); 760 761 public static final Dop OR_INT_2ADDR = 762 new Dop(Opcodes.OR_INT_2ADDR, Opcodes.OR_INT, 763 Opcodes.OR_INT, Form12x.THE_ONE, true); 764 765 public static final Dop XOR_INT_2ADDR = 766 new Dop(Opcodes.XOR_INT_2ADDR, Opcodes.XOR_INT, 767 Opcodes.XOR_INT, Form12x.THE_ONE, true); 768 769 public static final Dop SHL_INT_2ADDR = 770 new Dop(Opcodes.SHL_INT_2ADDR, Opcodes.SHL_INT, 771 Opcodes.SHL_INT, Form12x.THE_ONE, true); 772 773 public static final Dop SHR_INT_2ADDR = 774 new Dop(Opcodes.SHR_INT_2ADDR, Opcodes.SHR_INT, 775 Opcodes.SHR_INT, Form12x.THE_ONE, true); 776 777 public static final Dop USHR_INT_2ADDR = 778 new Dop(Opcodes.USHR_INT_2ADDR, Opcodes.USHR_INT, 779 Opcodes.USHR_INT, Form12x.THE_ONE, true); 780 781 public static final Dop ADD_LONG_2ADDR = 782 new Dop(Opcodes.ADD_LONG_2ADDR, Opcodes.ADD_LONG, 783 Opcodes.ADD_LONG, Form12x.THE_ONE, true); 784 785 public static final Dop SUB_LONG_2ADDR = 786 new Dop(Opcodes.SUB_LONG_2ADDR, Opcodes.SUB_LONG, 787 Opcodes.SUB_LONG, Form12x.THE_ONE, true); 788 789 public static final Dop MUL_LONG_2ADDR = 790 new Dop(Opcodes.MUL_LONG_2ADDR, Opcodes.MUL_LONG, 791 Opcodes.MUL_LONG, Form12x.THE_ONE, true); 792 793 public static final Dop DIV_LONG_2ADDR = 794 new Dop(Opcodes.DIV_LONG_2ADDR, Opcodes.DIV_LONG, 795 Opcodes.DIV_LONG, Form12x.THE_ONE, true); 796 797 public static final Dop REM_LONG_2ADDR = 798 new Dop(Opcodes.REM_LONG_2ADDR, Opcodes.REM_LONG, 799 Opcodes.REM_LONG, Form12x.THE_ONE, true); 800 801 public static final Dop AND_LONG_2ADDR = 802 new Dop(Opcodes.AND_LONG_2ADDR, Opcodes.AND_LONG, 803 Opcodes.AND_LONG, Form12x.THE_ONE, true); 804 805 public static final Dop OR_LONG_2ADDR = 806 new Dop(Opcodes.OR_LONG_2ADDR, Opcodes.OR_LONG, 807 Opcodes.OR_LONG, Form12x.THE_ONE, true); 808 809 public static final Dop XOR_LONG_2ADDR = 810 new Dop(Opcodes.XOR_LONG_2ADDR, Opcodes.XOR_LONG, 811 Opcodes.XOR_LONG, Form12x.THE_ONE, true); 812 813 public static final Dop SHL_LONG_2ADDR = 814 new Dop(Opcodes.SHL_LONG_2ADDR, Opcodes.SHL_LONG, 815 Opcodes.SHL_LONG, Form12x.THE_ONE, true); 816 817 public static final Dop SHR_LONG_2ADDR = 818 new Dop(Opcodes.SHR_LONG_2ADDR, Opcodes.SHR_LONG, 819 Opcodes.SHR_LONG, Form12x.THE_ONE, true); 820 821 public static final Dop USHR_LONG_2ADDR = 822 new Dop(Opcodes.USHR_LONG_2ADDR, Opcodes.USHR_LONG, 823 Opcodes.USHR_LONG, Form12x.THE_ONE, true); 824 825 public static final Dop ADD_FLOAT_2ADDR = 826 new Dop(Opcodes.ADD_FLOAT_2ADDR, Opcodes.ADD_FLOAT, 827 Opcodes.ADD_FLOAT, Form12x.THE_ONE, true); 828 829 public static final Dop SUB_FLOAT_2ADDR = 830 new Dop(Opcodes.SUB_FLOAT_2ADDR, Opcodes.SUB_FLOAT, 831 Opcodes.SUB_FLOAT, Form12x.THE_ONE, true); 832 833 public static final Dop MUL_FLOAT_2ADDR = 834 new Dop(Opcodes.MUL_FLOAT_2ADDR, Opcodes.MUL_FLOAT, 835 Opcodes.MUL_FLOAT, Form12x.THE_ONE, true); 836 837 public static final Dop DIV_FLOAT_2ADDR = 838 new Dop(Opcodes.DIV_FLOAT_2ADDR, Opcodes.DIV_FLOAT, 839 Opcodes.DIV_FLOAT, Form12x.THE_ONE, true); 840 841 public static final Dop REM_FLOAT_2ADDR = 842 new Dop(Opcodes.REM_FLOAT_2ADDR, Opcodes.REM_FLOAT, 843 Opcodes.REM_FLOAT, Form12x.THE_ONE, true); 844 845 public static final Dop ADD_DOUBLE_2ADDR = 846 new Dop(Opcodes.ADD_DOUBLE_2ADDR, Opcodes.ADD_DOUBLE, 847 Opcodes.ADD_DOUBLE, Form12x.THE_ONE, true); 848 849 public static final Dop SUB_DOUBLE_2ADDR = 850 new Dop(Opcodes.SUB_DOUBLE_2ADDR, Opcodes.SUB_DOUBLE, 851 Opcodes.SUB_DOUBLE, Form12x.THE_ONE, true); 852 853 public static final Dop MUL_DOUBLE_2ADDR = 854 new Dop(Opcodes.MUL_DOUBLE_2ADDR, Opcodes.MUL_DOUBLE, 855 Opcodes.MUL_DOUBLE, Form12x.THE_ONE, true); 856 857 public static final Dop DIV_DOUBLE_2ADDR = 858 new Dop(Opcodes.DIV_DOUBLE_2ADDR, Opcodes.DIV_DOUBLE, 859 Opcodes.DIV_DOUBLE, Form12x.THE_ONE, true); 860 861 public static final Dop REM_DOUBLE_2ADDR = 862 new Dop(Opcodes.REM_DOUBLE_2ADDR, Opcodes.REM_DOUBLE, 863 Opcodes.REM_DOUBLE, Form12x.THE_ONE, true); 864 865 public static final Dop ADD_INT_LIT16 = 866 new Dop(Opcodes.ADD_INT_LIT16, Opcodes.ADD_INT, 867 Opcodes.NO_NEXT, Form22s.THE_ONE, true); 868 869 public static final Dop RSUB_INT = 870 new Dop(Opcodes.RSUB_INT, Opcodes.RSUB_INT, 871 Opcodes.NO_NEXT, Form22s.THE_ONE, true); 872 873 public static final Dop MUL_INT_LIT16 = 874 new Dop(Opcodes.MUL_INT_LIT16, Opcodes.MUL_INT, 875 Opcodes.NO_NEXT, Form22s.THE_ONE, true); 876 877 public static final Dop DIV_INT_LIT16 = 878 new Dop(Opcodes.DIV_INT_LIT16, Opcodes.DIV_INT, 879 Opcodes.NO_NEXT, Form22s.THE_ONE, true); 880 881 public static final Dop REM_INT_LIT16 = 882 new Dop(Opcodes.REM_INT_LIT16, Opcodes.REM_INT, 883 Opcodes.NO_NEXT, Form22s.THE_ONE, true); 884 885 public static final Dop AND_INT_LIT16 = 886 new Dop(Opcodes.AND_INT_LIT16, Opcodes.AND_INT, 887 Opcodes.NO_NEXT, Form22s.THE_ONE, true); 888 889 public static final Dop OR_INT_LIT16 = 890 new Dop(Opcodes.OR_INT_LIT16, Opcodes.OR_INT, 891 Opcodes.NO_NEXT, Form22s.THE_ONE, true); 892 893 public static final Dop XOR_INT_LIT16 = 894 new Dop(Opcodes.XOR_INT_LIT16, Opcodes.XOR_INT, 895 Opcodes.NO_NEXT, Form22s.THE_ONE, true); 896 897 public static final Dop ADD_INT_LIT8 = 898 new Dop(Opcodes.ADD_INT_LIT8, Opcodes.ADD_INT, 899 Opcodes.ADD_INT_LIT16, Form22b.THE_ONE, true); 900 901 public static final Dop RSUB_INT_LIT8 = 902 new Dop(Opcodes.RSUB_INT_LIT8, Opcodes.RSUB_INT, 903 Opcodes.RSUB_INT, Form22b.THE_ONE, true); 904 905 public static final Dop MUL_INT_LIT8 = 906 new Dop(Opcodes.MUL_INT_LIT8, Opcodes.MUL_INT, 907 Opcodes.MUL_INT_LIT16, Form22b.THE_ONE, true); 908 909 public static final Dop DIV_INT_LIT8 = 910 new Dop(Opcodes.DIV_INT_LIT8, Opcodes.DIV_INT, 911 Opcodes.DIV_INT_LIT16, Form22b.THE_ONE, true); 912 913 public static final Dop REM_INT_LIT8 = 914 new Dop(Opcodes.REM_INT_LIT8, Opcodes.REM_INT, 915 Opcodes.REM_INT_LIT16, Form22b.THE_ONE, true); 916 917 public static final Dop AND_INT_LIT8 = 918 new Dop(Opcodes.AND_INT_LIT8, Opcodes.AND_INT, 919 Opcodes.AND_INT_LIT16, Form22b.THE_ONE, true); 920 921 public static final Dop OR_INT_LIT8 = 922 new Dop(Opcodes.OR_INT_LIT8, Opcodes.OR_INT, 923 Opcodes.OR_INT_LIT16, Form22b.THE_ONE, true); 924 925 public static final Dop XOR_INT_LIT8 = 926 new Dop(Opcodes.XOR_INT_LIT8, Opcodes.XOR_INT, 927 Opcodes.XOR_INT_LIT16, Form22b.THE_ONE, true); 928 929 public static final Dop SHL_INT_LIT8 = 930 new Dop(Opcodes.SHL_INT_LIT8, Opcodes.SHL_INT, 931 Opcodes.NO_NEXT, Form22b.THE_ONE, true); 932 933 public static final Dop SHR_INT_LIT8 = 934 new Dop(Opcodes.SHR_INT_LIT8, Opcodes.SHR_INT, 935 Opcodes.NO_NEXT, Form22b.THE_ONE, true); 936 937 public static final Dop USHR_INT_LIT8 = 938 new Dop(Opcodes.USHR_INT_LIT8, Opcodes.USHR_INT, 939 Opcodes.NO_NEXT, Form22b.THE_ONE, true); 940 941 public static final Dop CONST_CLASS_JUMBO = 942 new Dop(Opcodes.CONST_CLASS_JUMBO, Opcodes.CONST_CLASS, 943 Opcodes.NO_NEXT, Form41c.THE_ONE, true); 944 945 public static final Dop CHECK_CAST_JUMBO = 946 new Dop(Opcodes.CHECK_CAST_JUMBO, Opcodes.CHECK_CAST, 947 Opcodes.NO_NEXT, Form41c.THE_ONE, false); 948 949 public static final Dop INSTANCE_OF_JUMBO = 950 new Dop(Opcodes.INSTANCE_OF_JUMBO, Opcodes.INSTANCE_OF, 951 Opcodes.NO_NEXT, Form52c.THE_ONE, true); 952 953 public static final Dop NEW_INSTANCE_JUMBO = 954 new Dop(Opcodes.NEW_INSTANCE_JUMBO, Opcodes.NEW_INSTANCE, 955 Opcodes.NO_NEXT, Form41c.THE_ONE, true); 956 957 public static final Dop NEW_ARRAY_JUMBO = 958 new Dop(Opcodes.NEW_ARRAY_JUMBO, Opcodes.NEW_ARRAY, 959 Opcodes.NO_NEXT, Form52c.THE_ONE, true); 960 961 public static final Dop FILLED_NEW_ARRAY_JUMBO = 962 new Dop(Opcodes.FILLED_NEW_ARRAY_JUMBO, Opcodes.FILLED_NEW_ARRAY, 963 Opcodes.NO_NEXT, Form5rc.THE_ONE, false); 964 965 public static final Dop IGET_JUMBO = 966 new Dop(Opcodes.IGET_JUMBO, Opcodes.IGET, 967 Opcodes.NO_NEXT, Form52c.THE_ONE, true); 968 969 public static final Dop IGET_WIDE_JUMBO = 970 new Dop(Opcodes.IGET_WIDE_JUMBO, Opcodes.IGET_WIDE, 971 Opcodes.NO_NEXT, Form52c.THE_ONE, true); 972 973 public static final Dop IGET_OBJECT_JUMBO = 974 new Dop(Opcodes.IGET_OBJECT_JUMBO, Opcodes.IGET_OBJECT, 975 Opcodes.NO_NEXT, Form52c.THE_ONE, true); 976 977 public static final Dop IGET_BOOLEAN_JUMBO = 978 new Dop(Opcodes.IGET_BOOLEAN_JUMBO, Opcodes.IGET_BOOLEAN, 979 Opcodes.NO_NEXT, Form52c.THE_ONE, true); 980 981 public static final Dop IGET_BYTE_JUMBO = 982 new Dop(Opcodes.IGET_BYTE_JUMBO, Opcodes.IGET_BYTE, 983 Opcodes.NO_NEXT, Form52c.THE_ONE, true); 984 985 public static final Dop IGET_CHAR_JUMBO = 986 new Dop(Opcodes.IGET_CHAR_JUMBO, Opcodes.IGET_CHAR, 987 Opcodes.NO_NEXT, Form52c.THE_ONE, true); 988 989 public static final Dop IGET_SHORT_JUMBO = 990 new Dop(Opcodes.IGET_SHORT_JUMBO, Opcodes.IGET_SHORT, 991 Opcodes.NO_NEXT, Form52c.THE_ONE, true); 992 993 public static final Dop IPUT_JUMBO = 994 new Dop(Opcodes.IPUT_JUMBO, Opcodes.IPUT, 995 Opcodes.NO_NEXT, Form52c.THE_ONE, false); 996 997 public static final Dop IPUT_WIDE_JUMBO = 998 new Dop(Opcodes.IPUT_WIDE_JUMBO, Opcodes.IPUT_WIDE, 999 Opcodes.NO_NEXT, Form52c.THE_ONE, false); 1000 1001 public static final Dop IPUT_OBJECT_JUMBO = 1002 new Dop(Opcodes.IPUT_OBJECT_JUMBO, Opcodes.IPUT_OBJECT, 1003 Opcodes.NO_NEXT, Form52c.THE_ONE, false); 1004 1005 public static final Dop IPUT_BOOLEAN_JUMBO = 1006 new Dop(Opcodes.IPUT_BOOLEAN_JUMBO, Opcodes.IPUT_BOOLEAN, 1007 Opcodes.NO_NEXT, Form52c.THE_ONE, false); 1008 1009 public static final Dop IPUT_BYTE_JUMBO = 1010 new Dop(Opcodes.IPUT_BYTE_JUMBO, Opcodes.IPUT_BYTE, 1011 Opcodes.NO_NEXT, Form52c.THE_ONE, false); 1012 1013 public static final Dop IPUT_CHAR_JUMBO = 1014 new Dop(Opcodes.IPUT_CHAR_JUMBO, Opcodes.IPUT_CHAR, 1015 Opcodes.NO_NEXT, Form52c.THE_ONE, false); 1016 1017 public static final Dop IPUT_SHORT_JUMBO = 1018 new Dop(Opcodes.IPUT_SHORT_JUMBO, Opcodes.IPUT_SHORT, 1019 Opcodes.NO_NEXT, Form52c.THE_ONE, false); 1020 1021 public static final Dop SGET_JUMBO = 1022 new Dop(Opcodes.SGET_JUMBO, Opcodes.SGET, 1023 Opcodes.NO_NEXT, Form41c.THE_ONE, true); 1024 1025 public static final Dop SGET_WIDE_JUMBO = 1026 new Dop(Opcodes.SGET_WIDE_JUMBO, Opcodes.SGET_WIDE, 1027 Opcodes.NO_NEXT, Form41c.THE_ONE, true); 1028 1029 public static final Dop SGET_OBJECT_JUMBO = 1030 new Dop(Opcodes.SGET_OBJECT_JUMBO, Opcodes.SGET_OBJECT, 1031 Opcodes.NO_NEXT, Form41c.THE_ONE, true); 1032 1033 public static final Dop SGET_BOOLEAN_JUMBO = 1034 new Dop(Opcodes.SGET_BOOLEAN_JUMBO, Opcodes.SGET_BOOLEAN, 1035 Opcodes.NO_NEXT, Form41c.THE_ONE, true); 1036 1037 public static final Dop SGET_BYTE_JUMBO = 1038 new Dop(Opcodes.SGET_BYTE_JUMBO, Opcodes.SGET_BYTE, 1039 Opcodes.NO_NEXT, Form41c.THE_ONE, true); 1040 1041 public static final Dop SGET_CHAR_JUMBO = 1042 new Dop(Opcodes.SGET_CHAR_JUMBO, Opcodes.SGET_CHAR, 1043 Opcodes.NO_NEXT, Form41c.THE_ONE, true); 1044 1045 public static final Dop SGET_SHORT_JUMBO = 1046 new Dop(Opcodes.SGET_SHORT_JUMBO, Opcodes.SGET_SHORT, 1047 Opcodes.NO_NEXT, Form41c.THE_ONE, true); 1048 1049 public static final Dop SPUT_JUMBO = 1050 new Dop(Opcodes.SPUT_JUMBO, Opcodes.SPUT, 1051 Opcodes.NO_NEXT, Form41c.THE_ONE, false); 1052 1053 public static final Dop SPUT_WIDE_JUMBO = 1054 new Dop(Opcodes.SPUT_WIDE_JUMBO, Opcodes.SPUT_WIDE, 1055 Opcodes.NO_NEXT, Form41c.THE_ONE, false); 1056 1057 public static final Dop SPUT_OBJECT_JUMBO = 1058 new Dop(Opcodes.SPUT_OBJECT_JUMBO, Opcodes.SPUT_OBJECT, 1059 Opcodes.NO_NEXT, Form41c.THE_ONE, false); 1060 1061 public static final Dop SPUT_BOOLEAN_JUMBO = 1062 new Dop(Opcodes.SPUT_BOOLEAN_JUMBO, Opcodes.SPUT_BOOLEAN, 1063 Opcodes.NO_NEXT, Form41c.THE_ONE, false); 1064 1065 public static final Dop SPUT_BYTE_JUMBO = 1066 new Dop(Opcodes.SPUT_BYTE_JUMBO, Opcodes.SPUT_BYTE, 1067 Opcodes.NO_NEXT, Form41c.THE_ONE, false); 1068 1069 public static final Dop SPUT_CHAR_JUMBO = 1070 new Dop(Opcodes.SPUT_CHAR_JUMBO, Opcodes.SPUT_CHAR, 1071 Opcodes.NO_NEXT, Form41c.THE_ONE, false); 1072 1073 public static final Dop SPUT_SHORT_JUMBO = 1074 new Dop(Opcodes.SPUT_SHORT_JUMBO, Opcodes.SPUT_SHORT, 1075 Opcodes.NO_NEXT, Form41c.THE_ONE, false); 1076 1077 public static final Dop INVOKE_VIRTUAL_JUMBO = 1078 new Dop(Opcodes.INVOKE_VIRTUAL_JUMBO, Opcodes.INVOKE_VIRTUAL, 1079 Opcodes.NO_NEXT, Form5rc.THE_ONE, false); 1080 1081 public static final Dop INVOKE_SUPER_JUMBO = 1082 new Dop(Opcodes.INVOKE_SUPER_JUMBO, Opcodes.INVOKE_SUPER, 1083 Opcodes.NO_NEXT, Form5rc.THE_ONE, false); 1084 1085 public static final Dop INVOKE_DIRECT_JUMBO = 1086 new Dop(Opcodes.INVOKE_DIRECT_JUMBO, Opcodes.INVOKE_DIRECT, 1087 Opcodes.NO_NEXT, Form5rc.THE_ONE, false); 1088 1089 public static final Dop INVOKE_STATIC_JUMBO = 1090 new Dop(Opcodes.INVOKE_STATIC_JUMBO, Opcodes.INVOKE_STATIC, 1091 Opcodes.NO_NEXT, Form5rc.THE_ONE, false); 1092 1093 public static final Dop INVOKE_INTERFACE_JUMBO = 1094 new Dop(Opcodes.INVOKE_INTERFACE_JUMBO, Opcodes.INVOKE_INTERFACE, 1095 Opcodes.NO_NEXT, Form5rc.THE_ONE, false); 1096 1097 // END(dops) 1098 1099 // Static initialization. 1100 static { 1101 DOPS = new Dop[Opcodes.MAX_VALUE - Opcodes.MIN_VALUE + 1]; 1102 1103 set(SPECIAL_FORMAT); 1104 1105 // BEGIN(dops-init); GENERATED AUTOMATICALLY BY opcode-gen 1106 set(NOP); 1107 set(MOVE); 1108 set(MOVE_FROM16); 1109 set(MOVE_16); 1110 set(MOVE_WIDE); 1111 set(MOVE_WIDE_FROM16); 1112 set(MOVE_WIDE_16); 1113 set(MOVE_OBJECT); 1114 set(MOVE_OBJECT_FROM16); 1115 set(MOVE_OBJECT_16); 1116 set(MOVE_RESULT); 1117 set(MOVE_RESULT_WIDE); 1118 set(MOVE_RESULT_OBJECT); 1119 set(MOVE_EXCEPTION); 1120 set(RETURN_VOID); 1121 set(RETURN); 1122 set(RETURN_WIDE); 1123 set(RETURN_OBJECT); 1124 set(CONST_4); 1125 set(CONST_16); 1126 set(CONST); 1127 set(CONST_HIGH16); 1128 set(CONST_WIDE_16); 1129 set(CONST_WIDE_32); 1130 set(CONST_WIDE); 1131 set(CONST_WIDE_HIGH16); 1132 set(CONST_STRING); 1133 set(CONST_STRING_JUMBO); 1134 set(CONST_CLASS); 1135 set(MONITOR_ENTER); 1136 set(MONITOR_EXIT); 1137 set(CHECK_CAST); 1138 set(INSTANCE_OF); 1139 set(ARRAY_LENGTH); 1140 set(NEW_INSTANCE); 1141 set(NEW_ARRAY); 1142 set(FILLED_NEW_ARRAY); 1143 set(FILLED_NEW_ARRAY_RANGE); 1144 set(FILL_ARRAY_DATA); 1145 set(THROW); 1146 set(GOTO); 1147 set(GOTO_16); 1148 set(GOTO_32); 1149 set(PACKED_SWITCH); 1150 set(SPARSE_SWITCH); 1151 set(CMPL_FLOAT); 1152 set(CMPG_FLOAT); 1153 set(CMPL_DOUBLE); 1154 set(CMPG_DOUBLE); 1155 set(CMP_LONG); 1156 set(IF_EQ); 1157 set(IF_NE); 1158 set(IF_LT); 1159 set(IF_GE); 1160 set(IF_GT); 1161 set(IF_LE); 1162 set(IF_EQZ); 1163 set(IF_NEZ); 1164 set(IF_LTZ); 1165 set(IF_GEZ); 1166 set(IF_GTZ); 1167 set(IF_LEZ); 1168 set(AGET); 1169 set(AGET_WIDE); 1170 set(AGET_OBJECT); 1171 set(AGET_BOOLEAN); 1172 set(AGET_BYTE); 1173 set(AGET_CHAR); 1174 set(AGET_SHORT); 1175 set(APUT); 1176 set(APUT_WIDE); 1177 set(APUT_OBJECT); 1178 set(APUT_BOOLEAN); 1179 set(APUT_BYTE); 1180 set(APUT_CHAR); 1181 set(APUT_SHORT); 1182 set(IGET); 1183 set(IGET_WIDE); 1184 set(IGET_OBJECT); 1185 set(IGET_BOOLEAN); 1186 set(IGET_BYTE); 1187 set(IGET_CHAR); 1188 set(IGET_SHORT); 1189 set(IPUT); 1190 set(IPUT_WIDE); 1191 set(IPUT_OBJECT); 1192 set(IPUT_BOOLEAN); 1193 set(IPUT_BYTE); 1194 set(IPUT_CHAR); 1195 set(IPUT_SHORT); 1196 set(SGET); 1197 set(SGET_WIDE); 1198 set(SGET_OBJECT); 1199 set(SGET_BOOLEAN); 1200 set(SGET_BYTE); 1201 set(SGET_CHAR); 1202 set(SGET_SHORT); 1203 set(SPUT); 1204 set(SPUT_WIDE); 1205 set(SPUT_OBJECT); 1206 set(SPUT_BOOLEAN); 1207 set(SPUT_BYTE); 1208 set(SPUT_CHAR); 1209 set(SPUT_SHORT); 1210 set(INVOKE_VIRTUAL); 1211 set(INVOKE_SUPER); 1212 set(INVOKE_DIRECT); 1213 set(INVOKE_STATIC); 1214 set(INVOKE_INTERFACE); 1215 set(INVOKE_VIRTUAL_RANGE); 1216 set(INVOKE_SUPER_RANGE); 1217 set(INVOKE_DIRECT_RANGE); 1218 set(INVOKE_STATIC_RANGE); 1219 set(INVOKE_INTERFACE_RANGE); 1220 set(NEG_INT); 1221 set(NOT_INT); 1222 set(NEG_LONG); 1223 set(NOT_LONG); 1224 set(NEG_FLOAT); 1225 set(NEG_DOUBLE); 1226 set(INT_TO_LONG); 1227 set(INT_TO_FLOAT); 1228 set(INT_TO_DOUBLE); 1229 set(LONG_TO_INT); 1230 set(LONG_TO_FLOAT); 1231 set(LONG_TO_DOUBLE); 1232 set(FLOAT_TO_INT); 1233 set(FLOAT_TO_LONG); 1234 set(FLOAT_TO_DOUBLE); 1235 set(DOUBLE_TO_INT); 1236 set(DOUBLE_TO_LONG); 1237 set(DOUBLE_TO_FLOAT); 1238 set(INT_TO_BYTE); 1239 set(INT_TO_CHAR); 1240 set(INT_TO_SHORT); 1241 set(ADD_INT); 1242 set(SUB_INT); 1243 set(MUL_INT); 1244 set(DIV_INT); 1245 set(REM_INT); 1246 set(AND_INT); 1247 set(OR_INT); 1248 set(XOR_INT); 1249 set(SHL_INT); 1250 set(SHR_INT); 1251 set(USHR_INT); 1252 set(ADD_LONG); 1253 set(SUB_LONG); 1254 set(MUL_LONG); 1255 set(DIV_LONG); 1256 set(REM_LONG); 1257 set(AND_LONG); 1258 set(OR_LONG); 1259 set(XOR_LONG); 1260 set(SHL_LONG); 1261 set(SHR_LONG); 1262 set(USHR_LONG); 1263 set(ADD_FLOAT); 1264 set(SUB_FLOAT); 1265 set(MUL_FLOAT); 1266 set(DIV_FLOAT); 1267 set(REM_FLOAT); 1268 set(ADD_DOUBLE); 1269 set(SUB_DOUBLE); 1270 set(MUL_DOUBLE); 1271 set(DIV_DOUBLE); 1272 set(REM_DOUBLE); 1273 set(ADD_INT_2ADDR); 1274 set(SUB_INT_2ADDR); 1275 set(MUL_INT_2ADDR); 1276 set(DIV_INT_2ADDR); 1277 set(REM_INT_2ADDR); 1278 set(AND_INT_2ADDR); 1279 set(OR_INT_2ADDR); 1280 set(XOR_INT_2ADDR); 1281 set(SHL_INT_2ADDR); 1282 set(SHR_INT_2ADDR); 1283 set(USHR_INT_2ADDR); 1284 set(ADD_LONG_2ADDR); 1285 set(SUB_LONG_2ADDR); 1286 set(MUL_LONG_2ADDR); 1287 set(DIV_LONG_2ADDR); 1288 set(REM_LONG_2ADDR); 1289 set(AND_LONG_2ADDR); 1290 set(OR_LONG_2ADDR); 1291 set(XOR_LONG_2ADDR); 1292 set(SHL_LONG_2ADDR); 1293 set(SHR_LONG_2ADDR); 1294 set(USHR_LONG_2ADDR); 1295 set(ADD_FLOAT_2ADDR); 1296 set(SUB_FLOAT_2ADDR); 1297 set(MUL_FLOAT_2ADDR); 1298 set(DIV_FLOAT_2ADDR); 1299 set(REM_FLOAT_2ADDR); 1300 set(ADD_DOUBLE_2ADDR); 1301 set(SUB_DOUBLE_2ADDR); 1302 set(MUL_DOUBLE_2ADDR); 1303 set(DIV_DOUBLE_2ADDR); 1304 set(REM_DOUBLE_2ADDR); 1305 set(ADD_INT_LIT16); 1306 set(RSUB_INT); 1307 set(MUL_INT_LIT16); 1308 set(DIV_INT_LIT16); 1309 set(REM_INT_LIT16); 1310 set(AND_INT_LIT16); 1311 set(OR_INT_LIT16); 1312 set(XOR_INT_LIT16); 1313 set(ADD_INT_LIT8); 1314 set(RSUB_INT_LIT8); 1315 set(MUL_INT_LIT8); 1316 set(DIV_INT_LIT8); 1317 set(REM_INT_LIT8); 1318 set(AND_INT_LIT8); 1319 set(OR_INT_LIT8); 1320 set(XOR_INT_LIT8); 1321 set(SHL_INT_LIT8); 1322 set(SHR_INT_LIT8); 1323 set(USHR_INT_LIT8); 1324 set(CONST_CLASS_JUMBO); 1325 set(CHECK_CAST_JUMBO); 1326 set(INSTANCE_OF_JUMBO); 1327 set(NEW_INSTANCE_JUMBO); 1328 set(NEW_ARRAY_JUMBO); 1329 set(FILLED_NEW_ARRAY_JUMBO); 1330 set(IGET_JUMBO); 1331 set(IGET_WIDE_JUMBO); 1332 set(IGET_OBJECT_JUMBO); 1333 set(IGET_BOOLEAN_JUMBO); 1334 set(IGET_BYTE_JUMBO); 1335 set(IGET_CHAR_JUMBO); 1336 set(IGET_SHORT_JUMBO); 1337 set(IPUT_JUMBO); 1338 set(IPUT_WIDE_JUMBO); 1339 set(IPUT_OBJECT_JUMBO); 1340 set(IPUT_BOOLEAN_JUMBO); 1341 set(IPUT_BYTE_JUMBO); 1342 set(IPUT_CHAR_JUMBO); 1343 set(IPUT_SHORT_JUMBO); 1344 set(SGET_JUMBO); 1345 set(SGET_WIDE_JUMBO); 1346 set(SGET_OBJECT_JUMBO); 1347 set(SGET_BOOLEAN_JUMBO); 1348 set(SGET_BYTE_JUMBO); 1349 set(SGET_CHAR_JUMBO); 1350 set(SGET_SHORT_JUMBO); 1351 set(SPUT_JUMBO); 1352 set(SPUT_WIDE_JUMBO); 1353 set(SPUT_OBJECT_JUMBO); 1354 set(SPUT_BOOLEAN_JUMBO); 1355 set(SPUT_BYTE_JUMBO); 1356 set(SPUT_CHAR_JUMBO); 1357 set(SPUT_SHORT_JUMBO); 1358 set(INVOKE_VIRTUAL_JUMBO); 1359 set(INVOKE_SUPER_JUMBO); 1360 set(INVOKE_DIRECT_JUMBO); 1361 set(INVOKE_STATIC_JUMBO); 1362 set(INVOKE_INTERFACE_JUMBO); 1363 // END(dops-init) 1364 } 1365 1366 /** 1367 * This class is uninstantiable. 1368 */ 1369 private Dops() { 1370 // This space intentionally left blank. 1371 } 1372 1373 /** 1374 * Gets the {@link Dop} for the given opcode value. 1375 * 1376 * @param opcode {@code Opcodes.MIN_VALUE..Opcodes.MAX_VALUE;} the 1377 * opcode value 1378 * @return {@code non-null;} the associated opcode instance 1379 */ 1380 public static Dop get(int opcode) { 1381 int idx = opcode - Opcodes.MIN_VALUE; 1382 1383 try { 1384 Dop result = DOPS[idx]; 1385 if (result != null) { 1386 return result; 1387 } 1388 } catch (ArrayIndexOutOfBoundsException ex) { 1389 // Fall through. 1390 } 1391 1392 throw new IllegalArgumentException("bogus opcode"); 1393 } 1394 1395 /** 1396 * Gets the next {@link Dop} in the instruction fitting chain after the 1397 * given instance, if any. 1398 * 1399 * @param opcode {@code non-null;} the opcode 1400 * @param options {@code non-null;} options, used to determine 1401 * which opcodes are potentially off-limits 1402 * @return {@code null-ok;} the next opcode in the same family, in the 1403 * chain of opcodes to try, or {@code null} if the given opcode is 1404 * the last in its chain 1405 */ 1406 public static Dop getNextOrNull(Dop opcode, DexOptions options) { 1407 boolean suppressExtendedOpcodes = !options.canUseExtendedOpcodes(); 1408 1409 for (;;) { 1410 int nextOpcode = opcode.getNextOpcode(); 1411 1412 if (nextOpcode == Opcodes.NO_NEXT) { 1413 return null; 1414 } 1415 1416 opcode = get(nextOpcode); 1417 1418 if (suppressExtendedOpcodes && Opcodes.isExtended(nextOpcode)) { 1419 /* 1420 * Continuing rather than just returning null here 1421 * protects against the possibility that an 1422 * instruction fitting chain might list non-extended 1423 * opcodes after extended ones. 1424 */ 1425 continue; 1426 } 1427 1428 return opcode; 1429 } 1430 } 1431 1432 /** 1433 * Puts the given opcode into the table of all ops. 1434 * 1435 * @param opcode {@code non-null;} the opcode 1436 */ 1437 private static void set(Dop opcode) { 1438 int idx = opcode.getOpcode() - Opcodes.MIN_VALUE; 1439 DOPS[idx] = opcode; 1440 } 1441} 1442