RFR: 8372948: Store end positions directly in JCTree [v2]

Liam Miller-Cushon cushon at openjdk.org
Tue Dec 9 20:49:50 UTC 2025


> This change adds a field to `JCTree` to store end positions, instead of using a separate `EndPosTable` map. See also [this compile-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

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 three additional commits since the last revision:

 - Update assertion for test/langtools/tools/javac/diags/DiagnosticGetEndPosition.java
 - Merge remote-tracking branch 'origin/master' into JDK-8372948
 - 8372948: Store end positions directly in JCTree

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/28610/files
  - new: https://git.openjdk.org/jdk/pull/28610/files/cd10d5a0..0c8e996c

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=28610&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28610&range=00-01

  Stats: 25966 lines in 503 files changed: 17838 ins; 6154 del; 1974 mod
  Patch: https://git.openjdk.org/jdk/pull/28610.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/28610/head:pull/28610

PR: https://git.openjdk.org/jdk/pull/28610


More information about the compiler-dev mailing list