< 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 ***
    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.
  
    // What kind of vmObject is this?
    bool is_array_klass() const { return true; }
  
!   static ciArrayKlass* make(ciType* element_type);
  };
  
  #endif // SHARE_CI_CIARRAYKLASS_HPP
--- 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; }
  
!   // 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 >