[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-serviceability-dev
Subject:    Re: RFR: 8153535: Convert TraceRedefineClasses to Unified Logging
From:       Robbin Ehn <robbin.ehn () oracle ! com>
Date:       2016-05-09 11:25:46
Message-ID: e1c1985d-7364-506d-f94a-685798d39e1e () oracle ! com
[Download RAW message or body]

Hi Coleen,

Thanks!

I chatted with David, I'll push as is.

/Robbin

On 05/07/2016 12:51 AM, Coleen Phillimore wrote:
> 
> Hi Robbin,
> 
> I think this looks really good and will fit nicely with the logging that I use with \
> class redefinition (wish I had it already!) 
> http://cr.openjdk.java.net/~rehn/8153535/rev_01/webrev/src/share/vm/runtime/sharedRuntime.cpp.udiff.html
>  
> I think this is a nice solution to the problem of having tracing formerly trigger a \
> guarantee.  If one needs a guarantee to debug how old methods get invoked, we can \
> put it in the source code where the log_trace is and recompile.  I think this is \
> fine. 
> Thanks,
> Coleen
> 
> On 5/3/16 3:25 PM, Robbin Ehn wrote:
> > Hi all,
> > 
> > Please review this.
> > 
> > This changeset moves redefine classes tracing to UL.
> > 
> > Bug: https://bugs.openjdk.java.net/browse/JDK-8153535
> > Webrev: http://cr.openjdk.java.net/~rehn/8153535/rev_01/webrev/
> > 
> > Passes testsuits \
> > jdk/test/:jdk_jdi,hotspot/test/:hotspot_all,nsk.jvmti.testlist,nsk.jdi.testlist \
> >                 with:
> > -Xlog:redefine+class*=trace
> > (a few test won't run with extra options)
> > 
> > -XX:TraceRedefineClasses=xyz turns on (aliased with) "-Xlog:redefine+class*=info" \
> > and emits a warning. (xyz is ignored)
> > 
> > Thanks!
> > 
> > /Robbin
> > 
> > Example of useage:
> > -Xlog:redefine+class+constantpool*=debug
> > -Xlog:redefine+class+load=info
> > -Xlog:redefine+class*=debug,redefine+class+iklass*=trace
> > 
> > Here is an example from a test:
> > 
> > [20.279s][debug][redefine,class,update,vtables     ] vtable method update: \
> > getOptions(()Ljava/util/Properties;), updated default = false \
> > [20.279s][debug][redefine,class,subclass           ] updated count in \
> > subclass=nsk.share.jvmti.ArgumentHandler to 197 [20.279s][info \
> > ][redefine,class,load               ] redefined name=nsk.share.ArgumentParser, \
> > count=99 (avail_mem=6311580K) [20.285s][trace][redefine,class,obsolete,mark      \
> > ] EMCP_cnt=8, obsolete_cnt=0 [20.285s][trace][redefine,class,iklass,add         ] \
> > adding previous version ref for nsk.share.jvmti.ArgumentHandler, EMCP_cnt=8 \
> > [20.285s][trace][redefine,class,iklass,add         ] scratch class not added; no \
> > methods are running [20.285s][info ][redefine,class,update             ] adjust: \
> > name=nsk.share.jvmti.ArgumentHandler \
> > [20.285s][debug][redefine,class,update,constantpool] cpc entry update: \
> > getAgentOptionsString(()Ljava/lang/String;) [20.285s][info \
> > ][redefine,class,update             ] adjust: \
> > name=nsk.share.jvmti.ArgumentHandler \
> > [20.285s][debug][redefine,class,update,constantpool] cpc entry update: \
> > <init>(([Ljava/lang/String;)V) [20.285s][info ][redefine,class,load               \
> > ] redefined name=nsk.share.jvmti.ArgumentHandler, count=198 (avail_mem=6311580K) \
> > [20.291s][trace][redefine,class,obsolete,mark      ] EMCP_cnt=3, obsolete_cnt=0 \
> > [20.291s][trace][redefine,class,iklass,add         ] adding previous version ref \
> > for nsk.share.jvmti.JVMTITest, EMCP_cnt=3 \
> > [20.291s][trace][redefine,class,iklass,add         ] scratch class not added; no \
> > methods are running [20.291s][info ][redefine,class,update             ] adjust: \
> > name=nsk.share.jvmti.JVMTITest \
> > [20.291s][debug][redefine,class,update,constantpool] cpc entry update: \
> > commonInit(([Ljava/lang/String;)[Ljava/lang/String;) [20.291s][info \
> > ][redefine,class,load               ] redefined name=nsk.share.jvmti.JVMTITest, \
> > count=99 (avail_mem=6311580K) [20.297s][trace][redefine,class,obsolete,mark      \
> > ] EMCP_cnt=3, obsolete_cnt=0 [20.297s][trace][redefine,class,iklass,add         ] \
> > adding previous version ref for nsk.share.TestBug, EMCP_cnt=3 
> > Mapping:
> > 
> > RC_TRACE_MESG = "redefine, class, update" - info
> > 
> > 0x00000001 = "redefine, class, load" - info
> > 0x00000001 = "redefine, class, load" - debug
> > 
> > 0x00000002 = "redefine, class, load, exceptions" - info
> > 0x00000004 = "redefine, class, timer" - info
> > 0x00000008 = "redefine, class, subclass" - debug
> > 
> > 0x00000100 = "redefine, class, obsolete, mark" - trace
> > 0x00000200 = "redefine, class, iklass, purge" - trace
> > 0x00000400 = "redefine, class, iklass, add" - trace
> > 0x00000800 = "redefine, class, breakpoint" - debug
> > 
> > 0x00001000->0x00002000 = "redefine, class, obsolete" - trace
> > 0x00001000 = "redefine, class, obsolete" - trace
> > 0x00002000 = REMOVED
> > 
> > 0x00004000 = "redefine, class, obsolete, metadata" - trace
> > 0x00004000 = "redefine, class, dump" - trace
> > 
> > 0x00008000 = "redefine, class, normalize" - trace
> > 
> > 0x00010000 = "redefine, class, constantpool" - info
> > 0x00020000 = "redefine, class, constantpool" - debug
> > 0x00040000 = "redefine, class, constantpool" - trace
> > 0x00080000 = "redefine, class, constantpool" - trace
> > 
> > 0x00100000-0x00400000 = "redefine, class, update" - info
> > 0x00100000 = "redefine, class, update, vtables" - debug
> > 0x00200000 = "redefine, class, update, itables" - debug
> > 0x00400000 = "redefine, class, update, constantpool" - debug
> > 
> > 0x00800000 = "redefine, class, methodcomparator" - debug
> > 
> > 0x01000000 = "redefine, class, nmethod" - debug
> > 0x02000000 = "redefine, class, annotation" - debug
> > 0x04000000 = "redefine, class, stackmap" - debug
> > 0x08000000 = "redefine, class, oopmap" - debug
> > 
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic