RFR: 8266530: HotSpot changes for JEP 306

Joe Darcy darcy at openjdk.java.net
Wed May 5 21:03:18 UTC 2021


Please review these VM changes in support of JEP 306: Restore Always-Strict Floating-Point Semantics.

JEP 306 is considering the following changes to the JVMS: 

1) Require "strict" floating-point evaluation in all circumstances.
2) For class file version 61 and higher, undefine ACC_STRICT, moving that bit position back to undefined for methods. For class file versions, 46 through, ACC_STRICT would remain a defined modifier.

Since all floating-point evaluation is done strictly, a modifier bit is not needed to indicate this anymore. There are a few mandated modifier checks when ACC_STRICT is defined, such as not allowing an "abstract strictfp" method. These checks in classFileParser are now conditional on the class file version.

The tests verify  "abstract strictfp" triggers a ClassFormatError  for version 60 and does not trigger an error or exception for version 61. (As an undefined bit in version 61, the VM is supposed to ignore it.)

FYI, the javac and core libs portions of JEP 306 are out for review under https://github.com/openjdk/jdk/pull/3831.

The HotSpot and javac/core libs parts of JEP 306 are independent in that neither relies on the other:
 * javac will not output class files which expose the difference in class parsing behavior; the ACC_STRICT modifier will not be set in any version 61 class file emitted by javac.
 *  since HotSpot already does all floating-point evaluation strictly, no changes are needed to support strict evaluation.

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

Commit messages:
 - 8266530: HotSpot changes for JEP 306

Changes: https://git.openjdk.java.net/jdk/pull/3891/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3891&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8266530
  Stats: 416 lines in 6 files changed: 414 ins; 0 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk/pull/3891.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/3891/head:pull/3891

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


More information about the hotspot-runtime-dev mailing list