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