Example usage for org.objectweb.asm.commons AnalyzerAdapter AnalyzerAdapter

List of usage examples for org.objectweb.asm.commons AnalyzerAdapter AnalyzerAdapter

Introduction

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

Prototype

public AnalyzerAdapter(final String owner, final int access, final String name, final String descriptor,
        final MethodVisitor methodVisitor) 

Source Link

Document

Constructs a new AnalyzerAdapter .

Usage

From source file:asmlib.UninitializedCallChecker.java

License:Open Source License

public UninitializedCallChecker(int access, String name, String desc, String signature, String[] exceptions,
        ClassVisitor cv, String className, PrintWriter pw) {
    super(Opcodes.ASM4, new AnalyzerAdapter(className, access, name, desc,
            cv.visitMethod(access, name, desc, signature, exceptions)));
    _analyzerAdapter = (AnalyzerAdapter) mv;
    _pw = pw;/*from   www  . j a  va2s .c o m*/
    _name = name;
    _desc = desc;
}

From source file:ch.eiafr.cojac.FloatReplaceClassVisitor.java

License:Apache License

private MethodVisitor instrumentMethod(MethodVisitor parentMv, int access, String desc, String oldDesc,
        String name) {//from   w  w  w .jav  a 2  s  .  c  o m
    MethodVisitor mv;
    // Create the MethodVisitor delegation chain: 
    // MyLocalAdder                    adds two local variables
    //  -> FloatReplacerMethodVisitor  main bytecode transformation (with helper class FloatProxyMethod)
    //   -> FloatVariableSorter        remaps parameters index (due to the replacement of double (2 slots) as objects (1 slot))
    //   -> AnalyzerAdapter            keeps track of effective stack, so that we know the type of the top
    //    -> parentMv                  typically the final Writer
    // the last one (parentMv) is typically a MethodWriter
    // With maybe some intermediate TraceMethodVisitor to help debugging...

    if (wantsToDump(crtClassName, name)) { // name.contains("dumpMethod")) { // "dumpMethod"
        parentMv = new TraceMethodVisitor(parentMv, newPrinter("FINAL  " + name + desc));
    }
    AnalyzerAdapter aa = new AnalyzerAdapter(crtClassName, access, name, desc, parentMv);
    FloatVariablesSorter lvs = new FloatVariablesSorter(access, oldDesc, aa);
    MethodVisitor aux = lvs;
    if (wantsToDump(crtClassName, name)) {
        aux = new TraceMethodVisitor(lvs, newPrinter("JUST BEFORE LVS " + name + desc));
    }
    ReplaceFloatsMethods rfm = new ReplaceFloatsMethods(fpm, crtClassName, references);
    FloatReplacerMethodVisitor frmv = new FloatReplacerMethodVisitor(aa, aux, rfm, stats, factory, references);
    MyLocalAdder mla = new MyLocalAdder(access, oldDesc, frmv);
    fpm.setUsefulPartners(aa, mla);
    mv = mla;
    if (wantsToDump(crtClassName, name))
        mv = new TraceMethodVisitor(mv, newPrinter("BEFORE " + name + desc));
    return mv;
}

From source file:com.github.wolf480pl.mias4j.core.rewrite.SandboxAdapter.java

License:Open Source License

@Override
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
    MethodAdapter ma = new MethodAdapter(cv.visitMethod(access, name, desc, signature, exceptions), policy,
            clazz, name.equals(INIT));/*  ww w  .  j  av  a2  s. co  m*/
    AnalyzerAdapter analyzer = new AnalyzerAdapter(clazz.getInternalName(), access, name, desc, ma);
    ma.setAnalyzer(analyzer);
    return analyzer;
}

From source file:de.unisb.cs.st.javalanche.mutation.bytecodeMutations.MutationsClassAdapter.java

License:Open Source License

public MethodVisitor visitMethod(int access, String name, String desc, String signature,
        final String[] exceptions) {
    MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions);

    mv = new CheckMethodAdapter(mv);
    mv = new RicMethodAdapter(mv, className, name, ricPossibilities, mutationManager, desc);
    mv = new NegateJumpsMethodAdapter(mv, className, name, negatePossibilities, mutationManager, desc);
    mv = new ArithmeticReplaceMethodAdapter(mv, className, name, arithmeticPossibilities, mutationManager,
            desc);/*from  w  ww.  j a va 2s . c  o m*/
    mv = new RemoveMethodCallsMethodAdapter(mv, className, name, removeCallsPossibilities, mutationManager,
            desc);
    JavalancheConfiguration config = ConfigurationLocator.getJavalancheConfiguration();
    if (config.enableMutationType(MutationType.REPLACE_VARIABLE)) {
        ReplaceVariablesMethodAdapter rvAdapter = new ReplaceVariablesMethodAdapter(mv, className, name,
                replaceVariablePossibilities, desc, mutationManager,
                projectVariables.getStaticVariables(className), projectVariables.getClassVariables(className));
        mv = rvAdapter;
        AnalyzerAdapter analyzerAdapter = new AnalyzerAdapter(className, access, name, desc, mv);
        rvAdapter.setAnlyzeAdapter(analyzerAdapter);
        mv = analyzerAdapter;
    }
    if (config.enableMutationType(MutationType.ABSOLUTE_VALUE)) {
        mv = new AbsoluteValueMethodAdapter(mv, className, name, absolutValuePossibilities, mutationManager,
                desc);
    }
    if (config.enableMutationType(MutationType.UNARY_OPERATOR)) {
        mv = new UnaryOperatorMethodAdapter(mv, className, name, unaryOperatorPossibilities, mutationManager,
                desc);
    }
    if (config.enableMutationType(MutationType.MONITOR_REMOVE)) {
        mv = new MonitorRemoveMethodAdapter(mv, className, name, monitorPossibilities, mutationManager, desc);
    }
    if (config.enableMutationType(MutationType.REPLACE_THREAD_CALL)) {
        mv = new ReplaceThreadCallsMethodAdapter(mv, className, name, replaceThreadCallPossibilities,
                mutationManager, desc);

    }
    return mv;

}

From source file:de.unisb.cs.st.javalanche.mutation.bytecodeMutations.MutationsCollectorClassAdapter.java

License:Open Source License

public MethodVisitor visitMethod(int access, String name, String desc, String signature,
        final String[] exceptions) {
    MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions);
    if ((access & Opcodes.ACC_SYNTHETIC) > 0 || (access & Opcodes.ACC_BRIDGE) > 0 || name.equals("<clinit>")) {
        return mv;
    }//from   w ww  . j  a v a  2s.  c o m
    if (debug) {
        mv = new CheckMethodAdapter(mv);
    }
    JavalancheConfiguration configuration = ConfigurationLocator.getJavalancheConfiguration();
    if (configuration.enableMutationType(REPLACE_CONSTANT)) {
        mv = new PossibilitiesRicMethodAdapter(mv, className, name, mpc, ricPossibilities, desc);
    }
    if (configuration.enableMutationType(NEGATE_JUMP)) {
        mv = new NegateJumpsPossibilitiesMethodAdapter(mv, className, name, mpc, negatePossibilities, desc);
    }
    if (configuration.enableMutationType(ARITHMETIC_REPLACE)) {
        mv = new PossibilitiesArithmeticReplaceMethodAdapter(mv, className, name, mpc, arithmeticPossibilities,
                desc);
    }
    if (configuration.enableMutationType(REMOVE_CALL)) {
        mv = new RemoveCallsPossibilitiesMethodAdapter(new MyAdviceAdapter(mv, access, name, desc), className,
                name, mpc, removeCallsPossibilities, desc);
    }
    if (configuration.enableMutationType(REPLACE_VARIABLE)) {
        ReplaceVariablesPossibilitiesMethodAdapter rvAdapter = new ReplaceVariablesPossibilitiesMethodAdapter(
                mv, className, name, mpc, replaceVariablesPossibilities, desc,
                projectVariables.getStaticVariables(className), projectVariables.getClassVariables(className));
        mv = rvAdapter;
        AnalyzerAdapter analyzerAdapter = new AnalyzerAdapter(className, access, name, desc, mv);
        rvAdapter.setAnlyzeAdapter(analyzerAdapter);
        mv = analyzerAdapter;
    }
    if (configuration.enableMutationType(ABSOLUTE_VALUE)) {
        mv = new AbsoluteValuePossibilitiesAdapter(mv, className, name, absoluteValuePossibilities, desc, mpc);
    }
    if (configuration.enableMutationType(UNARY_OPERATOR)) {
        mv = new UnaryOperatorPossibilitiesAdapter(mv, className, name, unaryOperatorPossibilities, desc, mpc);
    }

    if (configuration.enableMutationType(MONITOR_REMOVE)) {
        mv = new MonitorRemovePossibilitiesMethodAdapter(mv, className, name, mpc, monitorPossibilities, desc);
    }
    if (configuration.enableMutationType(REPLACE_THREAD_CALL)) {
        mv = new ReplaceThreadCallsPossibilitiesMethodAdapter(new ReplaceAdviceAdapter(mv, access, name, desc),
                className, name, mpc, replaceThreadCallsPossibilities, desc);
    }
    return mv;
}

From source file:de.unisb.cs.st.javalanche.mutation.bytecodeMutations.replaceVariables.ReplaceVariablesClassAdapter.java

License:Open Source License

@Override
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
    ReplaceVariablesMethodAdapter actualAdapter = new ReplaceVariablesMethodAdapter(
            super.visitMethod(access, name, desc, signature, exceptions), className, name, possibilities, desc,
            mm, projectVariables.getStaticVariables(className), projectVariables.getClassVariables(className));
    AnalyzerAdapter analyzerAdapter = new AnalyzerAdapter(className, access, name, desc, actualAdapter);
    actualAdapter.setAnlyzeAdapter(analyzerAdapter);
    return analyzerAdapter;
}

From source file:de.unisb.cs.st.javalanche.mutation.bytecodeMutations.replaceVariables.ReplaceVariablesPossibilitiesClassAdapter.java

License:Open Source License

@Override
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
    ReplaceVariablesPossibilitiesMethodAdapter actualAdapter = new ReplaceVariablesPossibilitiesMethodAdapter(
            super.visitMethod(access, name, desc, signature, exceptions), className, name,
            mutationPossibilityCollector, possibilities, desc, projectVariables.getStaticVariables(className),
            projectVariables.getClassVariables(className));
    AnalyzerAdapter analyzerAdapter = new AnalyzerAdapter(className, access, name, desc, actualAdapter);
    actualAdapter.setAnlyzeAdapter(analyzerAdapter);
    return analyzerAdapter;
}

From source file:edu.ubc.mirrors.holograms.HologramMethodGenerator.java

License:Open Source License

public HologramMethodGenerator(String owner, int access, String name, String desc, MethodVisitor superVisitor,
        boolean isToString, boolean isGetStackTrace) {
    super(Opcodes.ASM4, null);
    this.analyzer = new AnalyzerAdapter(owner, access, name, desc, superVisitor);
    this.mv = analyzer;
    this.name = name;
    this.owner = Type.getObjectType(owner);
    this.access = access;
    this.methodType = Type.getMethodType(desc);
    this.isToString = isToString;
    this.isGetStackTrace = isGetStackTrace;

    activeMethod = name + desc;// w  w  w.j  av  a2 s  .c  o m
}

From source file:jaspex.speculation.newspec.FakeLocalsStack.java

License:Open Source License

public DelayGetFutureMethodVisitor(int access, String name, String desc, String signature, String[] exceptions,
        ClassVisitor cv, InfoClass currentClass) {
    super(Opcodes.ASM4, new AnalyzerAdapter(currentClass.type().asmName(), access, name, desc,
            cv.visitMethod(access, name, desc, signature, exceptions)));

    // FIXME: Especulao em constructores disabled por agora (first draft)
    if (name.endsWith(
            "$speculative") /*||
                            (name.equals("<init>") &&
                            CommonTypes.SPECULATIVECTORMARKER.equals(m.argumentTypes().peekLast()))*/) {
        _active = true;//w w w .  ja  va2 s.  co  m
    } else {
        _active = false;
    }

    _analyzerAdapter = (AnalyzerAdapter) mv;
}

From source file:jaspex.transactifier.ChangeArrayAccessMethodVisitor.java

License:Open Source License

public ChangeArrayAccessMethodVisitor(int access, String name, String desc, String signature,
        String[] exceptions, ClassVisitor cv, InfoClass currentClass, Boolean JDKClass) {
    super(Opcodes.ASM4, new AnalyzerAdapter(currentClass.type().asmName(), access, name, desc,
            cv.visitMethod(access, name, desc, signature, exceptions)));
    _analyzerAdapter = (AnalyzerAdapter) mv;
    _active = !(name.equals("<clinit>") && JDKClass);
}