< prev index next >

src/hotspot/share/ci/ciArrayKlass.hpp

Print this page
@@ -24,10 +24,11 @@
  
  #ifndef SHARE_CI_CIARRAYKLASS_HPP
  #define SHARE_CI_CIARRAYKLASS_HPP
  
  #include "ci/ciKlass.hpp"
+ #include "oops/arrayKlass.hpp"
  
  // ciArrayKlass
  //
  // This class, and its subclasses represent Klass*s in the
  // HotSpot virtual machine whose Klass part is an ArrayKlass.

@@ -50,12 +51,25 @@
    jint dimension() { return _dimension; }
    ciType* element_type();       // JLS calls this the "component type"
    ciType* base_element_type();  // JLS calls this the "element type"
    bool is_leaf_type();          // No subtypes of this array type.
  
+   bool is_refined() const { return !is_type_array_klass() && properties() != ArrayKlass::INVALID; }
+ 
    // What kind of vmObject is this?
    bool is_array_klass() const { return true; }
  
-   static ciArrayKlass* make(ciType* element_type);
+   // The one-level type of the array elements.
+   virtual ciKlass* element_klass() { return nullptr; }
+ 
+   static ciArrayKlass* make(ciType* klass, bool null_free = false, bool atomic = false, bool refined_type = false);
+ 
+   int array_header_in_bytes();
+   ciInstance* component_mirror_instance() const;
+ 
+   bool is_elem_null_free() const;
+   bool is_elem_atomic() const;
+ 
+   ArrayKlass::ArrayProperties properties() const;
  };
  
  #endif // SHARE_CI_CIARRAYKLASS_HPP
< prev index next >