-
Enhancement
-
Resolution: Fixed
-
P4
-
None
-
master
G1 uses TLS storage to store the ever-changing current card table to modify.
The reason is that this generates the most compact code: inlining some address where the current value can be obtained has the disadvante of increases code size significantly, particularly on non-x64 where constructing a 64 bit integer takes many instructions. Even on x64, this is a 10 byte instruction.
This in turn at best has the same performance as using TLS (x64), worse on aarch64, even modern implementations.
The reason is that this generates the most compact code: inlining some address where the current value can be obtained has the disadvante of increases code size significantly, particularly on non-x64 where constructing a 64 bit integer takes many instructions. Even on x64, this is a 10 byte instruction.
This in turn at best has the same performance as using TLS (x64), worse on aarch64, even modern implementations.
- relates to
-
JDK-8342382 Implement JEP 522: G1 GC: Improve Throughput by Reducing Synchronization
-
- Resolved
-
- links to
-
Commit(master) openjdk/jdk/1188ca55
-
Review(master) openjdk/jdk/27573