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

Fix handling of memory in PhaseIdealLoop::clone_loop_predicates()

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P3
    • Resolution: Fixed
    • Affects Version/s: 12
    • Fix Version/s: 12
    • Component/s: hotspot
    • Subcomponent:
    • Resolved In Build:
      b19

      Description

      We have:

      Predicate 1
      ..
      Predicate n

      profile predicate 1
      ..
      profile predicate n

      loop head

      Shenandoah write barriers produce memory, can be hoisted out of loop but
      can also depend on some predicate so may end up with:

      Predicate 1
      ..
      Predicate n

      profile predicate 1
      ..
      write barrier
      ...
      profile predicate n

      loop head

      In that case, all predicates branch to a region that dominates the
      uncommon trap call. Same is true for profile predicates. Because of the
      write barrier, the region for profile predicates has a memory phi to
      merge memory state before the barrier and after the barrier. Now when
      clone_loop_predicates() is called:

      Predicate 1
      ..
      Predicate n

      profile predicate 1
      ..
      write barrier
      ...
      profile predicate n

      cloned predicate

      cloned profile predicate

      loop head

      the cloned predicate branches to the region shared by all
      predicates. Same goes for the cloned profile predicate and the profile
      predicates. The memory state for the cloned predicate should be the one
      following the barrier but after cloning it's the one from the predicate
      n, before the barrier. That memory state needs to be adjusted.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              roland Roland Westrelin
              Reporter:
              roland Roland Westrelin
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: