# HG changeset patch # User Matthias Grimmer # Date 1365777815 -7200 # Node ID d4da9378903dc4fb307c7ab75f7b92079a92ce46 # Parent 5eab174fb727a8b569d46d1b21caeb091b632dac# Parent 0f090aa237e752ca0d2acc5cf334138887f6cf8f Merge diff -r 5eab174fb727 -r d4da9378903d src/share/vm/prims/unsafe.cpp --- a/src/share/vm/prims/unsafe.cpp Fri Apr 12 16:43:20 2013 +0200 +++ b/src/share/vm/prims/unsafe.cpp Fri Apr 12 16:43:35 2013 +0200 @@ -116,7 +116,9 @@ inline void* index_oop_from_field_offset_long(oop p, jlong field_offset) { jlong byte_offset = field_offset_to_byte_offset(field_offset); // Don't allow unsafe to be used to read or write the header word of oops - assert(p == NULL || field_offset >= oopDesc::header_size(), "offset must be outside of header"); + // unless running GRAAL which wants to read the misc word for example when + // interpreting computeHashCode(). + assert(p == NULL || field_offset >= oopDesc::header_size() || GRAAL, "offset must be outside of header"); #ifdef ASSERT if (p != NULL) { assert(byte_offset >= 0 && byte_offset <= (jlong)MAX_OBJECT_SIZE, "sane offset");