diff -r fec876499aae -r e79347eebbc5 hotspot/src/share/vm/interpreter/interpreterRuntime.cpp --- a/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp Sat Sep 10 00:11:04 2011 -0700 +++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp Sat Sep 10 17:29:02 2011 -0700 @@ -984,11 +984,8 @@ // check the access_flags for the field in the klass instanceKlass* ik = instanceKlass::cast(java_lang_Class::as_klassOop(cp_entry->f1())); - typeArrayOop fields = ik->fields(); int index = cp_entry->field_index(); - assert(index < fields->length(), "holders field index is out of range"); - // bail out if field accesses are not watched - if ((fields->ushort_at(index) & JVM_ACC_FIELD_ACCESS_WATCHED) == 0) return; + if ((ik->field_access_flags(index) & JVM_ACC_FIELD_ACCESS_WATCHED) == 0) return; switch(cp_entry->flag_state()) { case btos: // fall through @@ -1021,11 +1018,9 @@ // check the access_flags for the field in the klass instanceKlass* ik = instanceKlass::cast(k); - typeArrayOop fields = ik->fields(); int index = cp_entry->field_index(); - assert(index < fields->length(), "holders field index is out of range"); // bail out if field modifications are not watched - if ((fields->ushort_at(index) & JVM_ACC_FIELD_MODIFICATION_WATCHED) == 0) return; + if ((ik->field_access_flags(index) & JVM_ACC_FIELD_MODIFICATION_WATCHED) == 0) return; char sig_type = '\0';