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

Rule missing in set_caught_exception (BURS)

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Medium
    • Resolution: Fixed
    • Affects Version/s: hg tip
    • Fix Version/s: 3.1.3
    • Labels:
      None
    • Environment:

      production Jikes RVM 3.1.1+svn (r16038)
      Linux 2.6.31-22-generic #70-Ubuntu SMP Wed Dec 1 23:51:13 UTC 2010 i686 GNU/Linux

      Description

      When running a Scala actors benchmark (due to Patrik Nordwall, https://github.com/patriknw/akka-sample-trading) I get the following error:

      .Exception occurred in ConvertLIRtoMIR
      org.jikesrvm.compilers.opt.OptimizingCompilerException: ERROR produced in module:BURS
      rule missing in set_caught_exception 0x699e5ed8
      set_caught_exception
      INT_CONSTANT 1771986648

      at org.jikesrvm.compilers.opt.lir2mir.ia32.BURS_STATE.mark(BURS_STATE.java:129)
      at org.jikesrvm.compilers.opt.lir2mir.NormalBURS.labelTrees(NormalBURS.java:339)
      at org.jikesrvm.compilers.opt.lir2mir.NormalBURS.invoke(NormalBURS.java:82)
      at org.jikesrvm.compilers.opt.lir2mir.ConvertLIRtoMIR$DoBURS.perform(ConvertLIRtoMIR.java:417)
      at org.jikesrvm.compilers.opt.driver.CompilerPhase.performPhase(CompilerPhase.java:205)
      at org.jikesrvm.compilers.opt.driver.OptimizationPlanAtomicElement.perform(OptimizationPlanAtomicElement.java:88)
      at org.jikesrvm.compilers.opt.driver.OptimizationPlanCompositeElement.perform(OptimizationPlanCompositeElement.java:143)
      at org.jikesrvm.compilers.opt.driver.OptimizationPlanCompositeElement.perform(OptimizationPlanCompositeElement.java:143)
      at org.jikesrvm.compilers.opt.driver.CompilationPlan.execute(CompilationPlan.java:131)
      at org.jikesrvm.compilers.opt.driver.OptimizingCompiler.compile(OptimizingCompiler.java:169)
      at org.jikesrvm.compilers.common.RuntimeCompiler.optCompile(RuntimeCompiler.java:355)
      at org.jikesrvm.compilers.common.RuntimeCompiler.recompileWithOpt(RuntimeCompiler.java:534)
      at org.jikesrvm.adaptive.controller.ControllerPlan.doRecompile(ControllerPlan.java:179)
      at org.jikesrvm.adaptive.recompilation.CompilationThread.run(CompilationThread.java:52)

      To reprocude, download https://github.com/downloads/patriknw/akka-sample-trading/akka-sample-trading-1.0-M1-dist.zip and adapt scripts/run_benchmark.sh to use Jikes RVM. Then SIMPLY run scripts/run_benchmark.sh org.samples.trading.actor.ActorPerformanceTest. This produces the above output along with a lengthy IR dump (attached).

        Gliffy Diagrams

          Attachments

            Activity

            Hide
            jsinger Jeremy Singer added a comment -

            See attached file: rvm916.patch
            I have added an opt-compiler
            IA32 BURS rule to handle
            set_caught_exception with an integer constant operand.

            This rule appears to be necessary
            for some Scala code and DeuceSTM
            support.

            Show
            jsinger Jeremy Singer added a comment - See attached file: rvm916.patch I have added an opt-compiler IA32 BURS rule to handle set_caught_exception with an integer constant operand. This rule appears to be necessary for some Scala code and DeuceSTM support.
            Hide
            dgrove David Grove added a comment -

            Thanks Jeremy. Patch looks good. I'm running patch against pre-commit tests now; should commit later today.

            Show
            dgrove David Grove added a comment - Thanks Jeremy. Patch looks good. I'm running patch against pre-commit tests now; should commit later today.
            Hide
            ebrangs Erik Brangs added a comment -

            I've got two small comments on the patch:

            1. The error message should mention what the unexpected operand type is.

            2. Why not use if (val.isRegister()) instead of if (val instanceof RegisterOperand)? Both have the same effect and I think that it looks nicer if the checks are similar, i.e. instanceof or is*() in both cases.

            Show
            ebrangs Erik Brangs added a comment - I've got two small comments on the patch: 1. The error message should mention what the unexpected operand type is. 2. Why not use if (val.isRegister()) instead of if (val instanceof RegisterOperand) ? Both have the same effect and I think that it looks nicer if the checks are similar, i.e. instanceof or is*() in both cases.
            Hide
            dgrove David Grove added a comment -

            Applied patch with modifications suggested by Erik in changeset 10456:4ee4e590b991.

            Show
            dgrove David Grove added a comment - Applied patch with modifications suggested by Erik in changeset 10456:4ee4e590b991.
            Hide
            dgrove David Grove added a comment -

            bulk close of all resolved issues in preparation for 3.1.3 release.

            Show
            dgrove David Grove added a comment - bulk close of all resolved issues in preparation for 3.1.3 release.

              People

              • Assignee:
                dgrove David Grove
                Reporter:
                sewe Andreas Sewe
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: