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_transient () const { return (_flags & JVM_ACC_TRANSIENT ) != 0; }
57 bool is_native () const { return (_flags & JVM_ACC_NATIVE ) != 0; }
58 bool is_interface () const { return (_flags & JVM_ACC_INTERFACE ) != 0; }
59 bool is_abstract () const { return (_flags & JVM_ACC_ABSTRACT ) != 0; }
60
61 // Attribute flags
62 bool is_synthetic () const { return (_flags & JVM_ACC_SYNTHETIC ) != 0; }
63
64 // get as integral value
65 u2 as_unsigned_short() const { return _flags; }
66
67 void set_flags(u2 flags) { _flags = flags; }
68
69 private:
70 friend class Klass;
71 friend class ClassFileParser;
72 // the functions below should only be called on the _access_flags inst var directly,
73 // otherwise they are just changing a copy of the flags
74
75 // attribute flags
76 void set_is_synthetic() { _flags |= JVM_ACC_SYNTHETIC; }
77
78 public:
79 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 ) != 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_transient () const { return (_flags & JVM_ACC_TRANSIENT ) != 0; }
57 bool is_native () const { return (_flags & JVM_ACC_NATIVE ) != 0; }
58 bool is_interface () const { return (_flags & JVM_ACC_INTERFACE ) != 0; }
59 bool is_abstract () const { return (_flags & JVM_ACC_ABSTRACT ) != 0; }
60 bool has_vararg () const { return (_flags & JVM_ACC_VARARGS ) != 0; }
61 bool is_identity_class () const { return (_flags & JVM_ACC_IDENTITY ) != 0; }
62
63 // Attribute flags
64 bool is_synthetic () const { return (_flags & JVM_ACC_SYNTHETIC ) != 0; }
65
66 // get as integral value
67 u2 as_unsigned_short() const { return _flags; }
68
69 void set_flags(u2 flags) { _flags = flags; }
70
71 private:
72 friend class Klass;
73 friend class ClassFileParser;
74 // the functions below should only be called on the _access_flags inst var directly,
75 // otherwise they are just changing a copy of the flags
76
77 // attribute flags
78 void set_is_synthetic() { _flags |= JVM_ACC_SYNTHETIC; }
79
80 public:
81 inline friend AccessFlags accessFlags_from(u2 flags);
|