RFR: 8067713: Move clean_weak_method_links for redefinition out of class unloading

serguei.spitsyn at oracle.com serguei.spitsyn at oracle.com
Thu Dec 18 01:42:00 UTC 2014


Hi Coleen,

The fix looks good.

One minor comment:

src/share/vm/prims/jvmtiRedefineClasses.cpp

3452 // Clean method data for this class
3453 void VM_RedefineClasses::MethodDataCleaner::do_klass(Klass* k) {
3454   if (k->oop_is_instance()) {
3455     InstanceKlass *ik = InstanceKlass::cast(k);
3456     // Clean MethodData of this class's methods so they don't refer to
3457     // old methods that are no longer running.
3458     Array<Method*>* methods = ik->methods();
3459     int num_methods = methods->length();
3460     for (int index2 = 0; index2 < num_methods; ++index2) {
3461       if (methods->at(index2)->method_data() != NULL) {
3462         methods->at(index2)->method_data()->clean_weak_method_links();
3463       }
3464     }
3465   }
3466 }

   Why index2, not just index? :)


Thanks,
Serguei



On 12/17/14 10:05 AM, Coleen Phillimore wrote:
> Summary: Do this work during class redefinition, only verify clean 
> during class unloading in debug mode.
>
> open webrev at http://cr.openjdk.java.net/~coleenp/8067713/
> bug link https://bugs.openjdk.java.net/browse/JDK-8067713
>
> Roland added tests for the original bugs
>
> https://bugs.openjdk.java.net/browse/JDK-8038636
> and
> https://bugs.openjdk.java.net/browse/JDK-8040237
>
> test/compiler/profiling/spectrapredefineclass/Launcher.javatest/compiler/profiling/TestSpecTrapClassUnloading.java 
>
>
> Ran jdk/test/java/lang/instrument tests, vm.quick.testlist, testbase 
> vm.redefine.testlist (thanks to Serguei for creating this list) with 
> -Xmixed,
> -Xcomp and
> -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation 
> -XX:-UseOnStackReplacement -XX:-BackgroundCompilation 
> -XX:+UseTypeSpeculation -XX:TypeProfileLevel=222
>
> Thanks,
> Coleen
>
>



More information about the hotspot-dev mailing list