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

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

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

Type.getMethodType介绍

[英]Returns the Java type corresponding to the given method descriptor. Equivalent to Type.getType(methodDescriptor).
[中]返回与给定方法描述符对应的Java类型。相当于Type.getType(methodDescriptor)

代码示例

代码示例来源: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: alibaba/jvm-sandbox

private String getBehaviorSignCode(final String name,
                  final String desc) {
  final Type methodType = Type.getMethodType(desc);
  final Collection<String> parameterClassNameArray = new ArrayList<String>();
  if (null != methodType.getArgumentTypes()) {
    for (final Type parameterType : methodType.getArgumentTypes()) {
      parameterClassNameArray.add(parameterType.getClassName());
    }
  }
  final String signCode = String.format(
      "%s#%s(%s)",
      targetJavaClassName,
      name,
      join(parameterClassNameArray, ",")
  );
  return signCode;
}

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

static String getDescriptionForMethodInsnNode(MethodInsnNode methodInstr) {
 if (methodInstr.getOpcode() == Opcodes.INVOKESPECIAL && methodInstr.name.equals("<init>")) {
  return "new " + Util.extractSimpleName(methodInstr.owner, "/") + "()";
 } else {
  Type methodType = Type.getMethodType(methodInstr.desc);
  int retSize = methodType.getArgumentsAndReturnSizes() & 0x03;
  if (retSize > 0) {
   return methodInstr.name + Util.getArgumentsInformation(methodInstr.desc);
  }
 }
 return "";
}

代码示例来源:origin: prestodb/presto

.build();
Type instantiatedMethodAsmType = getMethodType(
    compiledLambda.getReturnType().getAsmType(),
    compiledLambda.getParameterTypes().stream()

代码示例来源:origin: oldmanpushcart/greys-anatomy

private GaMethod toMethod(ClassLoader loader, Class<?> clazz, String methodName, String methodDesc)
    throws ClassNotFoundException, NoSuchMethodException {
  final org.objectweb.asm.Type asmType = org.objectweb.asm.Type.getMethodType(methodDesc);

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

return readUTF8(cpInfoOffset, charBuffer);
case Symbol.CONSTANT_METHOD_TYPE_TAG:
 return Type.getMethodType(readUTF8(cpInfoOffset, charBuffer));
case Symbol.CONSTANT_METHOD_HANDLE_TAG:
 int referenceKind = readByte(cpInfoOffset);

代码示例来源:origin: micronaut-projects/micronaut-core

return readUTF8(index, buf);
case MTYPE:
  return Type.getMethodType(readUTF8(index, buf));
default: // case ClassWriter.HANDLE_BASE + [1..9]:
  int tag = readByte(index);

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

ele = Type.getMethodType(((Proto) ele).getDesc());

代码示例来源:origin: SonarSource/sonar-java

@Override
public int arity() {
 Type methodType = Type.getMethodType(desc);
 return methodType.getArgumentTypes().length;
}

代码示例来源:origin: org.sonarsource.java/java-frontend

@Override
public int arity() {
 Type methodType = Type.getMethodType(desc);
 return methodType.getArgumentTypes().length;
}

代码示例来源:origin: SonarSource/sonar-java

public int arity() {
 Preconditions.checkState(isInvoke(), "Not an INVOKE opcode");
 Type methodType = Type.getMethodType(fieldOrMethod.desc);
 return methodType.getArgumentTypes().length;
}

代码示例来源:origin: org.sonarsource.java/java-frontend

public int arity() {
 Preconditions.checkState(isInvoke(), "Not an INVOKE opcode");
 Type methodType = Type.getMethodType(fieldOrMethod.desc);
 return methodType.getArgumentTypes().length;
}

代码示例来源:origin: OpenMods/OpenModsLib

public HorseNullFix(String horseClass, ClassVisitor cv, IResultListener listener) {
  super(Opcodes.ASM5, cv);
  this.listener = listener;
  modifiedMethod = new MethodMatcher(horseClass, Type.getMethodType(Type.VOID_TYPE).getDescriptor(), "updateHorseSlots", "func_110232_cE");
}

代码示例来源:origin: mjanicek/rembulan

public static AbstractInsnNode get() {
  return new MethodInsnNode(
      INVOKEINTERFACE,
      selfTpe().getInternalName(),
      "get",
      Type.getMethodType(
          Type.getType(Object.class),
          Type.INT_TYPE).getDescriptor(),
      true);
}

代码示例来源:origin: mjanicek/rembulan

public static AbstractInsnNode size() {
  return new MethodInsnNode(
      INVOKEINTERFACE,
      selfTpe().getInternalName(),
      "size",
      Type.getMethodType(
          Type.INT_TYPE).getDescriptor(),
      true);
}

代码示例来源:origin: mjanicek/rembulan

private Type snapshotMethodType() {
  ArrayList<Type> args = new ArrayList<>();
  args.add(Type.INT_TYPE);
  if (context.isVararg()) {
    args.add(ASMUtils.arrayTypeFor(Object.class));
  }
  for (int i = 0; i < numOfRegisters(); i++) {
    args.add(Type.getType(Object.class));
  }
  return Type.getMethodType(context.savedStateClassType(), args.toArray(new Type[0]));
}

代码示例来源:origin: org.codelibs.elasticsearch.module/lang-painless

@Override
void store(MethodWriter writer, Globals globals) {
  writer.writeDebugInfo(location);
  org.objectweb.asm.Type methodType = org.objectweb.asm.Type.getMethodType(
    org.objectweb.asm.Type.getType(void.class), org.objectweb.asm.Type.getType(Object.class), MethodWriter.getType(actual));
  writer.invokeDefCall(value, methodType, DefBootstrap.STORE);
}

代码示例来源:origin: mjanicek/rembulan

public static AbstractInsnNode toArray() {
  return new MethodInsnNode(
      INVOKEINTERFACE,
      selfTpe().getInternalName(),
      "getAsArray",
      Type.getMethodType(
          ASMUtils.arrayTypeFor(Object.class)).getDescriptor(),
      true);
}

代码示例来源:origin: spotify/missinglink

private static MethodDescriptor newDescriptor(MethodKey key) {
 Type type = Type.getMethodType(key.desc);
 List<TypeDescriptor> params = Arrays.stream(type.getArgumentTypes())
   .map(Type::getDescriptor)
   .map(TypeDescriptors::fromRaw)
   .collect(toList());
 return new MethodDescriptorBuilder()
   .returnType(TypeDescriptors.fromRaw(type.getReturnType().getDescriptor()))
   .name(key.name)
   .parameterTypes(ImmutableList.copyOf(params))
   .build();
}

代码示例来源:origin: OpenMods/OpenModsLib

public PlayerRendererHookVisitor(String rendererTypeCls, ClassVisitor cv, IResultListener listener) {
  super(Opcodes.ASM5, cv);
  this.listener = listener;
  Type injectedMethodType = Type.getMethodType(Type.VOID_TYPE, MappedType.of(AbstractClientPlayer.class).type(), Type.FLOAT_TYPE, Type.FLOAT_TYPE, Type.FLOAT_TYPE);
  modifiedMethod = new MethodMatcher(rendererTypeCls, injectedMethodType.getDescriptor(), "applyRotations", "func_77043_a");
}

相关文章