Example usage for org.objectweb.asm Opcodes ACC_PRIVATE

List of usage examples for org.objectweb.asm Opcodes ACC_PRIVATE

Introduction

In this page you can find the example usage for org.objectweb.asm Opcodes ACC_PRIVATE.

Prototype

int ACC_PRIVATE

To view the source code for org.objectweb.asm Opcodes ACC_PRIVATE.

Click Source Link

Usage

From source file:graph.Modifier.java

License:Apache License

/**
 * Returns an EnumSet of the modifiers, based on the given bit field (where
 * the bit values are defined as in the class file format).
 *
 * @param access Integer bit field giving access modifiers.
 * @return       Set of modifiers./*from  ww w. j  av  a  2  s . com*/
 */
public static EnumSet<Modifier> getSet(int access) {
    EnumSet<Modifier> modifiers = EnumSet.noneOf(Modifier.class);

    if ((access & Opcodes.ACC_PUBLIC) != 0) {
        modifiers.add(Modifier.PUBLIC);
    }

    if ((access & Opcodes.ACC_PROTECTED) != 0) {
        modifiers.add(Modifier.PROTECTED);
    }

    if ((access & Opcodes.ACC_PRIVATE) != 0) {
        modifiers.add(Modifier.PRIVATE);
    }

    if ((access & Opcodes.ACC_STATIC) != 0) {
        modifiers.add(Modifier.STATIC);
    }

    if ((access & Opcodes.ACC_FINAL) != 0) {
        modifiers.add(Modifier.FINAL);
    }

    if ((access & Opcodes.ACC_SUPER) != 0) {
        modifiers.add(Modifier.SUPER);
    }

    if ((access & Opcodes.ACC_INTERFACE) != 0) {
        modifiers.add(Modifier.INTERFACE);
    }

    if ((access & Opcodes.ACC_ABSTRACT) != 0) {
        modifiers.add(Modifier.ABSTRACT);
    }

    if ((access & Opcodes.ACC_SYNTHETIC) != 0) {
        modifiers.add(Modifier.SYNTHETIC);
    }

    if ((access & Opcodes.ACC_ANNOTATION) != 0) {
        modifiers.add(Modifier.ANNOTATION);
    }

    if ((access & Opcodes.ACC_ENUM) != 0) {
        modifiers.add(Modifier.ENUM);
    }

    if ((access & Opcodes.ACC_VOLATILE) != 0) {
        modifiers.add(Modifier.VOLATILE);
    }

    if ((access & Opcodes.ACC_TRANSIENT) != 0) {
        modifiers.add(Modifier.TRANSIENT);
    }

    if ((access & Opcodes.ACC_SYNCHRONIZED) != 0) {
        modifiers.add(Modifier.SYNCHRONIZED);
    }

    if ((access & Opcodes.ACC_BRIDGE) != 0) {
        modifiers.add(Modifier.BRIDGE);
    }

    if ((access & Opcodes.ACC_VARARGS) != 0) {
        modifiers.add(Modifier.VARARGS);
    }

    if ((access & Opcodes.ACC_NATIVE) != 0) {
        modifiers.add(Modifier.NATIVE);
    }

    if ((access & Opcodes.ACC_STRICT) != 0) {
        modifiers.add(Modifier.STRICT);
    }

    return modifiers;
}

From source file:io.awacs.plugin.stacktrace.ClassTransformer.java

License:Apache License

public void visit(ClassNode cn) {
    cn.check(Opcodes.ASM5);/*w  w w  .  j  a v  a 2  s  .c om*/
    //??
    List<MethodNode> appended = new ArrayList<>(cn.methods.size());
    //??
    for (Object mn : cn.methods) {
        MethodNode src = (MethodNode) mn;
        //
        if (!filterMethod(cn, src)) {
            continue;
        }
        boolean terminated = isTerminatedMethod(src);

        if (terminated) {
            //copy exceptions
            String[] exceptions = null;
            if (src.exceptions != null) {
                exceptions = new String[src.exceptions.size()];
                for (int i = 0; i < src.exceptions.size(); i++) {
                    exceptions[i] = src.exceptions.get(i).toString();
                }
            }
            //declare method
            MethodNode proxy = new MethodNode(src.access, src.name, src.desc, src.signature, exceptions);
            appended.add(proxy);
            //copy method annotations
            List<AnnotationNode> methodAnns = null;
            if (src.visibleAnnotations != null) {
                methodAnns = new ArrayList<>(src.visibleAnnotations.size());
                methodAnns.addAll(src.visibleAnnotations);
            }
            proxy.visibleAnnotations = methodAnns;
            //copy parameter annotations
            List[] parameterAnns = null;
            if (src.visibleParameterAnnotations != null) {
                parameterAnns = new List[src.visibleParameterAnnotations.length];
                System.arraycopy(src.visibleParameterAnnotations, 0, parameterAnns, 0,
                        src.visibleParameterAnnotations.length);
            }
            proxy.visibleParameterAnnotations = parameterAnns;
            //clear origin method's annotation and change name
            int _slash = cn.name.lastIndexOf('/');
            //??
            src.name = src.name + "_origin_" + cn.name.substring(_slash + 1);
            src.access = src.access & ~Opcodes.ACC_PUBLIC | Opcodes.ACC_PRIVATE;
            src.visibleAnnotations = null;
            src.visibleLocalVariableAnnotations = null;
            transformTerminatedMethod(src, proxy, cn);
        } else {
            transformPlainMethod(src, cn);
        }
    }
    cn.methods.addAll(appended);
}

From source file:io.syncframework.optimizer.OControllerClassVisitor.java

License:Apache License

/**
 * Add code to the end of the class. We are adding the IController methods
 * @see org.objectweb.asm.ClassVisitor#visitEnd()
 *//*  w  w w . j  a  va2 s . com*/
@Override
public void visitEnd() {
    //
    // private static Map<String,Boolean> _asActions;
    //
    {
        // private static Ljava/util/Map; _asActions
        FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC, "_asActions",
                "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Boolean;>;", null);
        fv.visitEnd();
    }
    //
    // private static Map<String,Class<?>> _asConverters;
    //
    {
        FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC, "_asConverters",
                "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;", null);
        fv.visitEnd();
    }
    //
    // private static Map<String,Class<?>[]> _asInterceptors;
    //
    {
        FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC, "_asInterceptors",
                "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;[Ljava/lang/Class<*>;>;", null);
        fv.visitEnd();
    }
    //
    // private static Map<String,Class<?>> _asParameters;
    //
    {
        FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC, "_asParameters",
                "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;", null);
        fv.visitEnd();
    }

    if (!createdStaticMethod) {
        MethodVisitor mv = cv.visitMethod(Opcodes.ACC_STATIC, "<clinit>", "()V", null, null);
        mv.visitCode();
        mv = new OControllerStaticMethodVisitor(mv, reflector);
        mv.visitInsn(Opcodes.RETURN);
        mv.visitMaxs(0, 0);
        mv.visitEnd();
    }

    createUrlMethod();

    createContextMethod("_asApplicationContext", Type.getDescriptor(ApplicationContext.class),
            reflector.getApplicationContext());
    createContextMethod("_asErrorContext", Type.getDescriptor(ErrorContext.class), reflector.getErrorContext());
    createContextMethod("_asCookieContext", Type.getDescriptor(CookieContext.class),
            reflector.getCookieContext());
    createContextMethod("_asMessageContext", Type.getDescriptor(MessageContext.class),
            reflector.getMessageContext());
    createContextMethod("_asRequestContext", Type.getDescriptor(RequestContext.class),
            reflector.getRequestContext());
    createContextMethod("_asSessionContext", Type.getDescriptor(SessionContext.class),
            reflector.getSessionContext());

    createParametersMethod();
    createParametersSetterMethod();
    createParametersGetterMethod();
    createParameterConverterMethod();

    createActionMethod();
    createActionInterceptorsMethod();
    createActionIsDefinedMethod();
}

From source file:io.syncframework.optimizer.OInterceptorClassVisitor.java

License:Apache License

/**
 * Add code to the end of the class. We are adding the IController methods
 * @see org.objectweb.asm.ClassVisitor#visitEnd()
 *//*from w ww . ja  v a 2s .  c o m*/
@Override
public void visitEnd() {
    //
    // private static Map<String,Class<?>> _asConverters;
    //
    {
        FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC, "_asConverters",
                "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;", null);
        fv.visitEnd();
    }
    //
    // private static Map<String,Class<?>> _asParameters;
    //
    {
        FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC, "_asParameters",
                "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;", null);
        fv.visitEnd();
    }

    createStaticMethod();

    if (!createdStaticMethod) {
        MethodVisitor mv = cv.visitMethod(Opcodes.ACC_STATIC, "<clinit>", "()V", null, null);
        mv.visitCode();
        mv = new OInterceptorStaticMethodVisitor(mv, reflector);
        mv.visitInsn(Opcodes.RETURN);
        mv.visitMaxs(0, 0);
        mv.visitEnd();
    }

    createContextMethod("_asApplicationContext", Type.getDescriptor(ApplicationContext.class),
            reflector.getApplicationContext());
    createContextMethod("_asErrorContext", Type.getDescriptor(ErrorContext.class), reflector.getErrorContext());
    createContextMethod("_asCookieContext", Type.getDescriptor(CookieContext.class),
            reflector.getCookieContext());
    createContextMethod("_asMessageContext", Type.getDescriptor(MessageContext.class),
            reflector.getMessageContext());
    createContextMethod("_asRequestContext", Type.getDescriptor(RequestContext.class),
            reflector.getRequestContext());
    createContextMethod("_asSessionContext", Type.getDescriptor(SessionContext.class),
            reflector.getSessionContext());

    createParametersMethod();
    createParametersSetterMethod();
    createParametersGetterMethod();
    createParameterConverterMethod();

    createBeforeMethod();
    createAfterMethod();
}

From source file:jaspex.speculation.CreateSpeculativeMethodVisitor.java

License:Open Source License

private static MethodVisitor createNextMethodVisitor(int access, String name, String desc, String signature,
        String[] exceptions, ClassVisitor cv) {

    if (name.endsWith("$transactional")) {
        name = name.replace("$transactional", "$speculative");

        // Mtodo original podia ser nativo, mas o $speculative no 
        access &= ~Opcodes.ACC_NATIVE;

        // Todos os mtodos $speculative devem ser public (seno o codegen falha com java.lang.IllegalAccessError)
        access = access & ~Opcodes.ACC_PRIVATE & ~Opcodes.ACC_PROTECTED | Opcodes.ACC_PUBLIC;
    }// w ww .j  ava 2  s.  c  o m

    return cv.visitMethod(access, name, desc, signature, exceptions);
}

From source file:jaspex.speculation.SpeculativeTransformer.java

License:Open Source License

public byte[] createSpeculativeMethods(ClassReader cr) {
    ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
    ClassVisitor cv = cw;//from  w  ww  . j a  v  a2 s .c  o m

    // Tornar classe public: para o codegen funcionar, todas as classes tm que ser pblicas
    // (todos os mtodos $speculative tambm j so public)
    if (!_JDKClass)
        cv = new ClassVisitor(Opcodes.ASM4, cv) {
            @Override
            public void visit(int version, int access, String name, String signature, String superName,
                    String[] interfaces) {
                access = access & ~Opcodes.ACC_PRIVATE & ~Opcodes.ACC_PROTECTED | Opcodes.ACC_PUBLIC;
                cv.visit(version, access, name, signature, superName, interfaces);
            }
        };

    // Visitor que adiciona fields e mtodos para o -detectlocal
    cv = new InjectDetectLocalClassVisitor(cv);

    // Criar verses $speculative de mtodos
    cv = new GenericMethodVisitorAdapter(cv, CreateSpeculativeMethodVisitor.class, currentClass, _JDKClass);

    // Marcar constructores com SpeculativeCtorMarker
    cv = new GenericMethodVisitorAdapter(cv, SpeculativeCtorMethodVisitor.class);

    // Potencialmente substituir alguns dos mtodos com verses internas do JaSPEx
    cv = new GenericMethodVisitorAdapter(cv, MethodReplacerMethodVisitor.class, currentClass, _JDKClass);

    // Resolver problema com o acesso a mtodos privados
    cv = new GenericMethodVisitorAdapter(cv, FixPrivateMethodAccessMethodVisitor.class, currentClass,
            _JDKClass);

    // Injectar overloads para a todos os mtodos que so herdados de superclasses no-transactificveis
    // Nota: Deve estar na pipeline *antes* do CreateSpeculativeMethodVisitor
    if (!_JDKClass)
        cv = new InjectOverloadsClassVisitor(cv, currentClass);

    cr.accept(cv, 0);

    // Criar verses non-speculative dos mtodos, que funcionam transaccionalmente, mas no
    // fazem spawn de especulaes
    new ClassReader(cw.toByteArray()).accept(new CreateNonSpeculativeMethodsClassVisitor(cw), 0);

    return cw.toByteArray();
}

From source file:jasy.lang.ASMCompiler.java

private static int getAccessModifier(JasyParser.AccessModifierContext ctx,
        JasyParser.ModStaticContext statCtx) {
    int mod = Opcodes.ACC_PRIVATE;

    if (ctx != null) {
        switch (((TerminalNode) ctx.getChild(0)).getSymbol().getType()) {
        case JasyLexer.ACC_MOD_PRIVATE:
            mod = Opcodes.ACC_PRIVATE;//from ww w.ja  v a 2s  .c o m
            break;
        case JasyLexer.ACC_MOD_PROTECTED:
            mod = Opcodes.ACC_PROTECTED;
            break;
        case JasyLexer.ACC_MOD_PUBLIC:
            mod = Opcodes.ACC_PUBLIC;
            break;
        }
    }

    if (statCtx != null)
        return mod | Opcodes.ACC_STATIC;

    return mod;
}

From source file:jasy.SourceToAstTest.java

private static Predicate<FieldAST> fIsPrivate() {
    return f -> f.selector.accessModifier == Opcodes.ACC_PRIVATE;
}

From source file:jpcsp.Allegrex.compiler.CodeBlock.java

License:Open Source License

private void addNonStaticMethods(CompilerContext context, ClassVisitor cv) {
    MethodVisitor mv;/*from  ww w.j a  v  a 2s. c om*/

    // public int exec(int returnAddress, int alternativeReturnAddress, boolean isJump) throws Exception;
    mv = cv.visitMethod(Opcodes.ACC_PUBLIC, context.getExecMethodName(), context.getExecMethodDesc(), null,
            exceptions);
    mv.visitCode();
    mv.visitMethodInsn(Opcodes.INVOKESTATIC, getClassName(), context.getStaticExecMethodName(),
            context.getStaticExecMethodDesc());
    mv.visitInsn(Opcodes.IRETURN);
    mv.visitMaxs(1, 1);
    mv.visitEnd();

    // private static IExecutable e;
    FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC, context.getReplaceFieldName(),
            executableDescriptor, null, null);
    fv.visitEnd();

    // public void setExecutable(IExecutable e);
    mv = cv.visitMethod(Opcodes.ACC_PUBLIC, context.getReplaceMethodName(), context.getReplaceMethodDesc(),
            null, exceptions);
    mv.visitCode();
    mv.visitVarInsn(Opcodes.ALOAD, 1);
    mv.visitFieldInsn(Opcodes.PUTSTATIC, getClassName(), context.getReplaceFieldName(), executableDescriptor);
    mv.visitInsn(Opcodes.RETURN);
    mv.visitMaxs(1, 2);
    mv.visitEnd();

    // public IExecutable getExecutable();
    mv = cv.visitMethod(Opcodes.ACC_PUBLIC, context.getGetMethodName(), context.getGetMethodDesc(), null,
            exceptions);
    mv.visitCode();
    mv.visitFieldInsn(Opcodes.GETSTATIC, getClassName(), context.getReplaceFieldName(), executableDescriptor);
    mv.visitInsn(Opcodes.ARETURN);
    mv.visitMaxs(1, 1);
    mv.visitEnd();
}

From source file:lapin.comp.asm.ASMByteCodeGenerator.java

License:Open Source License

private void generateFields(Env env) {
    Iterator it;/*from   w  w w. ja  v a  2 s. c o m*/

    // fields for static subr (singleton) instance
    _cw.visitField(Opcodes.ACC_STATIC + Opcodes.ACC_VOLATILE, "SELF",
            toTypeDescriptor(super.classInfo.classname()), null, null).visitEnd();

    // fields for constants
    it = constTable.keySet().iterator();
    while (it.hasNext()) {
        Object key = it.next(); // key: const object
        String val = Data.string(constTable.get(key));
        _cw.visitField(Opcodes.ACC_PRIVATE, val, TYPE_OBJECT.getDescriptor(), null, null).visitEnd();
    }

    // fields for vars
    it = varTable.keySet().iterator();
    while (it.hasNext()) {
        Object key = it.next(); // key: symbol (var)
        String val = Data.string(varTable.get(key));
        _cw.visitField(Opcodes.ACC_PRIVATE, val, TYPE_SYMBOL.getDescriptor(), null, null).visitEnd();
    }

    // fields for lls
    it = llTable.keySet().iterator();
    while (it.hasNext()) {
        Object key = it.next(); // key: lambdaList
        String val = Data.string(llTable.get(key));
        _cw.visitField(Opcodes.ACC_PRIVATE, val, TYPE_LAMBDA_LIST.getDescriptor(), null, null).visitEnd();
    }
}