< prev index next >

src/hotspot/share/utilities/accessFlags.hpp

Print this page

 69   JVM_ACC_IS_SHARED_CLASS         = 0x02000000,     // True if klass is shared
 70   JVM_ACC_IS_HIDDEN_CLASS         = 0x04000000,     // True if klass is hidden
 71   JVM_ACC_IS_VALUE_BASED_CLASS    = 0x08000000,     // True if klass is marked as a ValueBased class
 72 
 73   // Klass* and Method* flags
 74   JVM_ACC_HAS_LOCAL_VARIABLE_TABLE= 0x00200000,
 75 
 76   JVM_ACC_PROMOTED_FLAGS          = 0x00200000,     // flags promoted from methods to the holding klass
 77 
 78   // field flags
 79   // Note: these flags must be defined in the low order 16 bits because
 80   // InstanceKlass only stores a ushort worth of information from the
 81   // AccessFlags value.
 82   // These bits must not conflict with any other field-related access flags
 83   // (e.g., ACC_ENUM).
 84   // Note that the class-related ACC_ANNOTATION bit conflicts with these flags.
 85   JVM_ACC_FIELD_ACCESS_WATCHED            = 0x00002000, // field access is watched by JVMTI
 86   JVM_ACC_FIELD_MODIFICATION_WATCHED      = 0x00008000, // field modification is watched by JVMTI
 87   JVM_ACC_FIELD_INTERNAL                  = 0x00000400, // internal field, same as JVM_ACC_ABSTRACT
 88   JVM_ACC_FIELD_STABLE                    = 0x00000020, // @Stable field, same as JVM_ACC_SYNCHRONIZED and JVM_ACC_SUPER
 89   JVM_ACC_FIELD_INITIALIZED_FINAL_UPDATE  = 0x00000100, // (static) final field updated outside (class) initializer, same as JVM_ACC_NATIVE
 90   JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE     = 0x00000800, // field has generic signature

 91 
 92   JVM_ACC_FIELD_INTERNAL_FLAGS       = JVM_ACC_FIELD_ACCESS_WATCHED |
 93                                        JVM_ACC_FIELD_MODIFICATION_WATCHED |
 94                                        JVM_ACC_FIELD_INTERNAL |
 95                                        JVM_ACC_FIELD_STABLE |
 96                                        JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE,

 97 
 98                                                     // flags accepted by set_field_flags()
 99   JVM_ACC_FIELD_FLAGS                = JVM_RECOGNIZED_FIELD_MODIFIERS | JVM_ACC_FIELD_INTERNAL_FLAGS
100 
101 };
102 
103 
104 class AccessFlags {
105   friend class VMStructs;
106  private:
107   jint _flags;
108 
109  public:
110   AccessFlags() : _flags(0) {}
111   explicit AccessFlags(jint flags) : _flags(flags) {}
112 
113   // Java access flags
114   bool is_public      () const         { return (_flags & JVM_ACC_PUBLIC      ) != 0; }
115   bool is_private     () const         { return (_flags & JVM_ACC_PRIVATE     ) != 0; }
116   bool is_protected   () const         { return (_flags & JVM_ACC_PROTECTED   ) != 0; }
117   bool is_static      () const         { return (_flags & JVM_ACC_STATIC      ) != 0; }
118   bool is_final       () const         { return (_flags & JVM_ACC_FINAL       ) != 0; }
119   bool is_synchronized() const         { return (_flags & JVM_ACC_SYNCHRONIZED) != 0; }
120   bool is_super       () const         { return (_flags & JVM_ACC_SUPER       ) != 0; }
121   bool is_volatile    () const         { return (_flags & JVM_ACC_VOLATILE    ) != 0; }
122   bool is_transient   () const         { return (_flags & JVM_ACC_TRANSIENT   ) != 0; }
123   bool is_native      () const         { return (_flags & JVM_ACC_NATIVE      ) != 0; }
124   bool is_interface   () const         { return (_flags & JVM_ACC_INTERFACE   ) != 0; }
125   bool is_abstract    () const         { return (_flags & JVM_ACC_ABSTRACT    ) != 0; }

126 
127   // Attribute flags
128   bool is_synthetic   () const         { return (_flags & JVM_ACC_SYNTHETIC   ) != 0; }
129 
130   // Method* flags
131   bool is_monitor_matching     () const { return (_flags & JVM_ACC_MONITOR_MATCH          ) != 0; }
132   bool has_monitor_bytecodes   () const { return (_flags & JVM_ACC_HAS_MONITOR_BYTECODES  ) != 0; }
133   bool has_loops               () const { return (_flags & JVM_ACC_HAS_LOOPS              ) != 0; }
134   bool loops_flag_init         () const { return (_flags & JVM_ACC_LOOPS_FLAG_INIT        ) != 0; }
135   bool queued_for_compilation  () const { return (_flags & JVM_ACC_QUEUED                 ) != 0; }
136   bool is_not_c1_compilable    () const { return (_flags & JVM_ACC_NOT_C1_COMPILABLE      ) != 0; }
137   bool is_not_c2_compilable    () const { return (_flags & JVM_ACC_NOT_C2_COMPILABLE      ) != 0; }
138   bool is_not_c2_osr_compilable() const { return (_flags & JVM_ACC_NOT_C2_OSR_COMPILABLE  ) != 0; }
139   bool has_linenumber_table    () const { return (_flags & JVM_ACC_HAS_LINE_NUMBER_TABLE  ) != 0; }
140   bool has_checked_exceptions  () const { return (_flags & JVM_ACC_HAS_CHECKED_EXCEPTIONS ) != 0; }
141   bool has_jsrs                () const { return (_flags & JVM_ACC_HAS_JSRS               ) != 0; }
142   bool is_old                  () const { return (_flags & JVM_ACC_IS_OLD                 ) != 0; }
143   bool is_obsolete             () const { return (_flags & JVM_ACC_IS_OBSOLETE            ) != 0; }
144   bool is_deleted              () const { return (_flags & JVM_ACC_IS_DELETED             ) != 0; }
145   bool is_prefixed_native      () const { return (_flags & JVM_ACC_IS_PREFIXED_NATIVE     ) != 0; }

 69   JVM_ACC_IS_SHARED_CLASS         = 0x02000000,     // True if klass is shared
 70   JVM_ACC_IS_HIDDEN_CLASS         = 0x04000000,     // True if klass is hidden
 71   JVM_ACC_IS_VALUE_BASED_CLASS    = 0x08000000,     // True if klass is marked as a ValueBased class
 72 
 73   // Klass* and Method* flags
 74   JVM_ACC_HAS_LOCAL_VARIABLE_TABLE= 0x00200000,
 75 
 76   JVM_ACC_PROMOTED_FLAGS          = 0x00200000,     // flags promoted from methods to the holding klass
 77 
 78   // field flags
 79   // Note: these flags must be defined in the low order 16 bits because
 80   // InstanceKlass only stores a ushort worth of information from the
 81   // AccessFlags value.
 82   // These bits must not conflict with any other field-related access flags
 83   // (e.g., ACC_ENUM).
 84   // Note that the class-related ACC_ANNOTATION bit conflicts with these flags.
 85   JVM_ACC_FIELD_ACCESS_WATCHED            = 0x00002000, // field access is watched by JVMTI
 86   JVM_ACC_FIELD_MODIFICATION_WATCHED      = 0x00008000, // field modification is watched by JVMTI
 87   JVM_ACC_FIELD_INTERNAL                  = 0x00000400, // internal field, same as JVM_ACC_ABSTRACT
 88   JVM_ACC_FIELD_STABLE                    = 0x00000020, // @Stable field, same as JVM_ACC_SYNCHRONIZED and JVM_ACC_SUPER
 89   JVM_ACC_FIELD_INITIALIZED_FINAL_UPDATE  = 0x00000200, // (static) final field updated outside (class) initializer, same as JVM_ACC_NATIVE
 90   JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE     = 0x00000800, // field has generic signature
 91   JVM_ACC_FIELD_INLINED                   = 0x00008000, // field is inlined
 92 
 93   JVM_ACC_FIELD_INTERNAL_FLAGS       = JVM_ACC_FIELD_ACCESS_WATCHED |
 94                                        JVM_ACC_FIELD_MODIFICATION_WATCHED |
 95                                        JVM_ACC_FIELD_INTERNAL |
 96                                        JVM_ACC_FIELD_STABLE |
 97                                        JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE |
 98                                        JVM_ACC_FIELD_INLINED,
 99 
100                                                     // flags accepted by set_field_flags()
101   JVM_ACC_FIELD_FLAGS                = JVM_RECOGNIZED_FIELD_MODIFIERS | JVM_ACC_FIELD_INTERNAL_FLAGS
102 
103 };
104 
105 
106 class AccessFlags {
107   friend class VMStructs;
108  private:
109   jint _flags;
110 
111  public:
112   AccessFlags() : _flags(0) {}
113   explicit AccessFlags(jint flags) : _flags(flags) {}
114 
115   // Java access flags
116   bool is_public      () const         { return (_flags & JVM_ACC_PUBLIC      ) != 0; }
117   bool is_private     () const         { return (_flags & JVM_ACC_PRIVATE     ) != 0; }
118   bool is_protected   () const         { return (_flags & JVM_ACC_PROTECTED   ) != 0; }
119   bool is_static      () const         { return (_flags & JVM_ACC_STATIC      ) != 0; }
120   bool is_final       () const         { return (_flags & JVM_ACC_FINAL       ) != 0; }
121   bool is_synchronized() const         { return (_flags & JVM_ACC_SYNCHRONIZED) != 0; }
122   bool is_super       () const         { return (_flags & JVM_ACC_SUPER       ) != 0; }
123   bool is_volatile    () const         { return (_flags & JVM_ACC_VOLATILE    ) != 0; }
124   bool is_transient   () const         { return (_flags & JVM_ACC_TRANSIENT   ) != 0; }
125   bool is_native      () const         { return (_flags & JVM_ACC_NATIVE      ) != 0; }
126   bool is_interface   () const         { return (_flags & JVM_ACC_INTERFACE   ) != 0; }
127   bool is_abstract    () const         { return (_flags & JVM_ACC_ABSTRACT    ) != 0; }
128   bool is_inline_type () const         { return (_flags & JVM_ACC_INLINE      ) != 0; }
129 
130   // Attribute flags
131   bool is_synthetic   () const         { return (_flags & JVM_ACC_SYNTHETIC   ) != 0; }
132 
133   // Method* flags
134   bool is_monitor_matching     () const { return (_flags & JVM_ACC_MONITOR_MATCH          ) != 0; }
135   bool has_monitor_bytecodes   () const { return (_flags & JVM_ACC_HAS_MONITOR_BYTECODES  ) != 0; }
136   bool has_loops               () const { return (_flags & JVM_ACC_HAS_LOOPS              ) != 0; }
137   bool loops_flag_init         () const { return (_flags & JVM_ACC_LOOPS_FLAG_INIT        ) != 0; }
138   bool queued_for_compilation  () const { return (_flags & JVM_ACC_QUEUED                 ) != 0; }
139   bool is_not_c1_compilable    () const { return (_flags & JVM_ACC_NOT_C1_COMPILABLE      ) != 0; }
140   bool is_not_c2_compilable    () const { return (_flags & JVM_ACC_NOT_C2_COMPILABLE      ) != 0; }
141   bool is_not_c2_osr_compilable() const { return (_flags & JVM_ACC_NOT_C2_OSR_COMPILABLE  ) != 0; }
142   bool has_linenumber_table    () const { return (_flags & JVM_ACC_HAS_LINE_NUMBER_TABLE  ) != 0; }
143   bool has_checked_exceptions  () const { return (_flags & JVM_ACC_HAS_CHECKED_EXCEPTIONS ) != 0; }
144   bool has_jsrs                () const { return (_flags & JVM_ACC_HAS_JSRS               ) != 0; }
145   bool is_old                  () const { return (_flags & JVM_ACC_IS_OLD                 ) != 0; }
146   bool is_obsolete             () const { return (_flags & JVM_ACC_IS_OBSOLETE            ) != 0; }
147   bool is_deleted              () const { return (_flags & JVM_ACC_IS_DELETED             ) != 0; }
148   bool is_prefixed_native      () const { return (_flags & JVM_ACC_IS_PREFIXED_NATIVE     ) != 0; }
< prev index next >