List of usage examples for org.objectweb.asm Type getMethodType
public static Type getMethodType(final Type returnType, final Type... argumentTypes)
From source file:com.facebook.buck.jvm.java.abi.DescriptorFactory.java
License:Apache License
private Type getType(Element element) { return Preconditions.checkNotNull(element.accept(new SimpleElementVisitor8<Type, Void>() { @Override/*from w w w . j a va 2 s . c o m*/ protected Type defaultAction(Element e, Void aVoid) { throw new IllegalArgumentException(String.format("Unexpected element kind: %s", element.getKind())); } @Override public Type visitExecutable(ExecutableElement e, Void aVoid) { Stream<TypeMirror> parameterTypeStream = e.getParameters().stream().map(Element::asType); if (MoreElements.isInnerClassConstructor(e)) { parameterTypeStream = Stream.concat(Stream.of(MoreElements.getOuterClass(e).asType()), parameterTypeStream); } return Type.getMethodType(getType(e.getReturnType()), parameterTypeStream.map(DescriptorFactory.this::getType).toArray(size -> new Type[size])); } @Override public Type visitVariable(VariableElement e, Void aVoid) { return getType(e.asType()); } }, null)); }
From source file:com.github.jasmo.obfuscate.InlineAccessors.java
License:Open Source License
private boolean isSetterFor(ClassNode owner, FieldNode field, MethodNode method) { if (local(method.access) == local(field.access) && isTopLevel(owner, method)) { Type type = Type.getType(field.desc); Type setType = Type.getMethodType(Type.VOID_TYPE, type); Type methodType = Type.getMethodType(method.desc); if (methodType.equals(setType)) { List<AbstractInsnNode> instructions = getRealInstructions(method); Query[] queries = getPattern(false, owner, field); return matches(instructions, queries); }/*from w w w.j a v a2 s.c om*/ } return false; }
From source file:edu.ubc.mirrors.holograms.HologramClassGenerator.java
License:Open Source License
public static Type getOriginalType(Type type) { if (type.getSort() == Type.METHOD) { Type[] argumentTypes = type.getArgumentTypes(); Type[] originalArgTypes = new Type[argumentTypes.length]; for (int i = 0; i < argumentTypes.length; i++) { originalArgTypes[i] = getOriginalType(argumentTypes[i]); }//from www . j a v a 2 s.com return Type.getMethodType(getOriginalType(type.getReturnType()), originalArgTypes); } else if (type.getSort() == Type.OBJECT || type.getSort() == Type.ARRAY) { return Type.getObjectType(getOriginalInternalClassName(type.getInternalName())); } else { return type; } }
From source file:edu.ubc.mirrors.holograms.HologramMethodGenerator.java
License:Open Source License
private void boxIfNeeded(Type type) { Class<?> boxingType = Reflection.getBoxingType(type); if (boxingType != null) { invokestatic(Type.getInternalName(boxingType), "valueOf", Type.getMethodType(Type.getType(boxingType), type).getDescriptor()); }/* w w w . j a v a 2s . c o m*/ }
From source file:edu.ubc.mirrors.Reflection.java
License:Open Source License
public static Type getMethodType(MethodMirror method) { List<String> parameterTypeNames = method.getParameterTypeNames(); Type[] argTypes = new Type[parameterTypeNames.size()]; int i = 0;// w w w . j a va2s . c o m for (String paramTypeName : parameterTypeNames) { argTypes[i++] = typeForClassName(paramTypeName); } return Type.getMethodType(typeForClassName(method.getReturnTypeName()), argTypes); }
From source file:edu.ubc.mirrors.Reflection.java
License:Open Source License
public static Type getMethodType(ConstructorMirror constructor) { List<String> parameterTypeNames = constructor.getParameterTypeNames(); Type[] argTypes = new Type[parameterTypeNames.size()]; int i = 0;/*from ww w . j av a2s.c om*/ for (String paramTypeName : parameterTypeNames) { argTypes[i++] = typeForClassName(paramTypeName); } return Type.getMethodType(Type.VOID_TYPE, argTypes); }
From source file:net.sandius.rembulan.compiler.gen.asm.ConstructorMethod.java
License:Apache License
public Type methodType() { Type[] args = new Type[context.fn.upvals().size()]; Arrays.fill(args, Type.getType(Variable.class)); return Type.getMethodType(Type.VOID_TYPE, args); }
From source file:net.sandius.rembulan.compiler.gen.asm.helpers.ReturnBufferMethods.java
License:Apache License
public static AbstractInsnNode get() { return new MethodInsnNode(INVOKEINTERFACE, selfTpe().getInternalName(), "get", Type.getMethodType(Type.getType(Object.class), Type.INT_TYPE).getDescriptor(), true); }
From source file:net.sandius.rembulan.compiler.gen.asm.RunMethod.java
License:Apache License
private Type snapshotMethodType() { ArrayList<Type> args = new ArrayList<>(); args.add(Type.INT_TYPE);/* www . ja v a 2 s. c o m*/ 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])); }
From source file:net.sandius.rembulan.compiler.gen.asm.RunMethod.java
License:Apache License
private Type methodType(Type returnType) { ArrayList<Type> args = new ArrayList<>(); args.add(Type.getType(ExecutionContext.class)); args.add(Type.INT_TYPE);//from w w w .j a v a2s .c o m 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(returnType, args.toArray(new Type[0])); }