RVM
  1. RVM
  2. RVM-327

Performance degredation in IA32 assembler

    Details

    • Number of attachments :
      0

      Description

      r13833 introduced enumerations into the IA32 assembler, resulting in more maintainable code but a 8-10% slowdown in baseline compilation rate.

      See http://jira.codehaus.org/browse/RVM-322 for performance data.

      We need to get this performance back as baseline compile time can be a significant factor in startup performance of the VM on large programs. It is also a chance to discover opportunities for improving the performance of code that is using enumerations in a controlled setting that may lead to optimizations that are more generally applicable.

        Activity

        Ian Rogers made changes -
        Field Original Value New Value
        Assignee Ian Rogers [ ianrogers ]
        Hide
        Ian Rogers added a comment -

        There are clear cases looking through the code where immutability of an array or less aggressive inlining of a @Pure method will yield a benefit.

        Show
        Ian Rogers added a comment - There are clear cases looking through the code where immutability of an array or less aggressive inlining of a @Pure method will yield a benefit.
        Hide
        Ian Rogers added a comment -

        We've come a long way since this issue was filed. Inline.When allows effective inlining of the assembler methods when constant folding can apply, both reducing the overhead of enums and the code bloat associated with always inlining. I'm not convinced we're quite back where we were so I'm moving this onto 2.9.4 as a reminder to look at it.

        Show
        Ian Rogers added a comment - We've come a long way since this issue was filed. Inline.When allows effective inlining of the assembler methods when constant folding can apply, both reducing the overhead of enums and the code bloat associated with always inlining. I'm not convinced we're quite back where we were so I'm moving this onto 2.9.4 as a reminder to look at it.
        Ian Rogers made changes -
        Fix Version/s 2.9.3 [ 13726 ]
        Fix Version/s 2.9.4 [ 14162 ]
        Ian Rogers made changes -
        Fix Version/s 2.9.4 [ 14162 ]
        Fix Version/s 1000 [ 14184 ]
        Hide
        Ian Rogers added a comment -

        We now inline all cases where the registers are constant and the generated code shows no signs of doing dispatch on an enum.

        Show
        Ian Rogers added a comment - We now inline all cases where the registers are constant and the generated code shows no signs of doing dispatch on an enum.
        Ian Rogers made changes -
        Fix Version/s 1000 [ 14184 ]
        Fix Version/s 3.0 [ 13530 ]
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Ian Rogers made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

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

            Dates

            • Created:
              Updated:
              Resolved: