49 JVM_ACC_IS_HIDDEN_CLASS = 0x04000000, // True if klass is hidden
50 JVM_ACC_IS_VALUE_BASED_CLASS = 0x08000000, // True if klass is marked as a ValueBased class
51 };
52
53
54 class AccessFlags {
55 friend class VMStructs;
56 private:
57 jint _flags; // TODO: move 4 access flags above to Klass and change to u2
58
59 public:
60 AccessFlags() : _flags(0) {}
61 explicit AccessFlags(jint flags) : _flags(flags) {}
62
63 // Java access flags
64 bool is_public () const { return (_flags & JVM_ACC_PUBLIC ) != 0; }
65 bool is_private () const { return (_flags & JVM_ACC_PRIVATE ) != 0; }
66 bool is_protected () const { return (_flags & JVM_ACC_PROTECTED ) != 0; }
67 bool is_static () const { return (_flags & JVM_ACC_STATIC ) != 0; }
68 bool is_final () const { return (_flags & JVM_ACC_FINAL ) != 0; }
69 bool is_synchronized() const { return (_flags & JVM_ACC_SYNCHRONIZED) != 0; }
70 bool is_super () const { return (_flags & JVM_ACC_SUPER ) != 0; }
71 bool is_volatile () const { return (_flags & JVM_ACC_VOLATILE ) != 0; }
72 bool is_transient () const { return (_flags & JVM_ACC_TRANSIENT ) != 0; }
73 bool is_native () const { return (_flags & JVM_ACC_NATIVE ) != 0; }
74 bool is_interface () const { return (_flags & JVM_ACC_INTERFACE ) != 0; }
75 bool is_abstract () const { return (_flags & JVM_ACC_ABSTRACT ) != 0; }
76
77 // Attribute flags
78 bool is_synthetic () const { return (_flags & JVM_ACC_SYNTHETIC ) != 0; }
79
80 // Klass* flags
81 bool has_finalizer () const { return (_flags & JVM_ACC_HAS_FINALIZER ) != 0; }
82 bool is_cloneable_fast () const { return (_flags & JVM_ACC_IS_CLONEABLE_FAST ) != 0; }
83 bool is_hidden_class () const { return (_flags & JVM_ACC_IS_HIDDEN_CLASS ) != 0; }
84 bool is_value_based_class () const { return (_flags & JVM_ACC_IS_VALUE_BASED_CLASS ) != 0; }
85
86 // get .class file flags
87 jint get_flags () const { return (_flags & JVM_ACC_WRITTEN_FLAGS); }
88
89 // Initialization
90 void set_field_flags(jint flags) {
91 assert((flags & JVM_RECOGNIZED_FIELD_MODIFIERS) == flags, "only recognized flags");
92 _flags = (flags & JVM_RECOGNIZED_FIELD_MODIFIERS);
93 }
94 void set_flags(jint flags) { _flags = (flags & JVM_ACC_WRITTEN_FLAGS); }
95
|
49 JVM_ACC_IS_HIDDEN_CLASS = 0x04000000, // True if klass is hidden
50 JVM_ACC_IS_VALUE_BASED_CLASS = 0x08000000, // True if klass is marked as a ValueBased class
51 };
52
53
54 class AccessFlags {
55 friend class VMStructs;
56 private:
57 jint _flags; // TODO: move 4 access flags above to Klass and change to u2
58
59 public:
60 AccessFlags() : _flags(0) {}
61 explicit AccessFlags(jint flags) : _flags(flags) {}
62
63 // Java access flags
64 bool is_public () const { return (_flags & JVM_ACC_PUBLIC ) != 0; }
65 bool is_private () const { return (_flags & JVM_ACC_PRIVATE ) != 0; }
66 bool is_protected () const { return (_flags & JVM_ACC_PROTECTED ) != 0; }
67 bool is_static () const { return (_flags & JVM_ACC_STATIC ) != 0; }
68 bool is_final () const { return (_flags & JVM_ACC_FINAL ) != 0; }
69 bool is_strict () const { return (_flags & JVM_ACC_STRICT ) != 0; }
70 bool is_synchronized() const { return (_flags & JVM_ACC_SYNCHRONIZED) != 0; }
71 bool is_volatile () const { return (_flags & JVM_ACC_VOLATILE ) != 0; }
72 bool is_transient () const { return (_flags & JVM_ACC_TRANSIENT ) != 0; }
73 bool is_native () const { return (_flags & JVM_ACC_NATIVE ) != 0; }
74 bool is_interface () const { return (_flags & JVM_ACC_INTERFACE ) != 0; }
75 bool is_abstract () const { return (_flags & JVM_ACC_ABSTRACT ) != 0; }
76 bool is_identity_class () const { return (_flags & JVM_ACC_IDENTITY ) != 0; }
77
78 // Attribute flags
79 bool is_synthetic () const { return (_flags & JVM_ACC_SYNTHETIC ) != 0; }
80
81 // Klass* flags
82 bool has_finalizer () const { return (_flags & JVM_ACC_HAS_FINALIZER ) != 0; }
83 bool is_cloneable_fast () const { return (_flags & JVM_ACC_IS_CLONEABLE_FAST ) != 0; }
84 bool is_hidden_class () const { return (_flags & JVM_ACC_IS_HIDDEN_CLASS ) != 0; }
85 bool is_value_based_class () const { return (_flags & JVM_ACC_IS_VALUE_BASED_CLASS ) != 0; }
86
87 // get .class file flags
88 jint get_flags () const { return (_flags & JVM_ACC_WRITTEN_FLAGS); }
89
90 // Initialization
91 void set_field_flags(jint flags) {
92 assert((flags & JVM_RECOGNIZED_FIELD_MODIFIERS) == flags, "only recognized flags");
93 _flags = (flags & JVM_RECOGNIZED_FIELD_MODIFIERS);
94 }
95 void set_flags(jint flags) { _flags = (flags & JVM_ACC_WRITTEN_FLAGS); }
96
|