< prev index next >

src/hotspot/share/ci/ciField.hpp

Print this page
@@ -42,24 +42,28 @@
    friend class ciInstanceKlass;
  
  private:
    ciFlags          _flags;
    ciInstanceKlass* _holder;
+   ciInstanceKlass* _original_holder; // For fields nested in flat fields
    ciSymbol*        _name;
    ciSymbol*        _signature;
    ciType*          _type;
    int              _offset;
    bool             _is_constant;
+   bool             _is_flat;
+   bool             _is_null_free;
    ciMethod*        _known_to_link_with_put;
    ciInstanceKlass* _known_to_link_with_get;
    ciConstant       _constant_value;
  
    ciType* compute_type();
    ciType* compute_type_impl();
  
    ciField(ciInstanceKlass* klass, int index, Bytecodes::Code bc);
    ciField(fieldDescriptor* fd);
+   ciField(ciField* field, ciInstanceKlass* holder, int offset, bool is_final);
  
    // shared constructor code
    void initialize_from(fieldDescriptor* fd);
  
  public:

@@ -167,10 +171,13 @@
    bool is_static               () const { return flags().is_static(); }
    bool is_final                () const { return flags().is_final(); }
    bool is_stable               () const { return flags().is_stable(); }
    bool is_volatile             () const { return flags().is_volatile(); }
    bool is_transient            () const { return flags().is_transient(); }
+   bool is_flat                 () const { return _is_flat; }
+   bool is_null_free            () const { return _is_null_free; }
+ 
    // The field is modified outside of instance initializer methods
    // (or class/initializer methods if the field is static).
    bool has_initialized_final_update() const { return flags().has_initialized_final_update(); }
  
    bool is_call_site_target();
< prev index next >