JDK-8334110 : Implementation of Late Barrier Expansion for G1: arm (32-bit) port
  • Type: Sub-task
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 24
  • Priority: P4
  • Status: Closed
  • Resolution: Delivered
  • CPU: arm,aarch32
  • Submitted: 2024-06-12
  • Updated: 2024-09-25
  • Resolved: 2024-09-25
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 24
24Resolved
Description
Port JEP 475 to the arm (32-bit) platform. This sub-task is for bookkeeping only, the actual port code should be merged into the main JEP implementation (JDK-8334060).
Comments
Closed as "Delivered" since the port is already merged into the main JEP implementation (JDK-8334060). Thanks for your contribution [~snazarki]!
25-09-2024

Hi [~snazarki], platforms that currently do not support late barrier expansion (i.e. do not support ZGC) need to implement as part of this sub-task the SaveLiveRegisters class (or similar support) to save and restore live registers specified by the barrier stub class. This logic was originally developed for ZGC, and then generalized for G1 by JDK-8330685 for the platforms where it was already available. In the case of the arm (32-bit), s390, and x86 (32-bit) platforms, which do not support ZGC, this logic may be implemented either in src/hotspot/cpu/$PLATFORM/gc/shared/barrierSetAssembler_$PLATFORM.* or directly in src/hotspot/cpu/$PLATFORM/gc/g1/g1BarrierSetAssembler_$PLATFORM.*. The BarrierSetAssembler::refine_register() function needs to be implemented in src/hotspot/cpu/$PLATFORM/gc/shared/barrierSetAssembler_$PLATFORM.* though, because it is used from platform- and GC-independent code (BarrierSetC2::compute_liveness_at_stubs()). Hope that clarifies your question!
08-08-2024

I'm a bit confused here. It seems that the ARM32 port missed 8330685 as a prerequisite. 8330685 is an enhancement for ZGC that is not supported by any 32bit platform.Roberto, do you think we need to start with 8330685 even if it only touches the common part of the platform specific GC code?
07-08-2024

Thanks, Sergey!
17-06-2024

I may take on this task in August if no one takes it up before then
17-06-2024

Hi [~bulasevich] and [~snazarki], the JEP implementation PR is now published: https://github.com/openjdk/jdk/pull/19746. To fully meet the goals of the JEP while ensuring that G1 remains generally available, the JEP needs to be ported to all platforms in the scope of JDK 24. May I ask one of you to take ownership of this task, or find some arm-32 maintainer who does? Thanks!
17-06-2024