< prev index next > src/hotspot/share/oops/oop.cpp
Print this page
// slow case; we have to acquire the micro lock in order to locate the header
Thread* current = Thread::current();
ResetNoHandleMark rnm; // Might be called from LEAF/QUICK ENTRY
HandleMark hm(current);
Handle object(current, this);
! return ObjectSynchronizer::identity_hash_value_for(object);
}
// used only for asserts and guarantees
bool oopDesc::is_oop(oop obj, bool ignore_mark_word) {
if (!Universe::heap()->is_oop(obj)) {
// slow case; we have to acquire the micro lock in order to locate the header
Thread* current = Thread::current();
ResetNoHandleMark rnm; // Might be called from LEAF/QUICK ENTRY
HandleMark hm(current);
Handle object(current, this);
! return ObjectSynchronizer::FastHashCode(current, object());
}
// used only for asserts and guarantees
bool oopDesc::is_oop(oop obj, bool ignore_mark_word) {
if (!Universe::heap()->is_oop(obj)) {
return true;
}
if (obj->mark().value() != 0) {
return true;
}
! return !SafepointSynchronize::is_at_safepoint();
}
// used only for asserts and guarantees
bool oopDesc::is_oop_or_null(oop obj, bool ignore_mark_word) {
return obj == NULL ? true : is_oop(obj, ignore_mark_word);
return true;
}
if (obj->mark().value() != 0) {
return true;
}
! return !SafepointSynchronize::is_at_safepoint() ;
}
// used only for asserts and guarantees
bool oopDesc::is_oop_or_null(oop obj, bool ignore_mark_word) {
return obj == NULL ? true : is_oop(obj, ignore_mark_word);
// type test operations that doesn't require inclusion of oop.inline.hpp.
bool oopDesc::is_instance_noinline() const { return is_instance(); }
bool oopDesc::is_array_noinline() const { return is_array(); }
bool oopDesc::is_objArray_noinline() const { return is_objArray(); }
bool oopDesc::is_typeArray_noinline() const { return is_typeArray(); }
+ bool oopDesc::is_flatArray_noinline() const { return is_flatArray(); }
+ bool oopDesc::is_null_free_array_noinline() const { return is_null_free_array(); }
bool oopDesc::has_klass_gap() {
// Only has a klass gap when compressed class pointers are used.
return UseCompressedClassPointers;
}
< prev index next >