org.objectweb.asm.Type.getArgumentTypes()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(7.3k)|赞(0)|评价(0)|浏览(110)

本文整理了Java中org.objectweb.asm.Type.getArgumentTypes()方法的一些代码示例,展示了Type.getArgumentTypes()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Type.getArgumentTypes()方法的具体详情如下:
包路径:org.objectweb.asm.Type
类名称:Type
方法名:getArgumentTypes

Type.getArgumentTypes介绍

[英]Returns the argument types of methods of this type. This method should only be used for method types.
[中]返回此类型方法的参数类型。此方法只能用于方法类型。

代码示例

代码示例来源:origin: cglib/cglib

public Type[] getArgumentTypes() {
  return Type.getArgumentTypes(desc);
}

代码示例来源:origin: scouter-project/scouter

public PsSetMV(int access, String name, String desc, MethodVisitor mv, String owner) {
  super(ASM7,access, desc, mv);
  this.owner = owner;
  this.args = Type.getArgumentTypes(desc);
  this.name = name;
}

代码示例来源:origin: alibaba/jvm-sandbox

/**
 * Creates a new {@link AdviceAdapter}.
 *
 * @param api    the ASM API version implemented by this visitor. Must be one
 *               of {@link Opcodes#ASM4} or {@link Opcodes#ASM7}.
 * @param mv     the method visitor to which this adapter delegates calls.
 * @param access the method's access flags (see {@link Opcodes}).
 * @param name   the method's name.
 * @param desc   the method's descriptor (see {@link Type Type}).
 */
protected ReWriteMethod(int api, MethodVisitor mv, int access, String name, String desc) {
  super(api, mv, access, name, desc);
  this.argumentTypeArray = Type.getArgumentTypes(desc);
}

代码示例来源:origin: robolectric/robolectric

/** Create a MethodInfo from ASM in-memory representation (an Android framework method). */
public MethodInfo(MethodNode method) {
 this.name = method.name;
 for (Type type : Type.getArgumentTypes(method.desc)) {
  paramTypes.add(normalize(type));
 }
}

代码示例来源:origin: org.ow2.asm/asm

/**
 * Returns the argument types of methods of this type. This method should only be used for method
 * types.
 *
 * @return the argument types of methods of this type.
 */
public Type[] getArgumentTypes() {
 return getArgumentTypes(getDescriptor());
}

代码示例来源:origin: Meituan-Dianping/Robust

public MethodBodyInsertor(MethodVisitor mv, String className, String desc, boolean isStatic, String methodId, String name, int access) {
  super(Opcodes.ASM5, mv, access, name, desc);
  this.className = className;
  this.returnType = Type.getReturnType(desc);
  Type[] argsType = Type.getArgumentTypes(desc);
  for (Type type : argsType) {
    paramsTypeClass.add(type);
  }
  this.isStatic = isStatic;
  this.methodId = methodId;
}

代码示例来源:origin: pmd/pmd

private void addTypes(String desc) {
  Type[] types = Type.getArgumentTypes(desc);
  for (Type type : types) {
    addType(type);
  }
}

代码示例来源:origin: robolectric/robolectric

public static MethodSignature parse(String internalString) {
 int parenStart = internalString.indexOf('(');
 int methodStart = internalString.lastIndexOf('/', parenStart);
 String className = internalString.substring(0, methodStart).replace('/', '.');
 String methodName = internalString.substring(methodStart + 1, parenStart);
 String methodDescriptor = internalString.substring(parenStart);
 Type[] argumentTypes = Type.getArgumentTypes(methodDescriptor);
 String[] paramTypes = new String[argumentTypes.length];
 for (int i = 0; i < argumentTypes.length; i++) {
  paramTypes[i] = argumentTypes[i].getClassName();
 }
 final String returnType = Type.getReturnType(methodDescriptor).getClassName();
 return new MethodSignature(className, methodName, paramTypes, returnType);
}

代码示例来源:origin: pxb1988/dex2jar

private Method build(MtdInfo mapTo) {
  Type[] ts = Type.getArgumentTypes(mapTo.desc);
  String ss[] = new String[ts.length];
  for (int i = 0; i < ss.length; i++) {
    ss[i] = ts[i].getDescriptor();
  }
  return new Method(mapTo.owner, mapTo.name, ss, Type.getReturnType(mapTo.desc).getDescriptor());
}

代码示例来源:origin: konsoletyper/teavm

private int countSignatureVariables(String desc) {
  int count = 1;
  for (Type paramType : Type.getArgumentTypes(desc)) {
    count += paramType.getSize();
  }
  return count;
}

代码示例来源:origin: jooby-project/jooby

public Signature(final ClassLoader loader, final MethodInsnNode method) {
 this.owners = expand(loader, method.owner);
 this.loader = loader;
 this.name = method.name;
 this.args = Type.getArgumentTypes(method.desc);
}

代码示例来源:origin: robolectric/robolectric

String remapParams(String desc) {
 StringBuilder buf = new StringBuilder();
 buf.append("(");
 for (Type type : Type.getArgumentTypes(desc)) {
  buf.append(remapParamType(type));
 }
 buf.append(")");
 buf.append(remapParamType(Type.getReturnType(desc)));
 return buf.toString();
}

代码示例来源:origin: linkedin/parseq

static String getArgumentsInformation(String insnDesc) {
 if (insnDesc == null) {
  return "";
 }
 Type methodType = Type.getMethodType(insnDesc);
 int argSize = methodType.getArgumentTypes().length;
 StringJoiner sj = new StringJoiner(",", "(", ")");
 for (int i = 0; i < argSize; i++) {
  sj.add("_");
 }
 return sj.toString();
}

代码示例来源:origin: pxb1988/dex2jar

IrMethod populate(String owner, MethodNode source) {
  IrMethod target = new IrMethod();
  target.name = source.name;
  target.owner = "L" + owner + ";";
  target.ret = Type.getReturnType(source.desc).getDescriptor();
  Type[] args = Type.getArgumentTypes(source.desc);
  String sArgs[] = new String[args.length];
  target.args = sArgs;
  for (int i = 0; i < args.length; i++) {
    sArgs[i] = args[i].getDescriptor();
  }
  target.isStatic = 0 != (source.access & Opcodes.ACC_STATIC);
  return target;
}

代码示例来源:origin: pxb1988/dex2jar

protected MtdInfo findTargetMethod0(Map<MtdInfo, MtdInfo> map, String owner, String name, String desc) {
  MtdInfo v = map.get(buildKey(owner, name, desc));
  if (v != null) {
    return v;
  }
  // try with default ret
  key.desc = Type.getMethodDescriptor(Type.getType(DEFAULT_RET_TYPE), Type.getArgumentTypes(desc));
  v = map.get(key);
  if (v != null) {
    return v;
  }
  // try with default desc
  key.desc = DEFAULT_DESC;
  v = map.get(key);
  if (v != null) {
    return v;
  }
  if (!name.equals("*")) {
    return findTargetMethod0(map, owner, "*", desc);
  }
  return v;
}

代码示例来源:origin: cglib/cglib

public LocalVariablesSorter(
  final int access,
  final String desc,
  final MethodVisitor mv)
{
  super(Constants.ASM_API, mv);
  state = new State();
  Type[] args = Type.getArgumentTypes(desc);
  state.nextLocal = ((Opcodes.ACC_STATIC & access) != 0) ? 0 : 1;
  for (int i = 0; i < args.length; i++) {
    state.nextLocal += args[i].getSize();
  }
  firstLocal = state.nextLocal;
}

代码示例来源:origin: scouter-project/scouter

@Override
  public MethodVisitor visitMethod(int access, String methodName, String desc, String signature, String[] exceptions) {
    MethodVisitor mv = super.visitMethod(access, methodName, desc, signature, exceptions);
    if (mv == null || mset.isA(methodName, desc) == false) {
      return mv;
    }
    if (AsmUtil.isSpecial(methodName)) {
      return mv;
    }
    return new JspServletMV(access, desc, mv, Type.getArgumentTypes(desc), (access & ACC_STATIC) != 0);
  }
}

代码示例来源:origin: scouter-project/scouter

public static int getIdxByType(int access, String desc, Type type) {
  Type[] t = Type.getArgumentTypes(desc);
  int sidx = (AsmUtil.isStatic(access) ? 0 : 1);
  for (int i = 0; t != null && i < t.length; i++) {
    if (type.equals(t[i])) {
      return sidx;
    }
    sidx += t[i].getSize();
  }
  return -1;
}

代码示例来源:origin: spring-projects/spring-loaded

private void chooseMethodSignature() throws Exception {
  methodSignature = choice(getMethodSignatures());
  int splitAt = methodSignature.indexOf('(');
  methodName = methodSignature.substring(0, splitAt);
  String methodDescriptor = methodSignature.substring(splitAt);
  Type[] asmTypes = Type.getArgumentTypes(methodDescriptor);
  params = new Class<?>[asmTypes.length];
  //Get the corresponding class for each param type name
  for (int i = 0; i < asmTypes.length; i++) {
    params[i] = classForName(asmTypes[i].getClassName());
  }
}

代码示例来源:origin: spring-projects/spring-loaded

private void chooseMethodSignature() throws Exception {
  methodDescriptor = choice(getMethodSignatures());
  Type[] asmTypes = Type.getArgumentTypes(methodDescriptor);
  params = new Class<?>[asmTypes.length];
  //Get the corresponding class for each param type name
  for (int i = 0; i < asmTypes.length; i++) {
    params[i] = classForName(asmTypes[i].getClassName());
  }
}

相关文章