< prev index next > src/hotspot/share/ci/ciArrayKlass.hpp
Print this page
#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.
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
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 >