-
Enhancement
-
Resolution: Fixed
-
P4
-
17, 21, 23, 24
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8342065 | 23.0.2 | Gui Cao | P4 | Resolved | Fixed | b03 |
JDK-8342391 | 21.0.6 | Gui Cao | P4 | Resolved | Fixed | b01 |
JDK-8342392 | 17.0.14 | Gui Cao | P4 | Resolved | Fixed | b01 |
RISC-V does not currently have plain load and store opcodes with aq or rl annotations, load-acquire and
store-release operations are implemented using fences instead. Initially, we followed the RISC-V spec
and placed FENCE RW,RW fence in front of load-acquire operation when porting the template interpreter.
The purpose is to enforce a store-release-to-load-acquire ordering (where there must be a FENCE RW,RW
between the store-release and load-acquire). But it turns out these fences are unnecessary for our use
cases in the template interpreter. In fact, we only need to do a single FENCE R,RW after a normal memory
load in order to implement a load-acquire operation. We should remove those unnecessary fences for both
performance reasons and for consistency with the rest of the port (i.e., C1 and C2 JIT).
- backported by
-
JDK-8342065 RISC-V: Unnecessary fences used for load-acquire in template interpreter
- Resolved
-
JDK-8342391 RISC-V: Unnecessary fences used for load-acquire in template interpreter
- Resolved
-
JDK-8342392 RISC-V: Unnecessary fences used for load-acquire in template interpreter
- Resolved
- links to
-
Commit(master) openjdk/jdk17u-dev/9b15f9f1
-
Commit(master) openjdk/jdk21u-dev/f9070df1
-
Commit(master) openjdk/jdk23u/605f8dda
-
Commit(master) openjdk/jdk/a4ca6267
-
Review(master) openjdk/jdk17u-dev/2958
-
Review(master) openjdk/jdk21u-dev/1044
-
Review(master) openjdk/jdk23u/154
-
Review(master) openjdk/jdk/21248