33 // AccessFlags is an abstraction over Java ACC flags.
34 // See generated file classfile_constants.h for shared JVM_ACC_XXX access flags
35
36 class outputStream;
37
38 class AccessFlags {
39 friend class VMStructs;
40 private:
41 u2 _flags;
42
43 public:
44 AccessFlags() : _flags(0) {}
45 explicit AccessFlags(u2 flags) : _flags(flags) {}
46
47 // Java access flags
48 bool is_public () const { return (_flags & JVM_ACC_PUBLIC ) != 0; }
49 bool is_private () const { return (_flags & JVM_ACC_PRIVATE ) != 0; }
50 bool is_protected () const { return (_flags & JVM_ACC_PROTECTED ) != 0; }
51 bool is_static () const { return (_flags & JVM_ACC_STATIC ) != 0; }
52 bool is_final () const { return (_flags & JVM_ACC_FINAL ) != 0; }
53 bool is_synchronized() const { return (_flags & JVM_ACC_SYNCHRONIZED) != 0; }
54 bool is_super () const { return (_flags & JVM_ACC_SUPER ) != 0; }
55 bool is_volatile () const { return (_flags & JVM_ACC_VOLATILE ) != 0; }
56 bool is_bridge () const { return (_flags & JVM_ACC_BRIDGE ) != 0; }
57 bool is_transient () const { return (_flags & JVM_ACC_TRANSIENT ) != 0; }
58 bool is_varargs () const { return (_flags & JVM_ACC_VARARGS ) != 0; }
59 bool is_native () const { return (_flags & JVM_ACC_NATIVE ) != 0; }
60 bool is_enum () const { return (_flags & JVM_ACC_ENUM ) != 0; }
61 bool is_annotation () const { return (_flags & JVM_ACC_ANNOTATION ) != 0; }
62 bool is_interface () const { return (_flags & JVM_ACC_INTERFACE ) != 0; }
63 bool is_abstract () const { return (_flags & JVM_ACC_ABSTRACT ) != 0; }
64 bool is_strictfp () const { return (_flags & JVM_ACC_STRICT ) != 0; }
65
66 // Attribute flags
67 bool is_synthetic () const { return (_flags & JVM_ACC_SYNTHETIC ) != 0; }
68
69 // get as integral value
70 u2 as_unsigned_short() const { return _flags; }
71
72 void set_flags(u2 flags) { _flags = flags; }
73
74 private:
75 friend class InstanceKlass;
76 friend class ClassFileParser;
77 // the functions below should only be called on the _access_flags inst var directly,
78 // otherwise they are just changing a copy of the flags
79
80 // attribute flags
81 void set_is_synthetic() { _flags |= JVM_ACC_SYNTHETIC; }
82
83 public:
84 inline friend AccessFlags accessFlags_from(u2 flags);
|
33 // AccessFlags is an abstraction over Java ACC flags.
34 // See generated file classfile_constants.h for shared JVM_ACC_XXX access flags
35
36 class outputStream;
37
38 class AccessFlags {
39 friend class VMStructs;
40 private:
41 u2 _flags;
42
43 public:
44 AccessFlags() : _flags(0) {}
45 explicit AccessFlags(u2 flags) : _flags(flags) {}
46
47 // Java access flags
48 bool is_public () const { return (_flags & JVM_ACC_PUBLIC ) != 0; }
49 bool is_private () const { return (_flags & JVM_ACC_PRIVATE ) != 0; }
50 bool is_protected () const { return (_flags & JVM_ACC_PROTECTED ) != 0; }
51 bool is_static () const { return (_flags & JVM_ACC_STATIC ) != 0; }
52 bool is_final () const { return (_flags & JVM_ACC_FINAL ) != 0; }
53 bool is_strict () const { return (_flags & JVM_ACC_STRICT_INIT ) != 0; }
54 bool is_synchronized() const { return (_flags & JVM_ACC_SYNCHRONIZED) != 0; }
55 bool is_volatile () const { return (_flags & JVM_ACC_VOLATILE ) != 0; }
56 bool is_bridge () const { return (_flags & JVM_ACC_BRIDGE ) != 0; }
57 bool is_transient () const { return (_flags & JVM_ACC_TRANSIENT ) != 0; }
58 bool is_varargs () const { return (_flags & JVM_ACC_VARARGS ) != 0; }
59 bool is_native () const { return (_flags & JVM_ACC_NATIVE ) != 0; }
60 bool is_enum () const { return (_flags & JVM_ACC_ENUM ) != 0; }
61 bool is_annotation () const { return (_flags & JVM_ACC_ANNOTATION ) != 0; }
62 bool is_interface () const { return (_flags & JVM_ACC_INTERFACE ) != 0; }
63 bool is_abstract () const { return (_flags & JVM_ACC_ABSTRACT ) != 0; }
64 bool is_strictfp () const { return (_flags & JVM_ACC_STRICT ) != 0; }
65 bool is_identity_class () const { return (_flags & JVM_ACC_IDENTITY ) != 0; }
66
67 // Attribute flags
68 bool is_synthetic () const { return (_flags & JVM_ACC_SYNTHETIC ) != 0; }
69
70 // get as integral value
71 u2 as_unsigned_short() const { return _flags; }
72
73 void set_flags(u2 flags) { _flags = flags; }
74
75 private:
76 friend class InstanceKlass;
77 friend class ClassFileParser;
78 // the functions below should only be called on the _access_flags inst var directly,
79 // otherwise they are just changing a copy of the flags
80
81 // attribute flags
82 void set_is_synthetic() { _flags |= JVM_ACC_SYNTHETIC; }
83
84 public:
85 inline friend AccessFlags accessFlags_from(u2 flags);
|