< prev index next >

src/hotspot/share/runtime/fieldDescriptor.hpp

Print this page

 39 class fieldDescriptor {
 40  private:
 41   FieldInfo           _fieldinfo;
 42   constantPoolHandle  _cp;
 43 
 44   inline FieldInfo field() const { return _fieldinfo; };
 45 
 46  public:
 47   fieldDescriptor() {}
 48   fieldDescriptor(InstanceKlass* ik, int index) {
 49     reinitialize(ik, ik->field(index));
 50   }
 51   inline Symbol* name() const;
 52   inline Symbol* signature() const;
 53   inline InstanceKlass* field_holder() const {return _cp->pool_holder(); };
 54   inline ConstantPool* constants() const;
 55 
 56   AccessFlags access_flags()      const    { return _fieldinfo.access_flags(); }
 57   FieldInfo::FieldFlags field_flags() const { return _fieldinfo.field_flags(); }
 58   FieldStatus field_status()      const    { return field_holder()->fields_status()->at(_fieldinfo.index()); }

 59   oop loader()                    const;
 60   // Offset (in bytes) of field from start of instanceOop / Klass*
 61   inline int offset()             const;
 62   Symbol* generic_signature()     const;
 63   int index()                     const    { return _fieldinfo.index(); }
 64   AnnotationArray* annotations()  const;
 65   AnnotationArray* type_annotations()  const;
 66 
 67   // Initial field value
 68   inline bool has_initial_value()        const;
 69   inline int initial_value_index()       const;
 70   constantTag initial_value_tag() const;  // The tag will return true on one of is_int(), is_long(), is_single(), is_double()
 71   jint int_initial_value()        const;
 72   jlong long_initial_value()      const;
 73   jfloat float_initial_value()    const;
 74   jdouble double_initial_value()  const;
 75   oop string_initial_value(TRAPS) const;
 76 



 77   // Field signature type
 78   inline BasicType field_type() const;
 79 
 80   // Access flags
 81   bool is_private()               const    { return access_flags().is_private(); }
 82   bool is_protected()             const    { return access_flags().is_protected(); }
 83 
 84   bool is_static()                const    { return access_flags().is_static(); }
 85   bool is_final()                 const    { return access_flags().is_final(); }
 86   bool is_stable()                const    { return field_flags().is_stable(); }
 87   bool is_volatile()              const    { return access_flags().is_volatile(); }
 88   bool is_transient()             const    { return access_flags().is_transient(); }




 89 
 90   bool is_synthetic()             const    { return access_flags().is_synthetic(); }
 91 
 92   bool is_field_access_watched()  const    { return field_status().is_access_watched(); }
 93   bool is_field_modification_watched() const
 94                                            { return field_status().is_modification_watched(); }
 95   bool has_initialized_final_update() const { return field_status().is_initialized_final_update(); }
 96   bool has_generic_signature()    const    { return field_flags().is_generic(); }
 97 
 98   bool is_trusted_final()         const;
 99 
100   inline void set_is_field_access_watched(const bool value);
101   inline void set_is_field_modification_watched(const bool value);
102   inline void set_has_initialized_final_update(const bool value);
103 
104   // Initialization
105   void reinitialize(InstanceKlass* ik, const FieldInfo& fieldinfo);
106 
107   // Print
108   void print() const;
109   void print_on(outputStream* st) const;
110   void print_on_for(outputStream* st, oop obj);
111 };
112 
113 #endif // SHARE_RUNTIME_FIELDDESCRIPTOR_HPP

 39 class fieldDescriptor {
 40  private:
 41   FieldInfo           _fieldinfo;
 42   constantPoolHandle  _cp;
 43 
 44   inline FieldInfo field() const { return _fieldinfo; };
 45 
 46  public:
 47   fieldDescriptor() {}
 48   fieldDescriptor(InstanceKlass* ik, int index) {
 49     reinitialize(ik, ik->field(index));
 50   }
 51   inline Symbol* name() const;
 52   inline Symbol* signature() const;
 53   inline InstanceKlass* field_holder() const {return _cp->pool_holder(); };
 54   inline ConstantPool* constants() const;
 55 
 56   AccessFlags access_flags()      const    { return _fieldinfo.access_flags(); }
 57   FieldInfo::FieldFlags field_flags() const { return _fieldinfo.field_flags(); }
 58   FieldStatus field_status()      const    { return field_holder()->fields_status()->at(_fieldinfo.index()); }
 59   LayoutKind layout_kind()        const    { return _fieldinfo.layout_kind(); }
 60   oop loader()                    const;
 61   // Offset (in bytes) of field from start of instanceOop / Klass*
 62   inline int offset()             const;
 63   Symbol* generic_signature()     const;
 64   int index()                     const    { return _fieldinfo.index(); }
 65   AnnotationArray* annotations()  const;
 66   AnnotationArray* type_annotations()  const;
 67 
 68   // Initial field value
 69   inline bool has_initial_value()        const;
 70   inline int initial_value_index()       const;
 71   constantTag initial_value_tag() const;  // The tag will return true on one of is_int(), is_long(), is_single(), is_double()
 72   jint int_initial_value()        const;
 73   jlong long_initial_value()      const;
 74   jfloat float_initial_value()    const;
 75   jdouble double_initial_value()  const;
 76   oop string_initial_value(TRAPS) const;
 77 
 78   // Unset strict static
 79   inline bool is_strict_static_unset()   const;
 80 
 81   // Field signature type
 82   inline BasicType field_type() const;
 83 
 84   // Access flags
 85   bool is_private()               const    { return access_flags().is_private(); }
 86   bool is_protected()             const    { return access_flags().is_protected(); }
 87 
 88   bool is_static()                const    { return access_flags().is_static(); }
 89   bool is_final()                 const    { return access_flags().is_final(); }
 90   bool is_stable()                const    { return field_flags().is_stable(); }
 91   bool is_volatile()              const    { return access_flags().is_volatile(); }
 92   bool is_transient()             const    { return access_flags().is_transient(); }
 93   bool is_strict()                const    { return access_flags().is_strict(); }
 94   inline bool is_flat()           const;
 95   inline bool is_null_free_inline_type() const;
 96   inline bool has_null_marker()   const;
 97 
 98   bool is_synthetic()             const    { return access_flags().is_synthetic(); }
 99 
100   bool is_field_access_watched()  const    { return field_status().is_access_watched(); }
101   bool is_field_modification_watched() const
102                                            { return field_status().is_modification_watched(); }
103   bool has_initialized_final_update() const { return field_status().is_initialized_final_update(); }
104   bool has_generic_signature()    const    { return field_flags().is_generic(); }
105 
106   bool is_trusted_final()         const;
107 
108   inline void set_is_field_access_watched(const bool value);
109   inline void set_is_field_modification_watched(const bool value);
110   inline void set_has_initialized_final_update(const bool value);
111 
112   // Initialization
113   void reinitialize(InstanceKlass* ik, const FieldInfo& fieldinfo);
114 
115   // Print
116   void print() const;
117   void print_on(outputStream* st, int base_offset = 0) const;
118   void print_on_for(outputStream* st, oop obj, int indent = 0, int base_offset = 0);
119 };
120 
121 #endif // SHARE_RUNTIME_FIELDDESCRIPTOR_HPP
< prev index next >