John,
I haven't considered new JVM work with old hsdis. Will change
disassemble.cpp to check:
first decode_instructions_virtual exists, use it. If not, next check
if decode_instructions exists, then use it.
As you expected, it will look like
/ new hsdis -> decode_instructions ->
decode_instructions_virtual
old VM
\ old hsdis -> decode_instructions
/ new hsdis -> decode_instructions_virtual
new VM
\ old hsdis -> decode_instructions
Thanks
Yumin
On 10/29/2012 9:57 AM, John Rose wrote:
On Oct 25, 2012, at 1:16 PM, Yumin Qi wrote:
To John's question, it doesn't require changes to disassembler.cpp:
new version ---> decode_instructions_virtual
old version ---> decode_instructions ---> decode_instructions_virtual
tested with b01 (JDK8) with new hsdis-i386.so.
I think we are aiming to make all four combinations work: {old JVM ,
new JVM} x { old hsdis , new hsdis }.
For this to work, there must be "tolerance" in both the JVM and hsdis
for old code. That's why I was looking for a change to
disassembler.cpp, so that old hsdis modules will still work.
In particular, the older builds of hsdis won't work properly unless
the new JVM looks for the old hsdis entry point (if it fails to find
the new hsdis entry point, of course).
Basically, I am expecting that if the new JVM fails to find
hsdis`decode_instructions_virtual, it will look for
hsdis`decode_instructions instead, and will call that latter function
with the (fewer) arguments that it expected.
Am I missing something here?
— John