Integrated: 8262368: wrong verifier message for bogus return type

Harold Seigel hseigel at openjdk.java.net
Wed Mar 3 13:21:58 UTC 2021


On Fri, 26 Feb 2021 20:07:49 GMT, Harold Seigel <hseigel at openjdk.org> wrote:

> Please review this small change to fix some verifier error messages.  If a method's descriptor has a void return signature, but contains a bytecode such as 'ireturn' or 'areturn'. then it will get a VerifyError exception with the message "Method descriptor has a void return type".   Conversely, if a method's descriptor has a non-void return signature, but contains a 'return' bytecode then it will get a VerifyError exception with the message "Method descriptor has a non-void return type".
> 
> A sample error message looks like:
> Error: Unable to initialize main class Hi
> Caused by: java.lang.VerifyError: Method descriptor has a void return type
> Exception Details:
>   Location:
>     Hi.noRet(I)V @1: ireturn
>   Reason:
>     Type integer (current frame, stack[0]) is not assignable to top (from method signature)
>   Current Frame:
>     bci: @1
>     flags: { }
>     locals: { integer }
>     stack: { integer }
>   Bytecode:
>     0000000: 08ac
> 
> The fix was tested with Mach5 tiers 1 and 2 on Linux, Mac OS, and Windows, tiers 3-5 on Linux x64. and the JCK Lang and VM tests on Linux x64.
> 
> Thanks, Harold

This pull request has now been integrated.

Changeset: 3d3eb5c8
Author:    Harold Seigel <hseigel at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/3d3eb5c8
Stats:     127 lines in 3 files changed: 126 ins; 0 del; 1 mod

8262368: wrong verifier message for bogus return type

Reviewed-by: dholmes, coleenp

-------------

PR: https://git.openjdk.java.net/jdk/pull/2757


More information about the hotspot-runtime-dev mailing list