68 JVM_ACC_IS_SHARED_CLASS = 0x02000000, // True if klass is shared
69
70 // Klass* and Method* flags
71 JVM_ACC_HAS_LOCAL_VARIABLE_TABLE= 0x00200000,
72
73 JVM_ACC_PROMOTED_FLAGS = 0x00200000, // flags promoted from methods to the holding klass
74
75 // field flags
76 // Note: these flags must be defined in the low order 16 bits because
77 // InstanceKlass only stores a ushort worth of information from the
78 // AccessFlags value.
79 // These bits must not conflict with any other field-related access flags
80 // (e.g., ACC_ENUM).
81 // Note that the class-related ACC_ANNOTATION bit conflicts with these flags.
82 JVM_ACC_FIELD_ACCESS_WATCHED = 0x00002000, // field access is watched by JVMTI
83 JVM_ACC_FIELD_MODIFICATION_WATCHED = 0x00008000, // field modification is watched by JVMTI
84 JVM_ACC_FIELD_INTERNAL = 0x00000400, // internal field, same as JVM_ACC_ABSTRACT
85 JVM_ACC_FIELD_STABLE = 0x00000020, // @Stable field, same as JVM_ACC_SYNCHRONIZED and JVM_ACC_SUPER
86 JVM_ACC_FIELD_INITIALIZED_FINAL_UPDATE = 0x00000200, // (static) final field updated outside (class) initializer, same as JVM_ACC_NATIVE
87 JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE = 0x00000800, // field has generic signature
88 /* JVM_ACC_FLATTENABLE = 0x00000100, */ // To be enabled when ACC_FLATTENABLE is removed from java.base
89 JVM_ACC_FIELD_FLATTENED = 0x00008000, // flattened value field
90
91 JVM_ACC_FIELD_INTERNAL_FLAGS = JVM_ACC_FIELD_ACCESS_WATCHED |
92 JVM_ACC_FIELD_MODIFICATION_WATCHED |
93 JVM_ACC_FIELD_INTERNAL |
94 JVM_ACC_FIELD_STABLE |
95 JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE |
96 JVM_ACC_FLATTENABLE |
97 JVM_ACC_FIELD_FLATTENED,
98
99 // flags accepted by set_field_flags()
100 JVM_ACC_FIELD_FLAGS = JVM_RECOGNIZED_FIELD_MODIFIERS | JVM_ACC_FIELD_INTERNAL_FLAGS
101
102 };
103
104
105 class AccessFlags {
106 friend class VMStructs;
107 private:
108 jint _flags;
109
110 public:
111 AccessFlags() : _flags(0) {}
112 explicit AccessFlags(jint flags) : _flags(flags) {}
113
114 // Java access flags
115 bool is_public () const { return (_flags & JVM_ACC_PUBLIC ) != 0; }
116 bool is_private () const { return (_flags & JVM_ACC_PRIVATE ) != 0; }
|
68 JVM_ACC_IS_SHARED_CLASS = 0x02000000, // True if klass is shared
69
70 // Klass* and Method* flags
71 JVM_ACC_HAS_LOCAL_VARIABLE_TABLE= 0x00200000,
72
73 JVM_ACC_PROMOTED_FLAGS = 0x00200000, // flags promoted from methods to the holding klass
74
75 // field flags
76 // Note: these flags must be defined in the low order 16 bits because
77 // InstanceKlass only stores a ushort worth of information from the
78 // AccessFlags value.
79 // These bits must not conflict with any other field-related access flags
80 // (e.g., ACC_ENUM).
81 // Note that the class-related ACC_ANNOTATION bit conflicts with these flags.
82 JVM_ACC_FIELD_ACCESS_WATCHED = 0x00002000, // field access is watched by JVMTI
83 JVM_ACC_FIELD_MODIFICATION_WATCHED = 0x00008000, // field modification is watched by JVMTI
84 JVM_ACC_FIELD_INTERNAL = 0x00000400, // internal field, same as JVM_ACC_ABSTRACT
85 JVM_ACC_FIELD_STABLE = 0x00000020, // @Stable field, same as JVM_ACC_SYNCHRONIZED and JVM_ACC_SUPER
86 JVM_ACC_FIELD_INITIALIZED_FINAL_UPDATE = 0x00000200, // (static) final field updated outside (class) initializer, same as JVM_ACC_NATIVE
87 JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE = 0x00000800, // field has generic signature
88 JVM_ACC_FIELD_FLATTENABLE = 0x00004000, // flattenable field
89 JVM_ACC_FIELD_FLATTENED = 0x00008000, // flattened field
90
91 JVM_ACC_FIELD_INTERNAL_FLAGS = JVM_ACC_FIELD_ACCESS_WATCHED |
92 JVM_ACC_FIELD_MODIFICATION_WATCHED |
93 JVM_ACC_FIELD_INTERNAL |
94 JVM_ACC_FIELD_STABLE |
95 JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE |
96 JVM_ACC_FLATTENABLE |
97 JVM_ACC_FIELD_FLATTENABLE |
98 JVM_ACC_FIELD_FLATTENED,
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; }
|