RVM
  1. RVM
  2. RVM-916

Rule missing in set_caught_exception (BURS)

    Details

    • Type: Bug Bug
    • Status: Closed Closed
    • Priority: Major Major
    • 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
    • Number of attachments :
      2

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

      1. irdump.txt
        166 kB
        Andreas Sewe
      2. rvm916.patch
        2 kB
        Jeremy Singer

        Activity

        Hide
        Jeremy Singer added a comment - - edited

        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
        Jeremy Singer added a comment - - edited 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
        David Grove added a comment -

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

        Show
        David Grove added a comment - Thanks Jeremy. Patch looks good. I'm running patch against pre-commit tests now; should commit later today.
        Hide
        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
        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
        David Grove added a comment -

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

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

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

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

          People

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

            Dates

            • Created:
              Updated:
              Resolved: