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.
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
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
|