< prev index next >

src/hotspot/share/oops/fieldStreams.hpp

Print this page
@@ -37,10 +37,11 @@
  // iterates over fields that have been injected by the JVM.
  // AllFieldStream exposes all fields and should only be used in rare
  // cases.
  // HierarchicalFieldStream allows to also iterate over fields of supertypes.
  class FieldStreamBase : public StackObj {
+ 
   protected:
    const Array<u1>*    _fieldinfo_stream;
    FieldInfoReader     _reader;
    constantPoolHandle  _constants;
    int                 _index;

@@ -108,18 +109,30 @@
  
    int offset() const {
      return field()->offset();
    }
  
+   bool is_null_free_inline_type() {
+     return field()->field_flags().is_null_free_inline_type();
+   }
+ 
+   bool is_flat() const {
+     return field()->field_flags().is_flat();
+   }
+ 
    bool is_contended() const {
      return field()->is_contended();
    }
  
    int contended_group() const {
      return field()->contended_group();
    }
  
+   int null_marker_offset() const {
+     return field()->null_marker_offset();
+   }
+ 
    // Convenient methods
  
    FieldInfo to_FieldInfo() {
      return _fi_buf;
    }

@@ -235,10 +248,13 @@
    }
  
    bool done() const { return _next_klass == nullptr && _current_stream.done(); }
  
    // bridge functions from FieldStreamBase
+   int index() const {
+     return _current_stream.index();
+   }
  
    AccessFlags access_flags() const {
      return _current_stream.access_flags();
    }
  

@@ -276,8 +292,11 @@
  
    fieldDescriptor& field_descriptor() const {
      return _current_stream.field_descriptor();
    }
  
+   bool is_flat() const {
+     return _current_stream.is_flat();
+   }
  };
  
  #endif // SHARE_OOPS_FIELDSTREAMS_HPP
< prev index next >