RFR: 8266530: HotSpot changes for JEP 306 [v8]

Joe Darcy darcy at openjdk.java.net
Thu May 20 20:12:06 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.

Joe Darcy 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 11 additional commits since the last revision:

 - Fix typo found by @hseigel.
 - Merge branch 'master' into 8266530
 - Respond to review feedback.
 - Merge branch 'master' into 8266530
 - Restore previous is_strict cdoe in method.hpp.
 - Merge branch 'master' into 8266530
 - Make methods strict on IA32.
 - Merge branch 'master' into 8266530
 - Merge branch 'master' into 8266530
 - Respond to review feedback.
 - ... and 1 more: https://git.openjdk.java.net/jdk/compare/f2e689e9...62321229

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/3891/files
  - new: https://git.openjdk.java.net/jdk/pull/3891/files/2cdbd56b..62321229

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=3891&range=07
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=3891&range=06-07

  Stats: 5833 lines in 299 files changed: 3660 ins; 1365 del; 808 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