public static String methodDescription( ParameterizedType returnType, List<ParameterizedType> parameterTypes) { StringBuilder sb = new StringBuilder(); sb.append("("); Joiner.on("").appendTo(sb, transform(parameterTypes, ParameterizedType::getType)); sb.append(")"); sb.append(returnType.getType()); return sb.toString(); }
@Override public void accept(MethodVisitor visitor, MethodGenerationContext generationContext) { visitor.visitFieldInsn(opCode.getOpCode(), classType.getClassName(), fieldName, fieldType.getType()); }
public void enterScope(Scope scope) { requireNonNull(scope, "scope is null"); checkArgument(!allEnteredScopes.contains(scope), "scope has already been entered"); allEnteredScopes.add(scope); ScopeContext scopeContext = new ScopeContext(scope); scopes.addLast(scopeContext); for (Variable variable : scopeContext.getVariables()) { checkArgument(!"this".equals(variable.getName()) || nextSlot == 0, "The 'this' variable must be in slot 0"); variableSlots.put(variable, nextSlot); nextSlot += Type.getType(variable.getType().getType()).getSize(); } scopeContext.getStartLabel().accept(methodVisitor, this); }
public Variable createTempVariable(Class<?> type) { // reserve a slot for this variable Variable variable = new Variable("temp_" + nextTempVariableId, type(type)); nextTempVariableId += Type.getType(type(type).getType()).getSize(); allVariables.add(variable); return variable; }
public void visitClassAnnotation(ClassVisitor visitor) { AnnotationVisitor annotationVisitor = visitor.visitAnnotation(type.getType(), true); visit(annotationVisitor); annotationVisitor.visitEnd(); }
public void visitFieldAnnotation(FieldVisitor visitor) { AnnotationVisitor annotationVisitor = visitor.visitAnnotation(type.getType(), true); visit(annotationVisitor); annotationVisitor.visitEnd(); }
public void visitParameterAnnotation(int parameterIndex, MethodVisitor visitor) { AnnotationVisitor annotationVisitor = visitor.visitParameterAnnotation(parameterIndex, type.getType(), true); visit(annotationVisitor); annotationVisitor.visitEnd(); }
public void visitMethodAnnotation(MethodVisitor visitor) { AnnotationVisitor annotationVisitor = visitor.visitAnnotation(type.getType(), true); visit(annotationVisitor); annotationVisitor.visitEnd(); }
@Override public void accept(MethodVisitor visitor, MethodGenerationContext generationContext) { if (value.isPrimitive()) { Class<?> wrapper = Primitives.wrap(value.getPrimitiveType()); getStaticInstruction(wrapper, "TYPE", Class.class).accept(visitor, generationContext); } else { visitor.visitLdcInsn(Type.getType(value.getType())); } }
@Override public void accept(MethodVisitor visitor, MethodGenerationContext generationContext) { visitor.visitVarInsn(Type.getType(getVariable().getType().getType()).getOpcode(ILOAD.getOpCode()), generationContext.getVariableSlot(getVariable())); }
@Override public void accept(MethodVisitor visitor, MethodGenerationContext generationContext) { visitor.visitVarInsn(Type.getType(getVariable().getType().getType()).getOpcode(ISTORE.getOpCode()), generationContext.getVariableSlot(getVariable())); }
public void visit(ClassVisitor visitor) { FieldVisitor fieldVisitor = visitor.visitField(toAccessModifier(access), name, type.getType(), type.getGenericSignature(), null); if (fieldVisitor == null) { return; } for (AnnotationDefinition annotation : annotations) { annotation.visitFieldAnnotation(fieldVisitor); } fieldVisitor.visitEnd(); }
@Override public void accept(MethodVisitor visitor, MethodGenerationContext generationContext) { visitor.visitLocalVariable(variable.getName(), variable.getType().getType(), variable.getType().getGenericSignature(), start.getLabel(), end.getLabel(), generationContext.getVariableSlot(variable)); }