< 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, 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, int index);
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, 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   // Field signature type
 79   inline BasicType field_type() const;
 80 
 81   // Access flags
 82   bool is_private()               const    { return access_flags().is_private(); }
 83   bool is_protected()             const    { return access_flags().is_protected(); }
 84 
 85   bool is_static()                const    { return access_flags().is_static(); }
 86   bool is_final()                 const    { return access_flags().is_final(); }
 87   bool is_stable()                const    { return field_flags().is_stable(); }
 88   bool is_volatile()              const    { return access_flags().is_volatile(); }
 89   bool is_transient()             const    { return access_flags().is_transient(); }
 90   inline bool is_flat()           const;
 91   inline bool is_null_free_inline_type() const;
 92   inline bool has_null_marker()   const;
 93 
 94   bool is_synthetic()             const    { return access_flags().is_synthetic(); }
 95 
 96   bool is_field_access_watched()  const    { return field_status().is_access_watched(); }
 97   bool is_field_modification_watched() const
 98                                            { return field_status().is_modification_watched(); }
 99   bool has_initialized_final_update() const { return field_status().is_initialized_final_update(); }
100   bool has_generic_signature()    const    { return field_flags().is_generic(); }
101 
102   bool is_trusted_final()         const;
103 
104   inline void set_is_field_access_watched(const bool value);
105   inline void set_is_field_modification_watched(const bool value);
106   inline void set_has_initialized_final_update(const bool value);
107 
108   // Initialization
109   void reinitialize(InstanceKlass* ik, int index);
110 
111   // Print
112   void print() const;
113   void print_on(outputStream* st, int base_offset = 0) const;
114   void print_on_for(outputStream* st, oop obj, int indent = 0, int base_offset = 0);
115 };
116 
117 #endif // SHARE_RUNTIME_FIELDDESCRIPTOR_HPP
< prev index next >