1 /* 2 * Javassist, a Java-bytecode translator toolkit. 3 * Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. 4 * 5 * The contents of this file are subject to the Mozilla Public License Version 6 * 1.1 (the "License"); you may not use this file except in compliance with 7 * the License. Alternatively, the contents of this file may be used under 8 * the terms of the GNU Lesser General Public License Version 2.1 or later, 9 * or the Apache License Version 2.0. 10 * 11 * Software distributed under the License is distributed on an "AS IS" basis, 12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 13 * for the specific language governing rights and limitations under the 14 * License. 15 */ 16 package javassist.bytecode.analysis; 17 18 import javassist.bytecode.CodeIterator; 19 import javassist.bytecode.Opcode; 20 21 /** 22 * A set of common utility methods. 23 * 24 * @author Jason T. Greene 25 */ 26 public class Util implements Opcode { getJumpTarget(int pos, CodeIterator iter)27 public static int getJumpTarget(int pos, CodeIterator iter) { 28 int opcode = iter.byteAt(pos); 29 pos += (opcode == JSR_W || opcode == GOTO_W) ? iter.s32bitAt(pos + 1) : iter.s16bitAt(pos + 1); 30 return pos; 31 } 32 isJumpInstruction(int opcode)33 public static boolean isJumpInstruction(int opcode) { 34 return (opcode >= IFEQ && opcode <= JSR) || opcode == IFNULL || opcode == IFNONNULL || opcode == JSR_W || opcode == GOTO_W; 35 } 36 isGoto(int opcode)37 public static boolean isGoto(int opcode) { 38 return opcode == GOTO || opcode == GOTO_W; 39 } 40 isJsr(int opcode)41 public static boolean isJsr(int opcode) { 42 return opcode == JSR || opcode == JSR_W; 43 } 44 isReturn(int opcode)45 public static boolean isReturn(int opcode) { 46 return (opcode >= IRETURN && opcode <= RETURN); 47 } 48 } 49