Thanks Serguei!
Coleen

On 2/4/19 9:32 PM, [email protected] wrote:
Hi Coleen,


On 2/4/19 18:26, [email protected] wrote:


On 2/4/19 5:30 PM, [email protected] wrote:
Hi Coleen,

Looks good in general.

Just a couple minor comments below.

I hope, you will update the copyright years before the push.

Hi Serguei,  Thanks for reviewing this.

Yes, I update the copyright years in my commit script.


http://cr.openjdk.java.net/~coleenp/2019/8139551.01/webrev/test/hotspot/jtreg/runtime/RedefineTests/TestMultipleClasses.java.html

  Nice test!
   37 import java.lang.reflect.*;
   38 import jdk.test.lib.compiler.InMemoryJavaCompiler;
   39 import java.lang.instrument.*;
  The imports above can be re-ordered.

Alphabetically?

Yes. (No need in another webrev)


   44         return new String("public class B" + count + " {" +
   45                 "   public static void compiledMethod() { " +
   46                 "       try{" +
   47                 "          Thread.currentThread().sleep(1); " +
   48                 "       } catch(InterruptedException ie) {" +
   49                 "       }" +
   50                 "   }" +
   51                 "}");
  Not clear, why sleep is needed here.


Yes, the sleep was there so that the compiler didn't optimize away the function.  I didn't put a print because it would print too many times.

Okay.
I hate, I placed this comment. :)

Thanks,
Serguei


Thanks,
Coleen

Thanks,
Serguei


On 2/4/19 12:34, [email protected] wrote:
Added the serviceability-dev back.

Thanks,
Serguei


On 2/4/19 07:18, [email protected] wrote:

open webrev at http://cr.openjdk.java.net/~coleenp/2019/8139551.01/webrev
bug link https://bugs.openjdk.java.net/browse/JDK-8139551

The links.
Thanks,
Coleen

On 2/4/19 10:08 AM, [email protected] wrote:
Summary: Walk code cache and deoptimize once per redefinition.*

*This change touches the AOT and code cache code.  I tried to describe it in the comments in the RFE. Basically, for redefinition, we walk the code cache per class redefined in order to find evol_method dependencies, then deoptimize if we find them, and then walk the code cache again to mark the deoptimized nmethods as not_entrant.

I replaced this with only marking any nmethods for the class's methods to deoptimize (following InstanceKlass::_methods), also marking aot methods dependent on the class, and then doing the code cache walk to follow the evol_method dependencies at the end of redefinition for all the classes.   The new code uses the Method::is_old() flag rather than comparing each method in the InstanceKlass.  Then deoptimization and marking not_entrant is done once at the end of the redefinition as well.

Tested with tier1-6, all the redefinition tests locally:

make test TEST=open/test/hotspot/jtreg/vmTestbase/nsk/jvmti >&jvmti.out
make test TEST=open/test/hotspot/jtreg/vmTestbase/nsk/jdi >&jdi.out
make test TEST=open/test/hotspot/jtreg/runtime/RedefineTests >&redefine.out
make test TEST=open/test/jdk/java/lang/instrument >&instrument.out

new test, and JMH test (see CR for results).

Thanks,
Coleen








Reply via email to