RFR: 8372948: Store end positions directly in JCTree [v12]
Jan Lahoda
jlahoda at openjdk.org
Tue Feb 3 12:20:28 UTC 2026
On Tue, 3 Feb 2026 11:55:05 GMT, Liam Miller-Cushon <cushon at openjdk.org> wrote:
>> This change adds a field to `JCTree` to store end positions, instead of using a separate `EndPosTable` map. See also [this compiler-dev@ thread](https://mail.openjdk.org/pipermail/compiler-dev/2025-November/032254.html).
>>
>> I performed the refactoring in stages, preserving existing semantics at each step.
>>
>> There are two known places where this changes existing behaviour that are reflected in changes to tests:
>>
>> * `test/langtools/tools/javac/api/TestJavacTask_Lock.java` - this test asserts that calling `JavacTask#parse` first and then calling `#call` or `#parse` second will fail. The assertion that the test is currently expecting is thrown when the `EndPosTable` gets set a second time, and this change means that no longer results in an exception. If desired `JavacTask#parse` could be updated to explicitly check if it is called twice and fail, instead of indirectly relying on the `EndPosTable` for that.
>>
>> * `test/langtools/tools/javac/diags/DiagnosticGetEndPosition.java` - there's a comment that 'ideally would be "0", but the positions are not fully set yet', and with the new approach the end position is available to the test, so it resolves the comment. Also the test logic didn't handle platform specific line ending variations correctly, so I updated it to work on windows now that end positions are present.
>
> Liam Miller-Cushon has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 14 additional commits since the last revision:
>
> - Fix more references to newParser
> - Merge remote-tracking branch 'origin/master' into JDK-8372948
> - Remove overload of ParserFactor#newParser
> - Update newParser call sites
> - Merge remote-tracking branch 'origin/master' into JDK-8372948
> - Rename mapPos to endpos, there is no longer an end position map
> - Review feedback
>
> * Improve valiation in JavacTaskImpl and revert workaround in TestJavacTask_Lock.java
> * Add an assertion to DiagnosticGetEndPosition.java
> * Update test/langtools/tools/javac/6304921/TestLog.java for EndPosTable removal
> - Merge remote-tracking branch 'origin/master' into JDK-8372948
> - Merge remote-tracking branch 'origin/master' into JDK-8372948
> - Fix DiagnosticGetEndPosition on windows
> - ... and 4 more: https://git.openjdk.org/jdk/compare/9aee903f...f375f9a6
FWIW, I've submitted a test run, will comment here when it finishes.
-------------
Marked as reviewed by jlahoda (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/28610#pullrequestreview-3744937090
More information about the javadoc-dev
mailing list