comparison src/share/vm/prims/jvmtiRedefineClasses.cpp @ 12022:85147f28faba

8009728: nsk/jvmti/AttachOnDemand/attach030 crashes on Win32 Summary: ActiveMethodOopsCache was used to keep track of old versions of some methods that are cached in Universe but is buggy with permgen removal and not needed anymore Reviewed-by: sspitsyn, dcubed, mseledtsov
author coleenp
date Mon, 12 Aug 2013 17:24:54 -0400
parents 825e6cb66923
children e22ee8e7ae62
comparison
equal deleted inserted replaced
12021:bd0e82136b03 12022:85147f28faba
3215 3215
3216 // Remove all breakpoints in methods of this class 3216 // Remove all breakpoints in methods of this class
3217 JvmtiBreakpoints& jvmti_breakpoints = JvmtiCurrentBreakpoints::get_jvmti_breakpoints(); 3217 JvmtiBreakpoints& jvmti_breakpoints = JvmtiCurrentBreakpoints::get_jvmti_breakpoints();
3218 jvmti_breakpoints.clearall_in_class_at_safepoint(the_class_oop); 3218 jvmti_breakpoints.clearall_in_class_at_safepoint(the_class_oop);
3219 3219
3220 if (the_class_oop == Universe::reflect_invoke_cache()->klass()) {
3221 // We are redefining java.lang.reflect.Method. Method.invoke() is
3222 // cached and users of the cache care about each active version of
3223 // the method so we have to track this previous version.
3224 // Do this before methods get switched
3225 Universe::reflect_invoke_cache()->add_previous_version(
3226 the_class->method_with_idnum(Universe::reflect_invoke_cache()->method_idnum()));
3227 }
3228
3229 // Deoptimize all compiled code that depends on this class 3220 // Deoptimize all compiled code that depends on this class
3230 flush_dependent_code(the_class, THREAD); 3221 flush_dependent_code(the_class, THREAD);
3231 3222
3232 _old_methods = the_class->methods(); 3223 _old_methods = the_class->methods();
3233 _new_methods = scratch_class->methods(); 3224 _new_methods = scratch_class->methods();