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

List:       openjdk-serviceability-dev
Subject:    Re: RFR (S) : 8073607 : add trace events for inlining
From:       Igor Ignatyev <igor.ignatyev () oracle ! com>
Date:       2015-02-27 10:47:57
Message-ID: 54F04B5D.1080200 () oracle ! com
[Download RAW message or body]

On 02/27/2015 01:37 PM, Markus Gronlund wrote:
> Are you saying that ciMethod does not always have a Method* to be referenced?
right. e.g. one of ciMethod ctor[1] set _method_data (used as Method* in 
get_method[2]) to null.

[1] 
http://hg.openjdk.java.net/jdk9/hs/hotspot/file/6357f6686ca2/src/share/vm/ci/ciMethod.cpp#l172
 [2] 
http://hg.openjdk.java.net/jdk9/hs/hotspot/file/6357f6686ca2/src/share/vm/ci/ciMethod.hpp#l98


> 
> In that case, my suggested approach will be problematic. Adding intrinsics are not \
> trivial - we could probably take this outside this thread. 
> If you cannot use Method*, then your struct approach is understandable.
> 
> /Markus
> 
> -----Original Message-----
> From: Igor Ignatyev
> Sent: den 27 februari 2015 11:30
> To: Markus Gronlund
> Cc: hotspot-compiler-dev@openjdk.java.net compiler; \
>                 serviceability-dev@openjdk.java.net
> Subject: Re: RFR (S) : 8073607 : add trace events for inlining
> 
> Hi Markus,
> 
> thank you for your review.
> we can't use Method instead of ciMethod since there are some cases then we have \
> ciMethod but can't get Method from it, e.g. unresolved class. I think it makes \
> sense to implement "intrinsics" for ciMethod/ciClass, can you advise me how to do \
> that? 
> Thanks,
> Igor
> 
> On 02/27/2015 01:25 PM, Markus Gronlund wrote:
> > Hi Igor,
> > 
> > In trace.xml:
> > 
> > <struct id="CiMethod">
> > 404       <value type="UTF8" field="class" label="Class name"/>
> > 405       <value type="UTF8" field="method" label="Method name"/>
> > 406       <value type="UTF8" field="signature" label="Method signature"/>
> > 407     </struct>
> > 
> > You don't need to write an individual UTF8 string for every class, method and \
> > desc as we have "intrinsics" for taking care of this for you. 
> > This also means you wouldn't need to create a separate struct, as you can just \
> > define the necessary fields as type METHOD in the CompilerInlining event: 
> > <event id="CompilerInlining" path="vm/compiler/opto/inlining" label="Compiler \
> > Optimization :: Inlining" 410          has_thread="true" is_instant="true">
> > 411       <value type="UINT" field="compileID" label="Compilation ID" \
> > relation="COMP_ID"/> 412       <value type="METHOD" field="caller" label="Caller \
> > "/> 413       <value type="METHOD" field="callee" label="Callee "/>
> > 414       <value type="BOOLEAN" field="succeeded" label="Succeeded"/>
> > 415       <value type="UTF8" field="message" label="Message"/>
> > 416       <value type="INTEGER" field="bci" label="bci"/>
> > 417     </event>
> > 
> > 
> > // I also removed these attributes " is_requestable="false" is_constant="false" - \
> > they are defaults. I changed to "is_instant=true" since it looks like the event \
> > does not span over a duration in bytecodeInfo.cpp. 
> > At the event site, you will now need to pass the Hotspot Method* as the values \
> > (unsure how you pull that out of a ci* artifact, but you have the Metadata* for \
> > the Method there somewhere): 
> > result.set_caller(Method* caller_method);
> > result.set_callee(Method* callee_method);
> > 
> > Thanks
> > Markus
> > 
> > -----Original Message-----
> > From: Igor Ignatyev
> > Sent: den 24 februari 2015 22:11
> > To: hotspot-compiler-dev@openjdk.java.net compiler;
> > serviceability-dev@openjdk.java.net
> > Subject: RFR (S) : 8073607 : add trace events for inlining
> > 
> > Hi guys,
> > 
> > could you please review the patch which adds trace events for inlining for c1/c2 \
> > compiler? 
> > An added event provides information about caller, callee, bci, inline status and \
> > message. 
> > webrev : http://cr.openjdk.java.net/~iignatyev/8073607/webrev.00/
> > JBS: https://bugs.openjdk.java.net/browse/JDK-8073607
> > --
> > Igor
> > 


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

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