--- old/src/share/vm/opto/library_call.cpp 2011-04-08 10:53:58.666324000 -0700 +++ new/src/share/vm/opto/library_call.cpp 2011-04-08 10:53:58.415601000 -0700 @@ -2180,7 +2180,14 @@ const int reference_type_offset = instanceKlass::reference_type_offset_in_bytes() + sizeof(oopDesc); - Node* referent_off = __ ConI(java_lang_ref_Reference::referent_offset); + Node* referent_off; + + if (offset->bottom_type()->isa_int() != NULL) { + referent_off = __ makecon(TypeInt::make(java_lang_ref_Reference::referent_offset)); + } else { + assert(offset->bottom_type()->isa_long() != NULL, "what else?"); + referent_off = __ makecon(TypeLong::make(java_lang_ref_Reference::referent_offset)); + } __ if_then(offset, BoolTest::eq, referent_off, unlikely); { __ if_then(base_oop, BoolTest::ne, null(), likely); {