842 /* SPARC */
843 (iframe->interpreter_frame_expression_stack_size() == mask.expression_stack_size() + callee_size_of_parameters) ||
844 /* x86 */
845 (iframe->interpreter_frame_expression_stack_size() == mask.expression_stack_size() + callee_max_locals) ||
846 (try_next_mask &&
847 (iframe->interpreter_frame_expression_stack_size() == (next_mask_expression_stack_size -
848 top_frame_expression_stack_adjustment))) ||
849 (is_top_frame && (exec_mode == Unpack_exception) && iframe->interpreter_frame_expression_stack_size() == 0) ||
850 (is_top_frame && (exec_mode == Unpack_uncommon_trap || exec_mode == Unpack_reexecute || el->should_reexecute()) &&
851 (iframe->interpreter_frame_expression_stack_size() == mask.expression_stack_size() + cur_invoke_parameter_size))
This is extra conservative. It applies both x86 and SPARC (obsolete) logic to all platforms. The special case for Unpack_exception may not be needed.
I found a problem with arraylength (seeJDK-8278384), but it goes unnoticed because the VerifyStack logic is too permissive.
843 (iframe->interpreter_frame_expression_stack_size() == mask.expression_stack_size() + callee_size_of_parameters) ||
844 /* x86 */
845 (iframe->interpreter_frame_expression_stack_size() == mask.expression_stack_size() + callee_max_locals) ||
846 (try_next_mask &&
847 (iframe->interpreter_frame_expression_stack_size() == (next_mask_expression_stack_size -
848 top_frame_expression_stack_adjustment))) ||
849 (is_top_frame && (exec_mode == Unpack_exception) && iframe->interpreter_frame_expression_stack_size() == 0) ||
850 (is_top_frame && (exec_mode == Unpack_uncommon_trap || exec_mode == Unpack_reexecute || el->should_reexecute()) &&
851 (iframe->interpreter_frame_expression_stack_size() == mask.expression_stack_size() + cur_invoke_parameter_size))
This is extra conservative. It applies both x86 and SPARC (obsolete) logic to all platforms. The special case for Unpack_exception may not be needed.
I found a problem with arraylength (see
- relates to
-
JDK-8148871 Possible wrong expression stack depth at deopt point
-
- Resolved
-
-
JDK-8209825 guarantee(false) failed: wrong number of expression stack elements during deopt
-
- Resolved
-