1 /* 2 * Javassist, a Java-bytecode translator toolkit. 3 * Copyright (C) 1999-2007 Shigeru Chiba, and others. 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 * 10 * Software distributed under the License is distributed on an "AS IS" basis, 11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 12 * for the specific language governing rights and limitations under the 13 * License. 14 */ 15 package javassist.bytecode.analysis; 16 17 import javassist.bytecode.CodeIterator; 18 import javassist.bytecode.Opcode; 19 20 /** 21 * A set of common utility methods. 22 * 23 * @author Jason T. Greene 24 */ 25 public class Util implements Opcode { 26 public static int getJumpTarget(int pos, CodeIterator iter) { 27 int opcode = iter.byteAt(pos); 28 pos += (opcode == JSR_W || opcode == GOTO_W) ? iter.s32bitAt(pos + 1) : iter.s16bitAt(pos + 1); 29 return pos; 30 } 31 32 public static boolean isJumpInstruction(int opcode) { 33 return (opcode >= IFEQ && opcode <= JSR) || opcode == IFNULL || opcode == IFNONNULL || opcode == JSR_W || opcode == GOTO_W; 34 } 35 36 public static boolean isGoto(int opcode) { 37 return opcode == GOTO || opcode == GOTO_W; 38 } 39 40 public static boolean isJsr(int opcode) { 41 return opcode == JSR || opcode == JSR_W; 42 } 43 44 public static boolean isReturn(int opcode) { 45 return (opcode >= IRETURN && opcode <= RETURN); 46 } 47 } 48