Newbie hsdis questions
Ben Evans
ben.evans at db.com
Tue Dec 1 08:08:15 PST 2009
Hi,
I have some newbie questions about the output of the HS disassembler. It's
possible that some of these are really more general x86-64 assembler
questions, and if so, a pointer to a good reference would be much
appreciated.
I'm running 6u18-b05 on x64 with these options: -XX:+PrintCompilation
-XX:+PrintAssembly -XX:+PrintSignatureHandlers -XX:+PrintNMethods
Here's a chunk of output I'm interested in:
384115 Compiled (c2) 496 nmethod com.db.e.d.m.p.TP::doExecute (833
bytes)
384116 total in heap [0x00007fc3911f2a50,0x00007fc391208120] = 87760
384117 relocation [0x00007fc3911f2b58,0x00007fc3911f3630] = 2776
384118 main code [0x00007fc3911f3640,0x00007fc3911fc140] = 35584
384119 stub code [0x00007fc3911fc140,0x00007fc3911fc6c7] = 1415
384120 constants [0x00007fc3911fc6c7,0x00007fc3911fc6c8] = 1
384121 scopes data [0x00007fc3911fc6c8,0x00007fc391205598] = 36560
384122 scopes pcs [0x00007fc391205598,0x00007fc391206948] = 5040
384123 dependencies [0x00007fc391206948,0x00007fc3912069d0] = 136
384124 handler table [0x00007fc3912069d0,0x00007fc391207a68] = 4248
384125 nul chk table [0x00007fc391207a68,0x00007fc391207e08] = 928
384126 oops [0x00007fc391207e08,0x00007fc391208120] = 792
384127 Decoding compiled method 0x00007fc3911f2a50:
384128 Code:
384129 [Disassembling for mach='i386:x86-64']
384130 [Entry Point]
384131 0x00007fc3911f3640: cmp 0x8(%rsi),%rax
384132 0x00007fc3911f3644: jne 0x00007fc3910405e0 ; {runtime_call}
384133 0x00007fc3911f364a: xchg %ax,%ax
384134 0x00007fc3911f364c: nopl 0x0(%rax)
384135 [Verified Entry Point]
384136 0x00007fc3911f3650: mov %eax,-0x6000(%rsp)
384137 0x00007fc3911f3657: push %rbp
First of, I'm assuming that the proximity of line 384115 to line 384116 is
a guarantee that the 2 lines are referring to the compilation of the same
method, and that what follows is all about com.db.e.d.m.p.TP::doExecute.
If not, how do I map back from an address to a nmethod name?
Main questions:
1) What do the entries in the table in lines 384116-384126 represent?
2) Lines 384131-384134 are presumably the x64 representation of a
monomorphic call guard. Why are the xchg and nopl instructions (which are
surely both effectively no-ops) present?
3) The addresses for lines 384131-384134 look strange to me, eg why isn't
there at least 8 bytes required for the jne instruction? Is there a good
reference for instruction lengths somewhere?
I have some questions which are more pertinent to my actual perf anomaly,
but I want to make sure I understand the basics fully, and do my own
investigations first - and try to conserve the group's time.
Thanks,
Ben
--
Ben Evans
eFX Algorithmic Trading
Deutsche Bank, London
Office: +44 (0)20 7541 3953
---
This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
Please refer to http://www.db.com/en/content/eu_disclosures.htm for additional EU corporate and regulatory disclosures.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-dev/attachments/20091201/4dba2af3/attachment.html
More information about the hotspot-dev
mailing list