/** * Aggregates a size change with this stack manipulation size. * * @param sizeChange The change in size the other operation implies. * @param interimMaximalSize The interim maximal size of the operand stack that the other operation requires * at least to function. * @return The aggregated size. */ private Size aggregate(int sizeChange, int interimMaximalSize) { return new Size(sizeImpact + sizeChange, Math.max(maximalSize, sizeImpact + interimMaximalSize)); } }
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/Arrays", "hashCode", "([J)I", false); return new Size(0, 0); } },
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/Arrays", "hashCode", "([B)I", false); return new Size(0, 0); } },
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/Arrays", "hashCode", "([D)I", false); return new Size(0, 0); } },
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitInsn(Opcodes.DUP2); methodVisitor.visitIntInsn(Opcodes.BIPUSH, 32); methodVisitor.visitInsn(Opcodes.LUSHR); methodVisitor.visitInsn(Opcodes.LXOR); methodVisitor.visitInsn(Opcodes.L2I); return new Size(-1, 3); } },
/** * {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Implementation.Context implementationContext) { methodVisitor.visitInsn(loadOpcode); return stackSize.toIncreasingSize().aggregate(new Size(-2, 0)); } }
/** * Creates an instance of a * {@link StackManipulation.Size} * that describes a stack decrease of this size. * * @return A stack size decrease by the size represented by this stack size. */ public StackManipulation.Size toDecreasingSize() { return new StackManipulation.Size(-1 * getSize(), 0); }
/** * {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Implementation.Context implementationContext) { methodVisitor.visitTypeInsn(Opcodes.NEW, typeDescription.getInternalName()); return new Size(1, 1); } }
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/Arrays", "equals", "([Ljava/lang/Object;[Ljava/lang/Object;)Z", false); return new Size(-1, 0); } },
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/Arrays", "equals", "([D[D)Z", false); return new Size(-1, 0); } },
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/Arrays", "toString", "([I)Ljava/lang/String;", false); methodVisitor.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;", false); return new Size(0, 0); } },
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Z)Ljava/lang/StringBuilder;", false); return new Size(0, 0); } },
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/Arrays", "hashCode", "([F)I", false); return new Size(0, 0); } },
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/Arrays", "hashCode", "([S)I", false); return new Size(0, 0); } },
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/Arrays", "equals", "([F[F)Z", false); return new Size(-1, 0); } },
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitInsn(Opcodes.FCMPL); return new Size(-1, 0); } },
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitInsn(Opcodes.LCMP); return new Size(-2, 0); } },
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/Arrays", "toString", "([Z)Ljava/lang/String;", false); methodVisitor.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;", false); return new Size(0, 0); } },
/** {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Context implementationContext) { methodVisitor.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(C)Ljava/lang/StringBuilder;", false); return new Size(0, 0); } },
/** * {@inheritDoc} */ public Size apply(MethodVisitor methodVisitor, Implementation.Context implementationContext) { methodVisitor.visitIincInsn(offset, value); return new Size(0, 0); } }