By using the Class File API to dynamically generate a CompositePrinterParser, and defining DateTimePrinterParser[] printerParsers as a specific field, C2 can do TypeProfile optimization.
Since the CompositePrinterParser is generated based on the pattern, we can make the following optimizations: 1. For example, for the parse and print of Month/DayOfMonth/Hour/Minute/Second with a fixed length of 2, do targeted parse and print optimization. 2. Parse uses LocalDate/LocalTime/LocalDateTime/OffsetDateTime for TemporalQuery to avoid the overhead of constructing DateTimeParseContext. These optimizations can significantly improve performance, with more than 100% performance improvement in many scenarios. ------------- Commit messages: - code style - simplify & code style - fix comment - fix comment - support OffsetTime - fix comments - optimize parseOffsetDateTime - optimize nano3 - Generate PrinterParser using bytecode - add benchmark Changes: https://git.openjdk.org/jdk/pull/23384/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23384&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8349189 Stats: 1687 lines in 9 files changed: 1543 ins; 88 del; 56 mod Patch: https://git.openjdk.org/jdk/pull/23384.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/23384/head:pull/23384 PR: https://git.openjdk.org/jdk/pull/23384