Uploaded image for project: 'JikesRVM'
  1. JikesRVM
  2. RVM-755

Tweaks to optimizing compilation to improve the performance of write barriers

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Medium
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: 3.2
    • Component/s: Compiler: Optimizing
    • Labels:
      None

      Description

      We don't allow copy propagation of physical registers, however, in the case of the processor register this appears overly cautious. In the current generational putfield write barrier we get:

      t1 = PR // define t1 to PR
      if ....
      return // likely
      else
      ... = t1 // unlikely - use of t1

      as t1 is alive in the slow path the definition must occur at the head of the method, so we copy PR redundantly for it only to be used if we get into the write barrier slow path. We should just copy propagate PR and save the allocation of t1.

      Similarly the test at the head of the put field write barrier is often

      ...
      t2 = l1 + constant_offset
      if t2 < constant_start_of_nursery
      ...

      which can be folded in BURS to:

      if l1 < constant_start_of_nursery - constant_offset

      this is already performed in expression folding, but currently disabled.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              ianrogers Ian Rogers
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated: