langtools/src/share/classes/com/sun/tools/classfile/AccessFlags.java
changeset 15720 e61b2f7a5148
parent 9303 eae35c201e19
child 22448 a85fbad9d687
child 22163 3651128c74eb
equal deleted inserted replaced
15719:6b64cf96346b 15720:e61b2f7a5148
    54     public static final int ACC_ABSTRACT      = 0x0400; // class, inner,        method
    54     public static final int ACC_ABSTRACT      = 0x0400; // class, inner,        method
    55     public static final int ACC_STRICT        = 0x0800; //                      method
    55     public static final int ACC_STRICT        = 0x0800; //                      method
    56     public static final int ACC_SYNTHETIC     = 0x1000; // class, inner, field, method
    56     public static final int ACC_SYNTHETIC     = 0x1000; // class, inner, field, method
    57     public static final int ACC_ANNOTATION    = 0x2000; // class, inner
    57     public static final int ACC_ANNOTATION    = 0x2000; // class, inner
    58     public static final int ACC_ENUM          = 0x4000; // class, inner, field
    58     public static final int ACC_ENUM          = 0x4000; // class, inner, field
    59     public static final int ACC_MODULE        = 0x8000; // class, inner, field, method
    59     public static final int ACC_MANDATED      = 0x8000; // class, inner, field, method
    60 
    60 
    61     public static enum Kind { Class, InnerClass, Field, Method};
    61     public static enum Kind { Class, InnerClass, Field, Method};
    62 
    62 
    63     AccessFlags(ClassReader cr) throws IOException {
    63     AccessFlags(ClassReader cr) throws IOException {
    64         this(cr.readUnsignedShort());
    64         this(cr.readUnsignedShort());
    79     public int byteLength() {
    79     public int byteLength() {
    80         return 2;
    80         return 2;
    81     }
    81     }
    82 
    82 
    83     private static final int[] classModifiers = {
    83     private static final int[] classModifiers = {
    84         ACC_PUBLIC, ACC_FINAL, ACC_ABSTRACT, ACC_MODULE
    84         ACC_PUBLIC, ACC_FINAL, ACC_ABSTRACT
    85     };
    85     };
    86 
    86 
    87     private static final int[] classFlags = {
    87     private static final int[] classFlags = {
    88         ACC_PUBLIC, ACC_FINAL, ACC_SUPER, ACC_INTERFACE, ACC_ABSTRACT,
    88         ACC_PUBLIC, ACC_FINAL, ACC_SUPER, ACC_INTERFACE, ACC_ABSTRACT,
    89         ACC_SYNTHETIC, ACC_ANNOTATION, ACC_ENUM, ACC_MODULE
    89         ACC_SYNTHETIC, ACC_ANNOTATION, ACC_ENUM
    90     };
    90     };
    91 
    91 
    92     public Set<String> getClassModifiers() {
    92     public Set<String> getClassModifiers() {
    93         int f = ((flags & ACC_INTERFACE) != 0 ? flags & ~ACC_ABSTRACT : flags);
    93         int f = ((flags & ACC_INTERFACE) != 0 ? flags & ~ACC_ABSTRACT : flags);
    94         return getModifiers(f, classModifiers, Kind.Class);
    94         return getModifiers(f, classModifiers, Kind.Class);
    98         return getFlags(classFlags, Kind.Class);
    98         return getFlags(classFlags, Kind.Class);
    99     }
    99     }
   100 
   100 
   101     private static final int[] innerClassModifiers = {
   101     private static final int[] innerClassModifiers = {
   102         ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
   102         ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
   103         ACC_ABSTRACT, ACC_MODULE
   103         ACC_ABSTRACT
   104     };
   104     };
   105 
   105 
   106     private static final int[] innerClassFlags = {
   106     private static final int[] innerClassFlags = {
   107         ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL, ACC_SUPER,
   107         ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL, ACC_SUPER,
   108         ACC_INTERFACE, ACC_ABSTRACT, ACC_SYNTHETIC, ACC_ANNOTATION, ACC_ENUM, ACC_MODULE
   108         ACC_INTERFACE, ACC_ABSTRACT, ACC_SYNTHETIC, ACC_ANNOTATION, ACC_ENUM
   109     };
   109     };
   110 
   110 
   111     public Set<String> getInnerClassModifiers() {
   111     public Set<String> getInnerClassModifiers() {
   112         int f = ((flags & ACC_INTERFACE) != 0 ? flags & ~ACC_ABSTRACT : flags);
   112         int f = ((flags & ACC_INTERFACE) != 0 ? flags & ~ACC_ABSTRACT : flags);
   113         return getModifiers(f, innerClassModifiers, Kind.InnerClass);
   113         return getModifiers(f, innerClassModifiers, Kind.InnerClass);
   117         return getFlags(innerClassFlags, Kind.InnerClass);
   117         return getFlags(innerClassFlags, Kind.InnerClass);
   118     }
   118     }
   119 
   119 
   120     private static final int[] fieldModifiers = {
   120     private static final int[] fieldModifiers = {
   121         ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
   121         ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
   122         ACC_VOLATILE, ACC_TRANSIENT, ACC_MODULE
   122         ACC_VOLATILE, ACC_TRANSIENT
   123     };
   123     };
   124 
   124 
   125     private static final int[] fieldFlags = {
   125     private static final int[] fieldFlags = {
   126         ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
   126         ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
   127         ACC_VOLATILE, ACC_TRANSIENT, ACC_SYNTHETIC, ACC_ENUM, ACC_MODULE
   127         ACC_VOLATILE, ACC_TRANSIENT, ACC_SYNTHETIC, ACC_ENUM
   128     };
   128     };
   129 
   129 
   130     public Set<String> getFieldModifiers() {
   130     public Set<String> getFieldModifiers() {
   131         return getModifiers(fieldModifiers, Kind.Field);
   131         return getModifiers(fieldModifiers, Kind.Field);
   132     }
   132     }
   135         return getFlags(fieldFlags, Kind.Field);
   135         return getFlags(fieldFlags, Kind.Field);
   136     }
   136     }
   137 
   137 
   138     private static final int[] methodModifiers = {
   138     private static final int[] methodModifiers = {
   139         ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
   139         ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
   140         ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT, ACC_STRICT, ACC_MODULE
   140         ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT, ACC_STRICT
   141     };
   141     };
   142 
   142 
   143     private static final int[] methodFlags = {
   143     private static final int[] methodFlags = {
   144         ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
   144         ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
   145         ACC_SYNCHRONIZED, ACC_BRIDGE, ACC_VARARGS, ACC_NATIVE, ACC_ABSTRACT,
   145         ACC_SYNCHRONIZED, ACC_BRIDGE, ACC_VARARGS, ACC_NATIVE, ACC_ABSTRACT,
   146         ACC_STRICT, ACC_SYNTHETIC, ACC_MODULE
   146         ACC_STRICT, ACC_SYNTHETIC
   147     };
   147     };
   148 
   148 
   149     public Set<String> getMethodModifiers() {
   149     public Set<String> getMethodModifiers() {
   150         return getModifiers(methodModifiers, Kind.Method);
   150         return getModifiers(methodModifiers, Kind.Method);
   151     }
   151     }
   206                 return "native";
   206                 return "native";
   207             case ACC_ABSTRACT:
   207             case ACC_ABSTRACT:
   208                 return "abstract";
   208                 return "abstract";
   209             case ACC_STRICT:
   209             case ACC_STRICT:
   210                 return "strictfp";
   210                 return "strictfp";
   211             case ACC_MODULE:
   211             case ACC_MANDATED:
   212                 return "module";
   212                 return "mandated";
   213             default:
   213             default:
   214                 return null;
   214                 return null;
   215         }
   215         }
   216     }
   216     }
   217 
   217 
   245             return "ACC_SYNTHETIC";
   245             return "ACC_SYNTHETIC";
   246         case ACC_ANNOTATION:
   246         case ACC_ANNOTATION:
   247             return "ACC_ANNOTATION";
   247             return "ACC_ANNOTATION";
   248         case ACC_ENUM:
   248         case ACC_ENUM:
   249             return "ACC_ENUM";
   249             return "ACC_ENUM";
   250         case ACC_MODULE:
   250         case ACC_MANDATED:
   251             return "ACC_MODULE";
   251             return "ACC_MANDATED";
   252         default:
   252         default:
   253             return null;
   253             return null;
   254         }
   254         }
   255     }
   255     }
   256 
   256