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