How to inspect hotspot compiler results? hsdis binaries for Windows?

Ulf Zibis Ulf.Zibis at gmx.de
Sat Nov 21 07:21:01 PST 2009


Vladimir, much thanks for your detailed answer.
I'm thinking about copying them to a wiki page, as it seems not to exist.

Am 20.11.2009 21:01, Vladimir Kozlov schrieb:
>
> I will only give short explanations.
>
>> -    char[int:>=0]:exact *
>
> Exact type is know during JIT compilation.

... and what does [int:>=0] mean?

>
>> -   #r051
>
> Virtual register and how Register Allocator maps it to real registers 
> and stack slots.

What those r...'s are good for, it never referenced in following output?
Having comments like would be good:
     EDX,[ESP + #52]    # r051
Or even better:
    #r051 esp+52: spill, javaFieldName
+
    EDX,[ESP + #52]    # r051 javaFieldName


>> -   wrapper for: uncommon_trap(reason='range_check' 
>> action='make_not_entrant')
>
> This compiled method will be deoptimized (execution will go into 
> interpreter)
> if range check failed.
>
>> -   sun.nio.cs.ext.EUC_TW_C_d_b_codeToBuffer4$Decoder::decode @ bci:58
>
> For which bytecode range check is executed.

What is: @ bci:58

>
> Information for GC that EBP, esp + #36, esp + #40 contain oops
> to adjust them during GC.

'oops' I guess is an object pointer. For what does this abreviation 
stand for as outlined expression, to better remember

>
>> -   INT3   ; ShouldNotReachHere
>
> There is no return from uncommon_trap.

What is INT3 ?

>> -   B36: #        B28 <- B35  Freq: 1.75827e-006
>>             # Block is sole successor of call
>
> It says.
Does that say, there is no other branch to B36?

>
>> -   TEST   EBX,EBX
>
> zeroing EBX
So same than MOV EBX, #0 ?

>
>>          Je,s
>> -   # Destroy frame
>> -   JMP    rethrow_stub
>
> Rethrow execption.

What does the ",s" mean?
Why not just: JMP,s instead first zeroing EBX


>
>> -   Compiled (c2)  38   nmethod (2)
>
> c2 is name of Server JIT compiler (-server option or default on 
> multicores),
> other c1 is Client lightweight compiler.
... but what is
    38   nmethod (2)

>
>> -   PcDesc(pc=0xc18650 offset=210):
>>        java.lang.String::charAt  @31  reexecute=false
>>        sun.nio.cs.ext.EUC_TW_C_d_b_codeToBuffer4$Decoder::decode  
>> @61  reexecute=false
>
> From pcDesc.hpp:
> // PcDescs map a physical PC (given as offset from start of nmethod) to
> // the corresponding source scope and byte code index.

... but what is
    @31  reexecute=false
Why are there 2 methods referenced by same PcDesc ?

>>       invocation_counter:               9129
>>       backedge_counter:                    1
>> -     16  bci: 9    BranchData          taken(0) displacement(48)
>
> It is bytecode profiling information.

... but what is
    16  bci: 9
    displacement(48)



Thanks,

-Ulf




More information about the hotspot-dev mailing list