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

get_obj_tib and get_array_length should not really be unary

    Details

    • Type: Bug
    • Status: Open
    • Priority: Low
    • Resolution: Unresolved
    • Affects Version/s: 2.9.1, 2.9.0.1, 2.9.0
    • Fix Version/s: 1000
    • Component/s: Compiler: Optimizing
    • Labels:
      None

      Description

      The get_obj_tib isntruction is treated as a unary operator. This is true except during allocation when the object's tib field is being initialized.

      The following has been observed. The allocation sequence, after inlining, has a loop which makes it attractive for gcp to move a get_obj_tib from outside the uninterruptible region to the loop's initialization block. Unfortunately, this happens to be before the tib's initialization (int_store).

      Possible Solutions:

      (1) Augment the semantics of uninterruptible so it means that tib's can change inside the region. Forbid get_obj_tib and
      get_array_length from moving into or out of such regions.
      (2) Slightly cleaner, but more work, would be to create a new region type called object_initialization.
      (3) Create new magics (set_obj_tib, set_array_length). Make all header-related operations non-unary.

      This issue replaces SF bug #1147514.

        Gliffy Diagrams

          Attachments

            Activity

            There are no comments yet on this issue.

              People

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

                Dates

                • Created:
                  Updated: