--- old/src/share/vm/runtime/fieldDescriptor.cpp 2012-06-20 15:48:47.226992264 -0700 +++ new/src/share/vm/runtime/fieldDescriptor.cpp 2012-06-20 15:48:47.142992859 -0700 @@ -39,6 +39,10 @@ } Symbol* fieldDescriptor::generic_signature() const { + if (!has_generic_signature()) { + return NULL; + } + int idx = 0; instanceKlass* ik = instanceKlass::cast(field_holder()); for (AllFieldStream fs(ik); !fs.done(); fs.next()) { --- old/src/share/vm/runtime/fieldDescriptor.hpp 2012-06-20 15:48:47.526491541 -0700 +++ new/src/share/vm/runtime/fieldDescriptor.hpp 2012-06-20 15:48:47.446993458 -0700 @@ -100,6 +100,7 @@ bool is_field_access_watched() const { return access_flags().is_field_access_watched(); } bool is_field_modification_watched() const { return access_flags().is_field_modification_watched(); } + bool has_generic_signature() const { return access_flags().field_has_generic_signature(); } void set_is_field_access_watched(const bool value) { _access_flags.set_is_field_access_watched(value); --- old/src/share/vm/runtime/reflection.cpp 2012-06-20 15:48:47.782491852 -0700 +++ new/src/share/vm/runtime/reflection.cpp 2012-06-20 15:48:47.698493455 -0700 @@ -829,7 +829,7 @@ java_lang_reflect_Field::set_modifiers(rh(), fd->access_flags().as_int() & JVM_RECOGNIZED_FIELD_MODIFIERS); java_lang_reflect_Field::set_override(rh(), false); if (java_lang_reflect_Field::has_signature_field() && - fd->generic_signature() != NULL) { + fd->has_generic_signature()) { Symbol* gs = fd->generic_signature(); Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL); java_lang_reflect_Field::set_signature(rh(), sig());