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).

        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: