All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nd4j.bytebuddy.arithmetic.relative.op.RelativeOperationByteCodeAppender Maven / Gradle / Ivy

package org.nd4j.bytebuddy.arithmetic.relative.op;

import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.implementation.Implementation;
import net.bytebuddy.implementation.bytecode.ByteCodeAppender;
import net.bytebuddy.implementation.bytecode.StackManipulation;
import net.bytebuddy.jar.asm.MethodVisitor;

/**
 * Appends byte code for basic operations between 2 integers:
 * add
 * sub
 * mul
 * div
 * mod
 *
 * @author Adam Gibson
 */
public class RelativeOperationByteCodeAppender implements ByteCodeAppender {
    private StackManipulation op;

    /**
     *
     * * @param op the operation to perform
     */
    public RelativeOperationByteCodeAppender(RelativeOperationImplementation.Operation op) {
        this.op = RelativeOperationImplementation.opFor(op);
    }

    @Override
    public Size apply(MethodVisitor methodVisitor, Implementation.Context implementationContext,
                    MethodDescription instrumentedMethod) {
        StackManipulation.Size size = op.apply(methodVisitor, implementationContext);
        return new Size(size.getMaximalSize(), instrumentedMethod.getStackSize());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy