Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8245955

Shenandoah: Remove LRB/is_redundant optimization

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P4
    • Resolution: Fixed
    • Affects Version/s: 8-shenandoah, 11-shenandoah, 14, 15
    • Fix Version/s: 15
    • Component/s: hotspot
    • Subcomponent:
      gc
    • Resolved In Build:
      b26
    • CPU:
      generic
    • OS:
      generic

      Description

      Just before expanding LRBs in C2, we check whether or not the LRB is actually used for anything useful. This optimization is a bit odd, it doesn't really follow the usual pattern for such things (it should be done by overwriting Ideal/Identity in the consuming node, and the LRB would be eliminated when it has no users left).

      Also, the optimization doesn't actually seem to have any positive effect anymore. It used to be significant when we had to deal with null-checks, but this is gone. The only other thing left is OptimizeStaticFinals, which is already covered by C2 because it inlines such fields as constants.

      Also, this blocks an improvement to ensure that there's no safepoints between loads and LRBs because eliminating the LRB can leave from-space oops in local variables.

        Attachments

          Activity

            People

            • Assignee:
              rkennke Roman Kennke
              Reporter:
              rkennke Roman Kennke
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: