John Rose suggests in 
https://github.com/openjdk/jdk/pull/26802#issuecomment-3201402304 that 
ClassFile API should validate Utf8Entry length eagerly upon construction. 
Currently we validate upon writing to bytes, which avoids validation overhead. 
However, given that most class file utf8 data are shorter than 1/3 of the max 
length, which is always an encodable length, the performance impact should be 
low.

Preventing the creation of unrepresentable UTF8 entries can prevent passing 
such invalid instances around, making such problems easier to debug than a 
failure at building.

Tier 1-3 seems clear. The performance impact to jdk.classfile.Write or any of 
the regularly run transformation benchmarks seems neutral, less than 5% 
perturbations.

I will update docs to reflect this change, given how widespread this is across 
JDK - it seems the only exempt classes are Signature, ClassSignature, and 
MethodSignature.

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

Commit messages:
 - Merge branch 'master' of https://github.com/openjdk/jdk into 
feature/cf-utf8-length-early
 - Merge branch 'master' of https://github.com/openjdk/jdk into 
feature/cf-utf8-length-early
 - Stage
 - Merge branch 'master' of https://github.com/openjdk/jdk into 
feature/cf-utf8-length-early
 - Merge branch 'master' of https://github.com/openjdk/jdk into 
feature/cf-utf8-length-early
 - Merge branch 'master' of https://github.com/openjdk/jdk into 
feature/cf-utf8-length-early
 - Avoid being too specific
 - Tests
 - Doc changes
 - 8367585: Move Utf8Entry length validation earlier

Changes: https://git.openjdk.org/jdk/pull/27281/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27281&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8367585
  Stats: 416 lines in 15 files changed: 253 ins; 51 del; 112 mod
  Patch: https://git.openjdk.org/jdk/pull/27281.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27281/head:pull/27281

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

Reply via email to