@Override public void visitTypeInsn(final int opcode, final String type) { instructions.add(new TypeInsnNode(opcode, type)); }
@Override public void accept(final MethodVisitor mv) { mv.visitTypeInsn(opcode, desc); acceptAnnotations(mv); }
@Override public AbstractInsnNode clone(final Map<LabelNode, LabelNode> labels) { return new TypeInsnNode(opcode, desc).cloneAnnotations(this); } }
continue; if (typeInsnNode.getOpcode() == Opcodes.CHECKCAST) { abstractInsnNode = typeInsnNode.getPrevious(); instructions.remove(typeInsnNode); } else if (typeInsnNode.getOpcode() == Opcodes.ANEWARRAY) { InsnList tmpInstructions = new InsnList(); tmpInstructions.add(new LdcInsnNode(typeInsnNode.desc)); "(Ljava/lang/Class;I)Ljava/lang/Object;", false)); tmpInstructions.add(new TypeInsnNode(Opcodes.CHECKCAST, "[Ljava/lang/Object;")); abstractInsnNode = tmpInstructions.getLast(); instructions.insertBefore(typeInsnNode, tmpInstructions);
return (N)new TypeInsnNode(old.getOpcode(), old.desc);
public static InsnList getUnboxInsnList(Class<?> primitiveType, boolean checkcast) { ExceptionUtil.mustNotBeEqualToValue("primitiveType", primitiveType, void.class); InsnList insnList = new InsnList(); if (!primitiveType.isPrimitive()) { return insnList; } Class<?> clazz = ClassInfo.box(primitiveType); String internalName = org.babyfish.org.objectweb.asm.Type.getInternalName(clazz); if (checkcast) { insnList.add(new TypeInsnNode(Opcodes.CHECKCAST, internalName)); } insnList.add( new MethodInsnNode( Opcodes.INVOKEVIRTUAL, internalName, primitiveType.getName() + "Value", "()" + getDescriptor(primitiveType), false)); return insnList; }
public static InsnList getBoxInsnList(Class<?> primitiveType, InsnList loadPrimtiveInsnNodeList) { if (!primitiveType.isPrimitive()) { return loadPrimtiveInsnNodeList; } ExceptionUtil.mustNotBeEqualToValue("primitiveType", primitiveType, void.class); Class<?> clazz = ClassInfo.box(primitiveType); String internalName = org.babyfish.org.objectweb.asm.Type.getInternalName(clazz); InsnList insnList = new InsnList(); insnList.add(new TypeInsnNode(Opcodes.NEW, internalName)); insnList.add(new InsnNode(Opcodes.DUP)); insnList.add(loadPrimtiveInsnNodeList); insnList.add( new MethodInsnNode( Opcodes.INVOKESPECIAL, internalName, "<init>", '(' + getDescriptor(primitiveType) + ")V", false)); return insnList; }
instructions.insert( objectModelFieldInsnNode, new TypeInsnNode(Opcodes.CHECKCAST, this.objectModelContractInternalName) );
if (thatTypeCategory == TypeCategory.A) { if (fieldEntry.typeVisible && !originalDesc.equals("java/lang/Object")) { instructions.add(new TypeInsnNode(Opcodes.CHECKCAST, ASM.getInternalName(originalDesc))); instructions.add(new TypeInsnNode(Opcodes.NEW, Type.getInternalName(AssertionError.class))); instructions.add(new InsnNode(Opcodes.DUP)); instructions.add(new LdcInsnNode("Internal bug: 5"));
"()" + ASM.getDescriptor(Dialect.class), true)); afterInstructions.add(new TypeInsnNode(Opcodes.INSTANCEOF, ASM.getInternalName(DistinctLimitDialect.class))); afterInstructions.add(new JumpInsnNode(Opcodes.IFEQ, endIfNode)); afterInstructions.add(new VarInsnNode(Opcodes.ALOAD, 0)); afterInstructions.add( new TypeInsnNode( Opcodes.NEW, ASM.getInternalName(DistinctLimitQueryLoader.class)));
instructions.add(new TypeInsnNode(Opcodes.ANEWARRAY, "java/lang/Object")); if (parameterTypes.length != 0) { int slot = isStatic || methodEntry.isInit() ? 0 : 1; false)); if (methodEntry.ownerVisible) { instructions.add(new TypeInsnNode(Opcodes.CHECKCAST, methodEntry.declaringClassEntry.getInternalName())); if (returnTypeCategory == TypeCategory.A) { if (methodEntry.returnVisible) { instructions.add(new TypeInsnNode(Opcodes.CHECKCAST, returnType.getInternalName())); instructions.add(new TypeInsnNode(Opcodes.NEW, Type.getInternalName(AssertionError.class))); instructions.add(new InsnNode(Opcodes.DUP)); instructions.add(new LdcInsnNode("Internal bug: 7"));
tmpInstructions.add(catchNoSuchFieldLabelNode); tmpInstructions.add(new InsnNode(Opcodes.POP)); //pop exception tmpInstructions.add(new TypeInsnNode(Opcodes.NEW, Type.getInternalName(AssertionError.class))); tmpInstructions.add(new InsnNode(Opcodes.DUP)); tmpInstructions.add(new LdcInsnNode("Internal bug: 1")); tmpInstructions.add(catchClassNotFoundLabelNode); tmpInstructions.add(new InsnNode(Opcodes.POP)); //pop exception tmpInstructions.add(new TypeInsnNode(Opcodes.NEW, Type.getInternalName(AssertionError.class))); tmpInstructions.add(new InsnNode(Opcodes.DUP)); tmpInstructions.add(new LdcInsnNode("Internal bug: 2")); tmpInstructions.add(new TypeInsnNode(Opcodes.ANEWARRAY, Type.getInternalName(Class.class))); for (int i = 0; i < parameterTypes.length; i++) { tmpInstructions.add(new InsnNode(Opcodes.DUP)); tmpInstructions.add(catchNoSuchMethodLabelNode); tmpInstructions.add(new InsnNode(Opcodes.POP)); //pop exception tmpInstructions.add(new TypeInsnNode(Opcodes.NEW, Type.getInternalName(AssertionError.class))); tmpInstructions.add(new InsnNode(Opcodes.DUP)); tmpInstructions.add(new LdcInsnNode("Internal bug: 3")); tmpInstructions.add(catchClassNotFoundLabelNode); tmpInstructions.add(new VarInsnNode(Opcodes.ASTORE, 0)); //pop exception tmpInstructions.add(new TypeInsnNode(Opcodes.NEW, Type.getInternalName(AssertionError.class))); tmpInstructions.add(new InsnNode(Opcodes.DUP)); tmpInstructions.add(new LdcInsnNode("Internal bug: 4"));
instructions.add(new TypeInsnNode(Opcodes.NEW, Type.getInternalName(AssertionError.class))); instructions.add(new InsnNode(Opcodes.DUP)); instructions.add(new LdcInsnNode("Internal bug: 6"));
ASM.getDescriptor(AST.class))); instructions.add(new TypeInsnNode(Opcodes.NEW, ASM.getInternalName(SqlGenerator.class))); instructions.add(new InsnNode(Opcodes.DUP)); instructions.add(new VarInsnNode(Opcodes.ALOAD, 0)); instructions.add(new TypeInsnNode(Opcodes.NEW, ASM.getInternalName(UnlimitedCountLoader.class))); instructions.add(new InsnNode(Opcodes.DUP)); instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));