public class Descriptor extends Object implements VMConstants
ACCAbstract, ACCFinal, ACCInterface, ACCNative, ACCPrivate, ACCProtected, ACCPublic, ACCStatic, ACCSuper, ACCSynchronized, ACCTransient, ACCVolatile, CONSTANTClass, CONSTANTDouble, CONSTANTFieldRef, CONSTANTFloat, CONSTANTInteger, CONSTANTInterfaceMethodRef, CONSTANTLong, CONSTANTMethodRef, CONSTANTNameAndType, CONSTANTString, CONSTANTUnicode, CONSTANTUtf8, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, T_TWOWORD, T_UNKNOWN, T_WORD, TC_INTERFACE, TC_OBJECT, TC_STRING
Constructor and Description |
---|
Descriptor() |
Modifier and Type | Method and Description |
---|---|
static void |
computeStackTypes(String stackSig,
Stack stack)
stackSig is a signature for a list of types on the JVM stack with the
last type in the signature intended to be on the top of JVM stack.
|
static int |
countFieldWords(String sig)
Return the number of words of a field based on its signature.
|
static int |
countMethodArgWords(String sig)
Return the number of words of arguments to the method
based on the method signature
|
static int |
countMethodReturnWords(String sig)
Return the number of words of return value for the method
based on the method signature
|
static String |
elementSig(int valueType)
Return the element type descriptor char for the element type.
|
static int |
elementSize(int elementType)
Return the number of stack words required for a value of the specified
type on the operand stack.
|
static int |
elementType(String sig)
Return the element type for the first char in the type descriptor string.
|
static String |
extractArgSig(String methodSig)
Return the stack descriptor for the arguments to a method
invocation (not including any "this" argument)
|
static String |
extractResultSig(String methodSig)
Return the stack descriptor for the result of a method
invocation.
|
static String |
extractReversedArgSig(String methodSig)
Return the reversed stack descriptor for the arguments to a method
invocation (not including any "this" argument).
|
static int |
nextSigElement(String stackSig,
int idx)
stackSig is a signature for the types on the stack with the last
type in the signature on the top of stack.
|
static String |
remapTypes(String sig,
Map classTranslations)
classTranslations contains a set of mappings of class names.
|
static String |
translateClass(String cls,
Map classTranslations)
classTranslations contains a set of mappings of class names.
|
static String |
userFieldSig(String vmSig)
Translates a VM type field signature into a user-format signature.
|
static String |
userFieldSig(String vmSig,
int idx)
Translates a VM type field signature into a user-format signature.
|
static String |
userMethodArgs(String methodSig)
Produce a user consumable representation of a method argument list
from the method signature.
|
public static int countMethodArgWords(String sig)
public static int countMethodReturnWords(String sig)
public static String extractResultSig(String methodSig)
public static String extractArgSig(String methodSig)
public static String extractReversedArgSig(String methodSig)
public static int countFieldWords(String sig)
public static int elementType(String sig)
public static String elementSig(int valueType)
public static int elementSize(int elementType)
public static void computeStackTypes(String stackSig, Stack stack)
public static int nextSigElement(String stackSig, int idx)
public static String remapTypes(String sig, Map classTranslations)
public static String translateClass(String cls, Map classTranslations)
public static String userFieldSig(String vmSig)
public static String userFieldSig(String vmSig, int idx)
Copyright © 2019. All rights reserved.