assertion in ciTypeFlow OSR'ing in finally clause
Lindenmaier, Goetz
goetz.lindenmaier at sap.com
Mon Feb 17 05:56:14 PST 2014
Hi,
I get an assertion in ciTypeFlow running the ppc port with DeotimizeALot.
It tries to osr-compile a method at a bytecode in a finally clause.
As far as I understand the assertion is too strict.
The initial assertion is
# Internal Error (/sapmnt/home1/d045726/oJ/raw-2-stage-hotspot/src/share/vm/ci/ciTypeFlow.cpp:218), pid=7287, tid=4398488891968
# assert(return_address->is_return_address()) failed: verify: wrong type
This happens because a block in the finally clause is analyzed while not
both predecessor blocks have been looked at. Thus the join of the
slots that should contain the return address yields bottom, and the assertion
fires.
To get the dbg build passing, I have to remove 5 assertions:
ciTypeFlow.cpp:195 assert(false, "verify: returning from invalid subroutine");
ciTypeFlow.cpp:218 assert(return_address->is_return_address(), "verify: wrong type");
ciTypeFlow.cpp:812 assert(address->is_return_address(), "bad return address");
ciTypeFlow.cpp:1758 assert(return_address->is_return_address(), "verify: wrong type");
ciMetadata.hpp:83 assert(is_return_address(), "bad cast");
If I remove these, compilation is aborted a bit later with the message:
"COMPILE SKIPPED: OSR starts with non-empty stack (not retryable)"
I wonder whether I should fix this by adapting the assertions, or
whether I should abort the compilation right away.
I would appreciate some comments on this issue!
Best regards,
Goetz.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/attachments/20140217/cfbcb2f8/attachment.html
More information about the ppc-aix-port-dev
mailing list