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