RFR: 8236490: Compiler bug relating to @NonNull annotation

Guoxiong Li github.com+13688759+lgxbslgx at openjdk.java.net
Fri Jan 22 06:10:51 UTC 2021


On Thu, 14 Jan 2021 18:11:30 GMT, Vicente Romero <vromero 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.
>
> looks sensible

@vicente-romero-oracle Could I get your help to sponsor this patch? Thanks a lot.

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

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


More information about the compiler-dev mailing list