Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8021244

Inconsistent stackmap with splitter threshold set very low

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P2 P2
    • 8
    • 8
    • core-libs
    • b102
    • generic
    • generic
    • Verified

      Setting the splitter threshold to a value beneath 1000 generates java.lang.VerifyErrors in some tests.

      This seems to happen on tests containing finally clauses, but further investigation is required.

      bin/js -Dnashorn.compiler.splitter.threshold=200 /home/hannes/work/nashorn/test/script/basic/NASHORN-58.js
      Exception in thread "main" java.lang.VerifyError: Inconsistent stackmap frames at branch target 95
      Exception Details:
        Location:
          jdk/nashorn/internal/scripts/Script$NASHORN_58$24.test5(Ljdk/nashorn/internal/runtime/ScriptFunction;Ljava/lang/Object;)Ljava/lang/Object; @90: ifne
        Reason:
          Current frame's stack size doesn't match stackmap.
        Current Frame:
          bci: @90
          flags: { }
          locals: { 'jdk/nashorn/internal/runtime/ScriptFunction', 'java/lang/Object', 'jdk/nashorn/internal/scripts/JO0P0', 'java/lang/Object' }
          stack: { integer }
        Stackmap Frame:
          bci: @95
          flags: { }
          locals: { 'jdk/nashorn/internal/runtime/ScriptFunction', 'java/lang/Object', 'jdk/nashorn/internal/scripts/JO0P0' }
          stack: { 'java/lang/Throwable' }
        Bytecode:
          0000000: 2ab6 0018 4dbb 001a 5908 b800 1e2c b700
          0000010: 214d 2a2b 2cb8 0027 4e2a 2b2c b800 2c4e
          0000020: 2cc0 002e b900 3201 009a 0005 2db0 2a2b
          0000030: 2cb8 0035 4e2a 2b2c b800 3a4e 2cc0 002e
          0000040: b900 3201 009a 0005 2db0 2a2b 2cb8 003f
          0000050: 4e2c c000 2eb9 0032 0100 9a00 052d b03a
          0000060: 0419 043a 052c 1006 ba00 4e00 002c ba00
          0000070: 5200 00b0
        Exception Handler Table:
          bci [18, 95] => handler: 95
        Stackmap Table:
          append_frame(@46,Object[#26],Object[#95])
          same_frame(@74)
          full_frame(@95,{Object[#20],Object[#95],Object[#26]},{Object[#86]})

      at java.lang.Class.getDeclaredFields0(Native Method)
      at java.lang.Class.privateGetDeclaredFields(Class.java:2550)
      at java.lang.Class.getDeclaredField(Class.java:2059)
      at jdk.nashorn.internal.codegen.Compiler$2.run(Compiler.java:417)
      at jdk.nashorn.internal.codegen.Compiler$2.run(Compiler.java:413)
      at java.security.AccessController.doPrivileged(Native Method)
      at jdk.nashorn.internal.codegen.Compiler.install(Compiler.java:413)
      at jdk.nashorn.internal.codegen.Compiler.install(Compiler.java:461)
      at jdk.nashorn.internal.runtime.Context.compile(Context.java:829)
      at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:785)
      at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:339)
      at jdk.nashorn.tools.Shell.runScripts(Shell.java:309)
      at jdk.nashorn.tools.Shell.run(Shell.java:179)
      at jdk.nashorn.tools.Shell.main(Shell.java:143)
      at jdk.nashorn.tools.Shell.main(Shell.java:122)

            hannesw Hannes Wallnoefer
            hannesw Hannes Wallnoefer
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: