RVM
  1. RVM
  2. RVM-264

get_obj_tib and get_array_length should not really be unary

    Details

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

      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.

        Activity

        There are no comments yet on this issue.

          People

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

            Dates

            • Created:
              Updated: