7012072: CompileTheWorld causes incorrect class initialization

Reviewed-by: kvn, twisti
This commit is contained in:
Tom Rodriguez 2011-02-23 19:09:16 -08:00
parent f9fa6ee530
commit 562aedc884

View file

@ -110,6 +110,8 @@ inline jint invocation_key_to_method_slot(jint key) {
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");
#ifdef ASSERT
if (p != NULL) {
assert(byte_offset >= 0 && byte_offset <= (jlong)MAX_OBJECT_SIZE, "sane offset");