RFR: 8260053: Optimize Tokens' use of Names

Guoxiong Li github.com+13688759+lgxbslgx at openjdk.java.net
Thu Jan 21 11:23:49 UTC 2021

On Wed, 20 Jan 2021 17:07:26 GMT, Guoxiong Li <github.com+13688759+lgxbslgx at openjdk.org> wrote:

> Hi all,
> This patch initializes the names about `TokenKind` at the beginning of the constructor of the class `Names`. As a result, the `Tokens.maxKey` and the length of the array `Tokens.key` become small. By using this patch, the length of the array `Tokens.key` is changed from 4280 to 383.
> The original discussion is at [compiler-dev](https://mail.openjdk.java.net/pipermail/compiler-dev/2021-January/016126.html).
> Thank you for taking the time to review.
> Best Regards.

Thanks for your comments.

My patch mainly focused on using less memory without causing performance degradation. But I lacked consideration about the architecture which is also important. I agree with you that the utility classes should not dependent on other classes.

Using `Map<String, TokenKind>` instead of `TokenKind[]` looks like a good idea. It reduces the memory and doesn't revise the class `Names`. But the more important aspect is that it can't cause performance regression. I will do some benchmark test by using `Map<String, TokenKind>` locally to observe the performance and will share the result with you.


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

More information about the compiler-dev mailing list