Example usage for org.objectweb.asm.commons CodeSizeEvaluator getMaxSize

List of usage examples for org.objectweb.asm.commons CodeSizeEvaluator getMaxSize

Introduction

In this page you can find the example usage for org.objectweb.asm.commons CodeSizeEvaluator getMaxSize.

Prototype

public int getMaxSize() 

Source Link

Usage

From source file:br.usp.each.saeg.badua.core.internal.instr.MethodInstrumenter.java

License:Open Source License

@Override
public void visitEnd() {
    if (next == null)
        return;/*from   w w w . j a v  a  2  s.c o m*/

    final MethodNode original = new MethodNode(api, access, name, desc, signature, exceptions);
    final CodeSizeEvaluator sizeEval = new CodeSizeEvaluator(null);

    // 1. create a copy of the unmodified MethodNode
    accept(original);
    // 2. transform
    transform();
    // 3. evaluate new size
    accept(sizeEval);

    // size is fine (lower than 65535 bytes)
    if (sizeEval.getMaxSize() < 0xFFFF)
        accept(next);

    // size overflow
    else {
        sizeOverflow();
        original.accept(next);
    }
}

From source file:de.tuberlin.uebb.jbop.optimizer.methodsplitter.MethodSplitter.java

License:Open Source License

private int getLength(final MethodNode methodNode) {
    final CodeSizeEvaluator codeSizeEvaluator = new CodeSizeEvaluator(null);
    methodNode.accept(codeSizeEvaluator);
    return codeSizeEvaluator.getMaxSize();
}