You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Util.java 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. import javassist.bytecode.CodeIterator;
  18. import javassist.bytecode.Opcode;
  19. /**
  20. * A set of common utility methods.
  21. *
  22. * @author Jason T. Greene
  23. */
  24. public class Util implements Opcode {
  25. public static int getJumpTarget(int pos, CodeIterator iter) {
  26. int opcode = iter.byteAt(pos);
  27. pos += (opcode == JSR_W || opcode == GOTO_W) ? iter.s32bitAt(pos + 1) : iter.s16bitAt(pos + 1);
  28. return pos;
  29. }
  30. public static boolean isJumpInstruction(int opcode) {
  31. return (opcode >= IFEQ && opcode <= JSR) || opcode == IFNULL || opcode == IFNONNULL || opcode == JSR_W || opcode == GOTO_W;
  32. }
  33. public static boolean isGoto(int opcode) {
  34. return opcode == GOTO || opcode == GOTO_W;
  35. }
  36. public static boolean isJsr(int opcode) {
  37. return opcode == JSR || opcode == JSR_W;
  38. }
  39. public static boolean isReturn(int opcode) {
  40. return (opcode >= IRETURN && opcode <= RETURN);
  41. }
  42. }