Integrated: 8257740: Compiler crash when compiling type annotation on multicatch inside lambda
Guoxiong Li
github.com+13688759+lgxbslgx at openjdk.java.net
Fri Jan 8 13:58:57 UTC 2021
On Sun, 6 Dec 2020 08:17:29 GMT, Guoxiong Li <github.com+13688759+lgxbslgx at openjdk.org> wrote:
> Hi all,
>
> When translating a lambda expression to method, the method `LambdaToMethod.LambdaAnalyzerPreprocessor.LambdaTranslationContext.translate(final Symbol sym, LambdaSymbolKind skind)` creates new VarSymbol(s) according to the old VarSymbol(s). But this `translate` method doesn't set the field `data` of the new VarSymbol. Maybe it is because the field `data` is unused in later phase.
>
> Unfortunately, `com.sun.tools.javac.jvm.Code.fillExceptionParameterPositions` and `com.sun.tools.javac.jvm.Code.fillLocalVarPosition` would use the field `data` if the `data` is `ElementKind.EXCEPTION_PARAMETER`.
>
> It causes the exception_index won't be set in `fillExceptionParameterPositions`. Later, if the exception_index is used, the compiler will crash with error `java.lang.AssertionError: exception_index is not set`.
>
> This patch fixes it and adds corresponding test cases.
> In my patch, I only set the field ` data` if the `data` is `ElementKind.EXCEPTION_PARAMETER`. Because I don't see another situation that the field `data` would be used.
>
> Thank your for taking the time to review.
>
> Best Regards.
This pull request has now been integrated.
Changeset: 697bf7ab
Author: Guoxiong Li <lgxbslgx at gmail.com>
Committer: Vicente Romero <vromero at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/697bf7ab
Stats: 106 lines in 3 files changed: 106 ins; 0 del; 0 mod
8257740: Compiler crash when compiling type annotation on multicatch inside lambda
Reviewed-by: vromero
-------------
PR: https://git.openjdk.java.net/jdk/pull/1648
More information about the compiler-dev
mailing list