Understanding PrintOptoAssembly

Tom Rodriguez Thomas.Rodriguez at Sun.COM
Mon Oct 6 13:50:15 PDT 2008


Yes that's right.  The CALL,static part says that we know that we are  
going to call exactly ThreadContext::pollThreadEvents.  CALL,dynamic  
is used for sites where there might be multiple receivers.  The L[#]  
and STK[#] tell where the values for the locals and stack live.  The  
value "_" means that local is dead so we have no value for it.  Any  
others parts that are confusing?

tom

On Oct 6, 2008, at 1:21 PM, Charles Oliver Nutter wrote:

> Charles Oliver Nutter wrote:
>> Here's an example a confusing bit for me:
>> 29f     CALL,static   
>> org.jruby.runtime.ThreadContext::pollThreadEvents
>>        # org.jruby.runtime.ThreadContext::callThreadPoll @ bci:19   
>> L[0]=_
>>        #  
>> org.jruby.runtime.callsite.CachingCallSite::pollAndGetClass @ bci: 
>> 1  L[0]=_ L[1]=_ L[2]=esp + #144 L[3]=_
>>        # org.jruby.runtime.callsite.CallSiteInvoker::call @ bci:3  
>> L[0]=esp + #32 L[1]=esp + #28 L[2]=esp + #144 L[3]=e
>> sp + #144 L[4]=esp + #48 L[5]=_ L[6]=_
>>        # bench.bench_fib_recursive::method__0$RUBY$fib_ruby @ bci: 
>> 114  L[0]=esp + #152 L[1]=esp + #28 L[2]=esp + #144 L
>> [3]=_ L[4]=_ L[5]=_ L[6]=esp + #20 L[7]=_ L[8]=_ L[9]=_ L[10]=_  
>> L[11]=esp + #64 STK[0]=esp + #24 STK[1]=esp + #28 STK[2]=esp +  
>> #144    #
>
> Ok, I think I'm starting to understand it now after playing around a  
> bit. The call above is actually to pollthreadEvents; the others  
> listed below it are the backtrace to that point...calls which have  
> all already been inlined. So what this shows is where it finally  
> bails out of inlined code to do a call, and where the call it's  
> making actually occurs.
>
> Correct?
>
> - Charlie




More information about the hotspot-dev mailing list