Example usage for org.objectweb.asm Opcodes ACC_VOLATILE

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

Introduction

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

Prototype

int ACC_VOLATILE

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

Click Source Link

Usage

From source file:com.googlecode.dex2jar.ir.ToStringUtil.java

License:Apache License

public static String getAccDes(int acc) {
    StringBuilder sb = new StringBuilder();
    if ((acc & Opcodes.ACC_PUBLIC) != 0) {
        sb.append("public ");
    }/*  w w w. j av  a2 s .  c  om*/
    if ((acc & Opcodes.ACC_PROTECTED) != 0) {
        sb.append("protected ");
    }
    if ((acc & Opcodes.ACC_PRIVATE) != 0) {
        sb.append("private ");
    }
    if ((acc & Opcodes.ACC_STATIC) != 0) {
        sb.append("static ");
    }
    if ((acc & Opcodes.ACC_ABSTRACT) != 0 && (acc & Opcodes.ACC_INTERFACE) == 0) {
        sb.append("abstract ");
    }
    if ((acc & Opcodes.ACC_ANNOTATION) != 0) {
        sb.append("annotation ");
    }
    if ((acc & Opcodes.ACC_BRIDGE) != 0) {
        sb.append("bridge ");
    }
    if ((acc & Opcodes.ACC_DEPRECATED) != 0) {
        sb.append("deprecated ");
    }
    if ((acc & Opcodes.ACC_ENUM) != 0) {
        sb.append("enum ");
    }
    if ((acc & Opcodes.ACC_FINAL) != 0) {
        sb.append("final ");
    }
    if ((acc & Opcodes.ACC_INTERFACE) != 0) {
        sb.append("interace ");
    }
    if ((acc & Opcodes.ACC_NATIVE) != 0) {
        sb.append("native ");
    }
    if ((acc & Opcodes.ACC_STRICT) != 0) {
        sb.append("strict ");
    }
    if ((acc & Opcodes.ACC_SYNCHRONIZED) != 0) {
        sb.append("synchronized ");
    }
    if ((acc & Opcodes.ACC_TRANSIENT) != 0) {
        sb.append("transient ");
    }
    if ((acc & Opcodes.ACC_VARARGS) != 0) {
        sb.append("varargs ");
    }
    if ((acc & Opcodes.ACC_VOLATILE) != 0) {
        sb.append("volatile ");
    }
    return sb.toString();
}

From source file:com.googlecode.dex2jar.tools.JarAccessCmd.java

License:Apache License

static int str2acc(String s) {
    if (s == null) {
        return 0;
    }//from w ww . j  a va2s.c o m
    int result = 0;
    s = s.toLowerCase();
    if (s.contains("public")) {
        result |= Opcodes.ACC_PUBLIC;
    }
    if (s.contains("private")) {
        result |= Opcodes.ACC_PRIVATE;
    }
    if (s.contains("protected")) {
        result |= Opcodes.ACC_PROTECTED;
    }
    if (s.contains("final")) {
        result |= Opcodes.ACC_FINAL;
    }
    if (s.contains("static")) {
        result |= Opcodes.ACC_STATIC;
    }
    if (s.contains("super")) {
        result |= Opcodes.ACC_SUPER;
    }
    if (s.contains("synchronized")) {
        result |= Opcodes.ACC_SYNCHRONIZED;
    }
    if (s.contains("volatile")) {
        result |= Opcodes.ACC_VOLATILE;
    }
    if (s.contains("bridge")) {
        result |= Opcodes.ACC_BRIDGE;
    }
    if (s.contains("transient")) {
        result |= Opcodes.ACC_TRANSIENT;
    }
    if (s.contains("varargs")) {
        result |= Opcodes.ACC_VARARGS;
    }
    if (s.contains("native")) {
        result |= Opcodes.ACC_NATIVE;
    }
    if (s.contains("strict")) {
        result |= Opcodes.ACC_STRICT;
    }
    if (s.contains("interface")) {
        result |= Opcodes.ACC_INTERFACE;
    }
    if (s.contains("abstract")) {
        result |= Opcodes.ACC_ABSTRACT;
    }
    if (s.contains("synthetic")) {
        result |= Opcodes.ACC_SYNTHETIC;
    }
    if (s.contains("annotation")) {
        result |= Opcodes.ACC_ANNOTATION;
    }
    if (s.contains("enum")) {
        result |= Opcodes.ACC_ENUM;
    }
    if (s.contains("deprecated")) {
        result |= Opcodes.ACC_DEPRECATED;
    }
    return result;
}

From source file:com.masetta.spann.metadata.reader.asm3_2.FieldModifierImpl.java

License:Apache License

/**
 * <p>isVolatile</p>
 *
 * @return a boolean.
 */
public boolean isVolatile() {
    return (modifier & Opcodes.ACC_VOLATILE) != 0;
}

From source file:com.poolik.classfinder.info.ClassInfo.java

License:BSD License

/**
 * Convert an ASM access mask to a reflection Modifier mask.
 *
 * @param asmAccessMask the ASM access mask
 * @return the Modifier mask/*ww w .j ava2s .  c o  m*/
 */
private int convertAccessMaskToModifierMask(int asmAccessMask) {
    int modifier = 0;

    // Convert the ASM access info into Reflection API modifiers.

    if ((asmAccessMask & Opcodes.ACC_FINAL) != 0)
        modifier |= Modifier.FINAL;

    if ((asmAccessMask & Opcodes.ACC_NATIVE) != 0)
        modifier |= Modifier.NATIVE;

    if ((asmAccessMask & Opcodes.ACC_INTERFACE) != 0)
        modifier |= Modifier.INTERFACE;

    if ((asmAccessMask & Opcodes.ACC_ABSTRACT) != 0)
        modifier |= Modifier.ABSTRACT;

    if ((asmAccessMask & Opcodes.ACC_PRIVATE) != 0)
        modifier |= Modifier.PRIVATE;

    if ((asmAccessMask & Opcodes.ACC_PROTECTED) != 0)
        modifier |= Modifier.PROTECTED;

    if ((asmAccessMask & Opcodes.ACC_PUBLIC) != 0)
        modifier |= Modifier.PUBLIC;

    if ((asmAccessMask & Opcodes.ACC_STATIC) != 0)
        modifier |= Modifier.STATIC;

    if ((asmAccessMask & Opcodes.ACC_STRICT) != 0)
        modifier |= Modifier.STRICT;

    if ((asmAccessMask & Opcodes.ACC_SYNCHRONIZED) != 0)
        modifier |= Modifier.SYNCHRONIZED;

    if ((asmAccessMask & Opcodes.ACC_TRANSIENT) != 0)
        modifier |= Modifier.TRANSIENT;

    if ((asmAccessMask & Opcodes.ACC_VOLATILE) != 0)
        modifier |= Modifier.VOLATILE;

    return modifier;
}

From source file:com.yahoo.yqlplus.engine.internal.generate.ProgramGenerator.java

public ObjectBuilder.FieldBuilder registerValue(OperatorValue output, TypeWidget type) {
    register(output, type);// www.j a  v a2  s .  c  o m
    ObjectBuilder.FieldBuilder outputField = program.field(output.getName(), type);
    outputField.addModifiers(Opcodes.ACC_VOLATILE);
    return outputField;
}

From source file:dodola.anole.lib.IncrementalSupportVisitor.java

License:Apache License

/**
 * Ensures that the class contains a $change field used for referencing the
 * IncrementalChange dispatcher.//  www .j a va2s  . c  o m
 * <p/>
 * Also updates package_private visiblity to public so we can call into this class from
 * outside the package.
 */
@Override
public void visit(int version, int access, String name, String signature, String superName,
        String[] interfaces) {
    visitedClassName = name;
    visitedSuperName = superName;

    super.visitField(Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC | Opcodes.ACC_VOLATILE | Opcodes.ACC_SYNTHETIC,
            "$change", getRuntimeTypeName(CHANGE_TYPE), null, null);
    access = transformClassAccessForInstantRun(access);
    super.visit(version, access, name, signature, superName, interfaces);
}

From source file:edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.java

License:Open Source License

@Override
public void parse(final ClassNameAndSuperclassInfo.Builder cBuilder) throws InvalidClassFileFormatException {

    cBuilder.setCodeBaseEntry(codeBaseEntry);

    final TreeSet<ClassDescriptor> calledClassSet = new TreeSet<ClassDescriptor>();

    classReader.accept(new ClassVisitor(FindBugsASM.ASM_VERSION) {

        //            boolean isInnerClass = false;

        @Override// w w  w .ja va  2s .  c om
        public void visit(int version, int access, String name, String signature, String superName,
                String[] interfaces) {
            ClassParserUsingASM.this.slashedClassName = name;
            cBuilder.setClassfileVersion(version >>> 16, version & 0xffff);
            cBuilder.setAccessFlags(access);
            cBuilder.setClassDescriptor(DescriptorFactory.createClassDescriptor(name));
            cBuilder.setInterfaceDescriptorList(DescriptorFactory.createClassDescriptor(interfaces));
            if (superName != null) {
                cBuilder.setSuperclassDescriptor(DescriptorFactory.createClassDescriptor(superName));
            }
            if (cBuilder instanceof ClassInfo.Builder) {
                ((ClassInfo.Builder) cBuilder).setSourceSignature(signature);
            }
        }

        @Override
        public org.objectweb.asm.AnnotationVisitor visitAnnotation(String desc, boolean isVisible) {
            if (cBuilder instanceof ClassInfo.Builder) {
                AnnotationValue value = new AnnotationValue(desc);
                ((ClassInfo.Builder) cBuilder).addAnnotation(desc, value);
                return value.getAnnotationVisitor();
            }
            return null;
        }

        @Override
        public void visitAttribute(Attribute arg0) {
            //
        }

        @Override
        public void visitEnd() {
            //
        }

        @Override
        public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
            //                if (name.equals("this$0"))
            //                    isInnerClass = true;

            if (desc == null) {
                throw new NullPointerException("Description cannot be null");
            }
            if (cBuilder instanceof ClassInfo.Builder) {
                final ClassInfo.Builder cBuilder2 = (ClassInfo.Builder) cBuilder;
                if ((access & Opcodes.ACC_VOLATILE) != 0 || desc.contains("util/concurrent")) {
                    cBuilder2.setUsesConcurrency();
                }
                final FieldInfo.Builder fBuilder = new FieldInfo.Builder(slashedClassName, name, desc, access);
                fBuilder.setSourceSignature(signature);
                return new AbstractFieldAnnotationVisitor() {

                    @Override
                    public org.objectweb.asm.AnnotationVisitor visitAnnotation(final String desc,
                            boolean visible) {
                        AnnotationValue value = new AnnotationValue(desc);
                        fBuilder.addAnnotation(desc, value);
                        return value.getAnnotationVisitor();
                    }

                    @Override
                    public void visitEnd() {
                        cBuilder2.addFieldDescriptor(fBuilder.build());

                    }

                };

            }
            return null;
        }

        @Override
        public void visitInnerClass(String name, String outerName, String innerName, int access) {
            if (name.equals(slashedClassName) && outerName != null) {
                if (cBuilder instanceof ClassInfo.Builder) {
                    ClassDescriptor outerClassDescriptor = DescriptorFactory.createClassDescriptor(outerName);
                    ((ClassInfo.Builder) cBuilder).setImmediateEnclosingClass(outerClassDescriptor);
                    ((ClassInfo.Builder) cBuilder).setAccessFlags(access);
                }

            }

        }

        @Override
        public MethodVisitor visitMethod(final int access, final String methodName, final String methodDesc,
                String signature, String[] exceptions) {
            if (cBuilder instanceof ClassInfo.Builder) {
                final MethodInfo.Builder mBuilder = new MethodInfo.Builder(slashedClassName, methodName,
                        methodDesc, access);
                mBuilder.setSourceSignature(signature);
                mBuilder.setThrownExceptions(exceptions);
                if ((access & Opcodes.ACC_SYNCHRONIZED) != 0) {
                    mBuilder.setUsesConcurrency();
                }

                return new ClassParserMethodVisitor(calledClassSet, mBuilder, methodName, access, methodDesc,
                        cBuilder);

            }
            return null;
        }

        @Override
        public void visitOuterClass(String owner, String name, String desc) {

        }

        @Override
        public void visitSource(String arg0, String arg1) {
            if (cBuilder instanceof ClassInfo.Builder) {
                ((ClassInfo.Builder) cBuilder).setSource(arg0);
            }

        }
    }, ClassReader.SKIP_FRAMES);
    HashSet<ClassDescriptor> referencedClassSet = new HashSet<ClassDescriptor>();

    // collect class references

    int constantPoolCount = classReader.readUnsignedShort(8);
    int offset = 10;
    char[] buf = new char[1024];
    // System.out.println("constant pool count: " + constantPoolCount);
    for (int count = 1; count < constantPoolCount; count++) {
        int tag = classReader.readByte(offset);

        int size;
        switch (tag) {
        case Constants.CONSTANT_Methodref:
        case Constants.CONSTANT_InterfaceMethodref:
        case Constants.CONSTANT_Fieldref:
        case Constants.CONSTANT_Integer:
        case Constants.CONSTANT_Float:
        case Constants.CONSTANT_NameAndType:
        case Constants.CONSTANT_InvokeDynamic:
            size = 5;
            break;
        case Constants.CONSTANT_Long:
        case Constants.CONSTANT_Double:
            size = 9;
            count++;
            break;
        case Constants.CONSTANT_Utf8:
            size = 3 + classReader.readUnsignedShort(offset + 1);
            break;
        case Constants.CONSTANT_Class:
            @SlashedClassName
            String className = classReader.readUTF8(offset + 1, buf);
            if (className.indexOf('[') >= 0) {
                ClassParser.extractReferencedClassesFromSignature(referencedClassSet, className);
            } else if (ClassName.isValidClassName(className)) {
                ClassDescriptor classDescriptor = DescriptorFactory.instance().getClassDescriptor(className);
                referencedClassSet.add(classDescriptor);
            }
            size = 3;
            break;
        case Constants.CONSTANT_String:
        case Constants.CONSTANT_MethodType:
            size = 3;
            break;
        case Constants.CONSTANT_MethodHandle:
            size = 4;
            break;
        default:
            throw new IllegalStateException("Unexpected tag of " + tag + " at offset " + offset
                    + " while parsing " + slashedClassName + " from " + codeBaseEntry);
        }
        // System.out.println(count + "@" + offset + " : [" + tag
        // +"] size="+size);
        offset += size;
    }
    cBuilder.setCalledClassDescriptors(calledClassSet);
    cBuilder.setReferencedClassDescriptors(referencedClassSet);
}

From source file:graph.Modifier.java

License:Apache License

/**
 * Returns an integer bit field for the EnumSet, where the bit values are
 * defined as in the class file format.// www . ja v  a2 s. c o  m
 *
 * @param  set   Set of modifiers to convert to a bit field.
 * @return       Integer bit field.
 */
public static int getBitField(EnumSet<Modifier> set) {
    int access = 0;

    if (set.contains(PUBLIC)) {
        access |= Opcodes.ACC_PUBLIC;
    }

    if (set.contains(PROTECTED)) {
        access |= Opcodes.ACC_PROTECTED;
    }

    if (set.contains(PRIVATE)) {
        access |= Opcodes.ACC_PRIVATE;
    }

    if (set.contains(STATIC)) {
        access |= Opcodes.ACC_STATIC;
    }

    if (set.contains(FINAL)) {
        access |= Opcodes.ACC_FINAL;
    }

    if (set.contains(SUPER)) {
        access |= Opcodes.ACC_SUPER;
    }

    if (set.contains(INTERFACE)) {
        access |= Opcodes.ACC_INTERFACE;
    }

    if (set.contains(ABSTRACT)) {
        access |= Opcodes.ACC_ABSTRACT;
    }

    if (set.contains(SYNTHETIC)) {
        access |= Opcodes.ACC_SYNTHETIC;
    }

    if (set.contains(ANNOTATION)) {
        access |= Opcodes.ACC_ANNOTATION;
    }

    if (set.contains(ENUM)) {
        access |= Opcodes.ACC_ENUM;
    }

    if (set.contains(VOLATILE)) {
        access |= Opcodes.ACC_VOLATILE;
    }

    if (set.contains(TRANSIENT)) {
        access |= Opcodes.ACC_TRANSIENT;
    }

    if (set.contains(SYNCHRONIZED)) {
        access |= Opcodes.ACC_SYNCHRONIZED;
    }

    if (set.contains(BRIDGE)) {
        access |= Opcodes.ACC_BRIDGE;
    }

    if (set.contains(VARARGS)) {
        access |= Opcodes.ACC_VARARGS;
    }

    if (set.contains(NATIVE)) {
        access |= Opcodes.ACC_NATIVE;
    }

    return access;
}

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./*  w ww .ja va 2s  . co m*/
 */
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:lapin.comp.asm.ASMByteCodeGenerator.java

License:Open Source License

private void generateFields(Env env) {
    Iterator it;//  w  w w .ja  v  a 2s.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();
    }
}