[11] RFR(S): 8148871: Possible wrong expression stack depth at deopt point
Tobias Hartmann
tobias.hartmann at oracle.com
Wed Feb 28 13:25:42 UTC 2018
Hi,
please review the following patch:
https://bugs.openjdk.java.net/browse/JDK-8148871
http://cr.openjdk.java.net/~thartmann/8148871/webrev.00/
The problem is that the stack verification code uses the interpreter oop map to get the stack size
of the next instruction. However, for calls, the oop map contains the state *after* the instruction.
With next_mask_expression_stack_size = 0, the result of 'next_mask_expression_stack_size -
top_frame_expression_stack_adjustment' is negative and verification fails. For details, see my
comment in the bug [1].
The fix is to add a special case for invoke bytecodes and use the parameter size instead of the oop
map in that case. Tested with hs-tier1/2 with -XX:+VerifyStack (I hit 8198826 which I'll fix with
another patch).
Thanks,
Tobias
[1]
https://bugs.openjdk.java.net/browse/JDK-8148871?focusedCommentId=14160003&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14160003
More information about the hotspot-dev
mailing list