de.uka.ipd.sdq.ByCounter.utils
Class ASMOpcodesMapper

java.lang.Object
  extended by de.uka.ipd.sdq.ByCounter.utils.ASMOpcodesMapper
All Implemented Interfaces:
org.objectweb.asm.Opcodes

public class ASMOpcodesMapper
extends java.lang.Object
implements org.objectweb.asm.Opcodes

This helper class provides the mapping from int opcodes of ASM to their String meanings and back. It is intended to be used as a singleton. It is not optimized for performance.

Since:
0.1
Version:
1.2
Author:
Michael Kuperberg, Martin Krogmann

Field Summary
 
Fields inherited from interface org.objectweb.asm.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEDYNAMIC_OWNER, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7
 
Method Summary
 java.util.List<java.lang.String> describeOpcodeList(java.util.List<java.lang.Integer> opcodes)
          Gets string descriptions for the opcodes specified in the list.
 java.util.List<java.util.List<java.lang.String>> describeOpcodeListList(java.util.List<java.util.List<java.lang.Integer>> opcodes)
          TODO MK refactor?
 java.util.Set<java.lang.Integer> getAllOpcodes()
           
 java.util.List<java.lang.Integer> getAllOpcodesAsList()
           
static ASMOpcodesMapper getInstance()
          Get the singleton instance
 int getOpcodeInt(java.lang.String opcode)
          Get operations int value from its String description (name of the field in org.objectweb.asm.Opcodes).
 java.lang.Integer getOpcodeInteger(java.lang.String opcode)
          Get operations Integer value from its String description (name of the field in org.objectweb.asm.Opcodes).
 java.lang.String getOpcodeString(int opcode)
          Get operations String description from its int value (name of the field is in org.objectweb.asm.Opcodes).
static ASMOpcodesMapper instance()
          Get the singleton instance
static void main(java.lang.String[] args)
          The main method prints all ASM instructions (bytecodes) to the screen; the instructions are sorted by their numeric (int) values.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static ASMOpcodesMapper getInstance()
Get the singleton instance

Returns:
the singleton instance

instance

public static ASMOpcodesMapper instance()
Get the singleton instance

Returns:
the singleton instance

main

public static void main(java.lang.String[] args)
The main method prints all ASM instructions (bytecodes) to the screen; the instructions are sorted by their numeric (int) values.

Parameters:
args - not utilized in this class

describeOpcodeList

public java.util.List<java.lang.String> describeOpcodeList(java.util.List<java.lang.Integer> opcodes)
Gets string descriptions for the opcodes specified in the list.

Parameters:
opcodes - The list of opcodes to get the description for.
Returns:
A list of strings that contains the descriptions for the specified opcodes.

describeOpcodeListList

public java.util.List<java.util.List<java.lang.String>> describeOpcodeListList(java.util.List<java.util.List<java.lang.Integer>> opcodes)
TODO MK refactor? use iterator? Gets string descriptions for lists of opcodes.

Parameters:
opcodes - A list of lists of opcodes.
Returns:
A list of lists of opcode descriptions.

getAllOpcodes

public java.util.Set<java.lang.Integer> getAllOpcodes()
Returns:
The Set of the integers that represent all opcodes.

getAllOpcodesAsList

public java.util.List<java.lang.Integer> getAllOpcodesAsList()
Returns:
A List of the integers that represent all opcodes.

getOpcodeInt

public int getOpcodeInt(java.lang.String opcode)
Get operations int value from its String description (name of the field in org.objectweb.asm.Opcodes).

Parameters:
opcode - name of the bytecode instruction in ASM
Returns:
value of the bytecode instruction in ASM

getOpcodeInteger

public java.lang.Integer getOpcodeInteger(java.lang.String opcode)
Get operations Integer value from its String description (name of the field in org.objectweb.asm.Opcodes).

Parameters:
opcode - name of the bytecode instruction in ASM
Returns:
value of the bytecode instruction in ASM

getOpcodeString

public java.lang.String getOpcodeString(int opcode)
Get operations String description from its int value (name of the field is in org.objectweb.asm.Opcodes).

Parameters:
opcode - name of the bytecode instruction in ASM
Returns:
value of the bytecode instruction in ASM (null if opcode is not inside internal data structures).