< prev index next >

src/share/vm/oops/oop.inline.hpp

Print this page

        

*** 29,38 **** --- 29,39 ---- #include "gc/shared/barrierSet.inline.hpp" #include "gc/shared/cardTableModRefBS.hpp" #include "gc/shared/collectedHeap.inline.hpp" #include "gc/shared/genCollectedHeap.hpp" #include "gc/shared/generation.hpp" + #include "memory/vtBuffer.hpp" #include "oops/arrayKlass.hpp" #include "oops/arrayOop.hpp" #include "oops/klass.inline.hpp" #include "oops/markOop.inline.hpp" #include "oops/oop.hpp"
*** 545,555 **** // used only for asserts bool oopDesc::is_oop(bool ignore_mark_word) const { oop obj = (oop) this; if (!check_obj_alignment(obj)) return false; ! if (!Universe::heap()->is_in_reserved(obj)) return false; // obj is aligned and accessible in heap if (Universe::heap()->is_in_reserved(obj->klass_or_null())) return false; // Header verification: the mark is typically non-NULL. If we're // at a safepoint, it must not be null. --- 546,561 ---- // used only for asserts bool oopDesc::is_oop(bool ignore_mark_word) const { oop obj = (oop) this; if (!check_obj_alignment(obj)) return false; ! if (!Universe::heap()->is_in_reserved(obj)) { ! assert(obj->klass()->is_value(), "Only value type can be outside of the Java heap"); ! VTBufferChunk* chunk = VTBufferChunk::chunk(obj); ! assert(chunk->is_valid(), "if not in the heap, should a buffered VT"); ! if (!VTBuffer::is_in_vt_buffer(obj)) return false; ! } // obj is aligned and accessible in heap if (Universe::heap()->is_in_reserved(obj->klass_or_null())) return false; // Header verification: the mark is typically non-NULL. If we're // at a safepoint, it must not be null.
*** 559,569 **** return true; } if (mark() != NULL) { return true; } ! return !SafepointSynchronize::is_at_safepoint(); } // used only for asserts bool oopDesc::is_oop_or_null(bool ignore_mark_word) const { --- 565,576 ---- return true; } if (mark() != NULL) { return true; } ! return !SafepointSynchronize::is_at_safepoint() ! || (obj->klass()->is_value() && !Universe::heap()->is_in_reserved(obj)) ; } // used only for asserts bool oopDesc::is_oop_or_null(bool ignore_mark_word) const {
< prev index next >