Understanding PrintOptoAssembly

Charles Oliver Nutter charles.nutter at sun.com
Mon Oct 6 13:21:21 PDT 2008


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