< prev index next > src/hotspot/share/ci/ciArray.cpp
Print this page
#include "ci/ciArray.hpp"
#include "ci/ciArrayKlass.hpp"
#include "ci/ciConstant.hpp"
#include "ci/ciKlass.hpp"
#include "ci/ciUtilities.inline.hpp"
+ #include "oops/flatArrayKlass.hpp"
+ #include "oops/layoutKind.hpp"
#include "oops/objArrayOop.inline.hpp"
#include "oops/oop.inline.hpp"
#include "oops/typeArrayOop.inline.hpp"
#include "utilities/powerOfTwo.hpp"
// ciArray
//
// This class represents an arrayOop in the HotSpot virtual
// machine.
static BasicType fixup_element_type(BasicType bt) {
+ if (bt == T_FLAT_ELEMENT) return T_OBJECT;
if (is_reference_type(bt)) return T_OBJECT;
if (bt == T_BOOLEAN) return T_BYTE;
return bt;
}
return ciConstant();
}
return element_value((jint) index);
}
+ bool ciArray::is_null_free() {
+ VM_ENTRY_MARK;
+ return get_oop()->is_null_free_array();
+ }
+
+ bool ciArray::is_atomic() {
+ VM_ENTRY_MARK;
+ arrayOop oop = get_arrayOop();
+ return !oop->is_flatArray() || LayoutKindHelper::is_atomic_flat(FlatArrayKlass::cast(oop->klass())->layout_kind());
+ }
+
// ------------------------------------------------------------------
// ciArray::print_impl
//
// Implementation of the print method.
void ciArray::print_impl(outputStream* st) {
< prev index next >