Integrated: 8236490: Compiler bug relating to @NonNull annotation
Guoxiong Li
github.com+13688759+lgxbslgx at openjdk.java.net
Tue Jan 26 09:00:45 UTC 2021
On Wed, 13 Jan 2021 10:01:26 GMT, Guoxiong Li <github.com+13688759+lgxbslgx at openjdk.org> wrote:
> Hi all,
>
> If the exception class index in constant pool exceeds 256, the `exception_index` in `TypeAnnotationPosition` will not work as expected. Please see the following code:
>
> public void setCatchInfo(final int catchType, final int startPos) {
> Assert.check(!hasExceptionIndex(),
> "exception_index is already set");
> Assert.check(catchType >= 0, "Expected a valid catch type");
> this.exception_index = -((catchType | startPos << 8) + 1); // <------------------------------
> }
>
> If `catchType` > 256, which means the 8-15 bits is useful, the ` -((catchType | startPos << 8) + 1);` would override these bits.
>
> This patch separates the `startPos` into a new field `exceptionStartPos` to solve the bug. And a test case is added.
>
> Thank you for taking the time to review.
>
> Best Regards.
This pull request has now been integrated.
Changeset: 23edb6f6
Author: Guoxiong Li <lgxbslgx at gmail.com>
Committer: Joel Borggrén-Franck <jfranck at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/23edb6f6
Stats: 117 lines in 2 files changed: 111 ins; 0 del; 6 mod
8236490: Compiler bug relating to @NonNull annotation
Reviewed-by: vromero, jfranck
-------------
PR: https://git.openjdk.java.net/jdk/pull/2060
More information about the compiler-dev
mailing list