< prev index next >

src/hotspot/share/utilities/accessFlags.hpp

Print this page

  1 /*
  2  * Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved.
  3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4  *
  5  * This code is free software; you can redistribute it and/or modify it
  6  * under the terms of the GNU General Public License version 2 only, as
  7  * published by the Free Software Foundation.
  8  *
  9  * This code is distributed in the hope that it will be useful, but WITHOUT
 10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 12  * version 2 for more details (a copy is included in the LICENSE file that
 13  * accompanied this code).
 14  *
 15  * You should have received a copy of the GNU General Public License version
 16  * 2 along with this work; if not, write to the Free Software Foundation,
 17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 18  *
 19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 20  * or visit www.oracle.com if you need additional information or have any
 21  * questions.
 22  *

 71   JVM_ACC_IS_VALUE_BASED_CLASS    = 0x08000000,     // True if klass is marked as a ValueBased class
 72   JVM_ACC_IS_BEING_REDEFINED      = 0x00100000,     // True if the klass is being redefined.
 73   JVM_ACC_HAS_RESOLVED_METHODS    = 0x00200000,     // True if the klass has resolved methods
 74 
 75   // Klass* and Method* flags
 76   JVM_ACC_HAS_LOCAL_VARIABLE_TABLE= 0x00400000,
 77 
 78   JVM_ACC_PROMOTED_FLAGS          = 0x00400000,     // flags promoted from methods to the holding klass
 79 
 80   // field flags
 81   // Note: these flags must be defined in the low order 16 bits because
 82   // InstanceKlass only stores a ushort worth of information from the
 83   // AccessFlags value.
 84   // These bits must not conflict with any other field-related access flags
 85   // (e.g., ACC_ENUM).
 86   // Note that the class-related ACC_ANNOTATION bit conflicts with these flags.
 87   JVM_ACC_FIELD_ACCESS_WATCHED            = 0x00002000, // field access is watched by JVMTI
 88   JVM_ACC_FIELD_MODIFICATION_WATCHED      = 0x00008000, // field modification is watched by JVMTI
 89   JVM_ACC_FIELD_INTERNAL                  = 0x00000400, // internal field, same as JVM_ACC_ABSTRACT
 90   JVM_ACC_FIELD_STABLE                    = 0x00000020, // @Stable field, same as JVM_ACC_SYNCHRONIZED and JVM_ACC_SUPER
 91   JVM_ACC_FIELD_INITIALIZED_FINAL_UPDATE  = 0x00000100, // (static) final field updated outside (class) initializer, same as JVM_ACC_NATIVE
 92   JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE     = 0x00000800, // field has generic signature
 93 
 94   JVM_ACC_FIELD_INTERNAL_FLAGS       = JVM_ACC_FIELD_ACCESS_WATCHED |
 95                                        JVM_ACC_FIELD_MODIFICATION_WATCHED |
 96                                        JVM_ACC_FIELD_INTERNAL |
 97                                        JVM_ACC_FIELD_STABLE |
 98                                        JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE,
 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 
129   // Attribute flags
130   bool is_synthetic   () const         { return (_flags & JVM_ACC_SYNTHETIC   ) != 0; }
131 
132   // Method* flags
133   bool is_monitor_matching     () const { return (_flags & JVM_ACC_MONITOR_MATCH          ) != 0; }
134   bool has_monitor_bytecodes   () const { return (_flags & JVM_ACC_HAS_MONITOR_BYTECODES  ) != 0; }
135   bool has_loops               () const { return (_flags & JVM_ACC_HAS_LOOPS              ) != 0; }
136   bool loops_flag_init         () const { return (_flags & JVM_ACC_LOOPS_FLAG_INIT        ) != 0; }
137   bool queued_for_compilation  () const { return (_flags & JVM_ACC_QUEUED                 ) != 0; }
138   bool is_not_c1_compilable    () const { return (_flags & JVM_ACC_NOT_C1_COMPILABLE      ) != 0; }
139   bool is_not_c2_compilable    () const { return (_flags & JVM_ACC_NOT_C2_COMPILABLE      ) != 0; }
140   bool is_not_c2_osr_compilable() const { return (_flags & JVM_ACC_NOT_C2_OSR_COMPILABLE  ) != 0; }
141   bool has_linenumber_table    () const { return (_flags & JVM_ACC_HAS_LINE_NUMBER_TABLE  ) != 0; }
142   bool has_checked_exceptions  () const { return (_flags & JVM_ACC_HAS_CHECKED_EXCEPTIONS ) != 0; }
143   bool has_jsrs                () const { return (_flags & JVM_ACC_HAS_JSRS               ) != 0; }
144   bool is_old                  () const { return (_flags & JVM_ACC_IS_OLD                 ) != 0; }
145   bool is_obsolete             () const { return (_flags & JVM_ACC_IS_OBSOLETE            ) != 0; }
146   bool is_deleted              () const { return (_flags & JVM_ACC_IS_DELETED             ) != 0; }
147   bool is_prefixed_native      () const { return (_flags & JVM_ACC_IS_PREFIXED_NATIVE     ) != 0; }

  1 /*
  2  * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved.
  3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4  *
  5  * This code is free software; you can redistribute it and/or modify it
  6  * under the terms of the GNU General Public License version 2 only, as
  7  * published by the Free Software Foundation.
  8  *
  9  * This code is distributed in the hope that it will be useful, but WITHOUT
 10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 12  * version 2 for more details (a copy is included in the LICENSE file that
 13  * accompanied this code).
 14  *
 15  * You should have received a copy of the GNU General Public License version
 16  * 2 along with this work; if not, write to the Free Software Foundation,
 17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 18  *
 19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 20  * or visit www.oracle.com if you need additional information or have any
 21  * questions.
 22  *

 71   JVM_ACC_IS_VALUE_BASED_CLASS    = 0x08000000,     // True if klass is marked as a ValueBased class
 72   JVM_ACC_IS_BEING_REDEFINED      = 0x00100000,     // True if the klass is being redefined.
 73   JVM_ACC_HAS_RESOLVED_METHODS    = 0x00200000,     // True if the klass has resolved methods
 74 
 75   // Klass* and Method* flags
 76   JVM_ACC_HAS_LOCAL_VARIABLE_TABLE= 0x00400000,
 77 
 78   JVM_ACC_PROMOTED_FLAGS          = 0x00400000,     // flags promoted from methods to the holding klass
 79 
 80   // field flags
 81   // Note: these flags must be defined in the low order 16 bits because
 82   // InstanceKlass only stores a ushort worth of information from the
 83   // AccessFlags value.
 84   // These bits must not conflict with any other field-related access flags
 85   // (e.g., ACC_ENUM).
 86   // Note that the class-related ACC_ANNOTATION bit conflicts with these flags.
 87   JVM_ACC_FIELD_ACCESS_WATCHED            = 0x00002000, // field access is watched by JVMTI
 88   JVM_ACC_FIELD_MODIFICATION_WATCHED      = 0x00008000, // field modification is watched by JVMTI
 89   JVM_ACC_FIELD_INTERNAL                  = 0x00000400, // internal field, same as JVM_ACC_ABSTRACT
 90   JVM_ACC_FIELD_STABLE                    = 0x00000020, // @Stable field, same as JVM_ACC_SYNCHRONIZED and JVM_ACC_SUPER
 91   JVM_ACC_FIELD_INITIALIZED_FINAL_UPDATE  = 0x00000200, // (static) final field updated outside (class) initializer, same as JVM_ACC_NATIVE
 92   JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE     = 0x00000800, // field has generic signature
 93 
 94   JVM_ACC_FIELD_INTERNAL_FLAGS       = JVM_ACC_FIELD_ACCESS_WATCHED |
 95                                        JVM_ACC_FIELD_MODIFICATION_WATCHED |
 96                                        JVM_ACC_FIELD_INTERNAL |
 97                                        JVM_ACC_FIELD_STABLE |
 98                                        JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE,
 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_value_class () const         { return (_flags & JVM_ACC_VALUE       ) != 0; }
129   bool is_primitive_class () const     { return (_flags & JVM_ACC_PRIMITIVE   ) != 0; }
130   bool is_identity_class  () const     { return (_flags & JVM_ACC_IDENTITY    ) != 0; }
131   bool is_permits_value_class () const { return (_flags & JVM_ACC_PERMITS_VALUE   ) != 0; }
132 
133   // Attribute flags
134   bool is_synthetic   () const         { return (_flags & JVM_ACC_SYNTHETIC   ) != 0; }
135 
136   // Method* flags
137   bool is_monitor_matching     () const { return (_flags & JVM_ACC_MONITOR_MATCH          ) != 0; }
138   bool has_monitor_bytecodes   () const { return (_flags & JVM_ACC_HAS_MONITOR_BYTECODES  ) != 0; }
139   bool has_loops               () const { return (_flags & JVM_ACC_HAS_LOOPS              ) != 0; }
140   bool loops_flag_init         () const { return (_flags & JVM_ACC_LOOPS_FLAG_INIT        ) != 0; }
141   bool queued_for_compilation  () const { return (_flags & JVM_ACC_QUEUED                 ) != 0; }
142   bool is_not_c1_compilable    () const { return (_flags & JVM_ACC_NOT_C1_COMPILABLE      ) != 0; }
143   bool is_not_c2_compilable    () const { return (_flags & JVM_ACC_NOT_C2_COMPILABLE      ) != 0; }
144   bool is_not_c2_osr_compilable() const { return (_flags & JVM_ACC_NOT_C2_OSR_COMPILABLE  ) != 0; }
145   bool has_linenumber_table    () const { return (_flags & JVM_ACC_HAS_LINE_NUMBER_TABLE  ) != 0; }
146   bool has_checked_exceptions  () const { return (_flags & JVM_ACC_HAS_CHECKED_EXCEPTIONS ) != 0; }
147   bool has_jsrs                () const { return (_flags & JVM_ACC_HAS_JSRS               ) != 0; }
148   bool is_old                  () const { return (_flags & JVM_ACC_IS_OLD                 ) != 0; }
149   bool is_obsolete             () const { return (_flags & JVM_ACC_IS_OBSOLETE            ) != 0; }
150   bool is_deleted              () const { return (_flags & JVM_ACC_IS_DELETED             ) != 0; }
151   bool is_prefixed_native      () const { return (_flags & JVM_ACC_IS_PREFIXED_NATIVE     ) != 0; }
< prev index next >