diff -r e5003079dfa5 -r e22ee8e7ae62 src/share/vm/prims/jvmtiRedefineClasses.cpp --- a/src/share/vm/prims/jvmtiRedefineClasses.cpp Fri Aug 16 10:06:58 2013 -0700 +++ b/src/share/vm/prims/jvmtiRedefineClasses.cpp Mon Aug 19 14:59:54 2013 -0400 @@ -1554,6 +1554,20 @@ return false; } + // rewrite sourc file name index: + u2 source_file_name_idx = scratch_class->source_file_name_index(); + if (source_file_name_idx != 0) { + u2 new_source_file_name_idx = find_new_index(source_file_name_idx); + scratch_class->set_source_file_name_index(new_source_file_name_idx); + } + + // rewrite class generic signature index: + u2 generic_signature_index = scratch_class->generic_signature_index(); + if (generic_signature_index != 0) { + u2 new_generic_signature_index = find_new_index(generic_signature_index); + scratch_class->set_generic_signature_index(new_generic_signature_index); + } + return true; } // end rewrite_cp_refs() @@ -3370,7 +3384,8 @@ // Leave arrays of jmethodIDs and itable index cache unchanged // Copy the "source file name" attribute from new class version - the_class->set_source_file_name(scratch_class->source_file_name()); + the_class->set_source_file_name_index( + scratch_class->source_file_name_index()); // Copy the "source debug extension" attribute from new class version the_class->set_source_debug_extension(