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

client compiler -Xcomp failure for JSR 292

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • 7
    • 7
    • hotspot
    • None
    • generic
    • generic

      Running an invokedynamic demo on the client compiler (i386) in -Xcomp mode runs into an assertion error in SharedRuntime::resolve_sub_helper at this code:

        // JSR 292
        // If the resolved method is a MethodHandle invoke target the call
        // site must be a MethodHandle call site.
        if (callee_method->is_method_handle_invoke()) {
          assert(caller_nm->is_method_handle_return(caller_frame.pc()), "must be MH call site");
        }

      The call is to MH.invokeExact(Object,Object,Object,Object)void.

      The caller is sun.dyn.MethodHandleImpl$AllocateObject::invoke_L3. The call site does not apparently preserve %esp. See the dump below.

      To reproduce, unzip the attached file indy-bsm-test.zip and run according to the instructions in the README.

      Sample command lines:

      $ (cd make; gmake jvmg1)
      $ cd build/solaris/solaris_i486_compiler1/jvmg/
      $ ln -s indy-bsm-test/*.jar .
      $ ./gamma -XX:+ShowMessageBoxOnError -XX:CIStart=646 -Xcomp -XX:CICompilerCount=1 -Xbatch -XX:-PrintCompilation -XX:+UnlockExperimentalVMOptions -XX:+EnableInvokeDynamic -Xbootclasspath/p:IndyLocalBootstrap.jar:InvokeDynamicDemo.jar:JRS292.jar meth.IndyLocalBootstrap




      (dbx) p caller_nm.print()
      Compiled (c1) 646 nmethod sun.dyn.MethodHandleImpl$AllocateObject::invoke_L3 (21 bytes)
       total in heap [0xfbef2088,0xfbef23b0] = 808
       relocation [0xfbef2158,0xfbef21a4] = 76
       main code [0xfbef21b0,0xfbef2260] = 176
       stub code [0xfbef2260,0xfbef22b6] = 86
       constants [0xfbef22b6,0xfbef22b8] = 2
       oops [0xfbef22b8,0xfbef22bc] = 4
       scopes data [0xfbef22bc,0xfbef2310] = 84
       scopes pcs [0xfbef2310,0xfbef23a0] = 144
       dependencies [0xfbef23a0,0xfbef23a4] = 4
       nul chk table [0xfbef23a4,0xfbef23b0] = 12
       oops [0xfbef22b8,0xfbef22bc] = 4
      ((class nmethod *) caller_nm)->print() = (void)
      (dbx) p caller_frame
      caller_frame = {
          _sp = 0x80465a0
          _pc = 0xfbef220c "\x8bD$ \x83\xc4(]\x85^E"
          _cb = 0xfbef2088
          _deopt_state = not_deoptimized
          _fp = 0x8046600
          _unextended_sp = 0x80465a0
      }
      (dbx) dis 0xfbef21b0,0xfbef2260
      0xfbef21b0: nop
      0xfbef21b1: nop
      0xfbef21b2: nop
      0xfbef21b3: nop
      0xfbef21b4: nop
      0xfbef21b5: nop
      0xfbef21b6: nop
      0xfbef21b7: cmpl 0x00000004(%ecx),%eax
      0xfbef21ba: jne 0xfbeaad90 [ 0xfbeaad90, .-0x4742a ]
      0xfbef21c0: movl %eax,0xffffc000(%esp)
      0xfbef21c7: pushl %ebp
      0xfbef21c8: subl $0x00000028,%esp
      0xfbef21cb: movl %edx,0x0000001c(%esp)
      0xfbef21cf: movl %ecx,%ebx
      0xfbef21d1: movl %ebx,%ecx
      0xfbef21d3: movl %ebx,0x00000018(%esp)
      0xfbef21d7: call 0xfbef7b20 [ 0xfbef7b20, .+0x5949 ]
      0xfbef21dc: movl 0x00000018(%esp),%ecx
      0xfbef21e0: movl 0x00000020(%ecx),%ecx
      0xfbef21e3: cmpl (%ecx),%eax
      0xfbef21e5: movl %eax,%edx
      0xfbef21e7: movl 0x0000001c(%esp),%esi
      0xfbef21eb: movl %esi,(%esp)
      0xfbef21ee: movl 0x00000030(%esp),%esi
      0xfbef21f2: movl %esi,0x00000004(%esp)
      0xfbef21f6: movl 0x00000034(%esp),%esi
      0xfbef21fa: movl %esi,0x00000008(%esp)
      0xfbef21fe: movl %eax,0x00000020(%esp)
      0xfbef2202: movl $0xffffffff,%eax
      0xfbef2207: call 0xfbeab210 [ 0xfbeab210, .-0x46ff7 ]
      0xfbef220c: movl 0x00000020(%esp),%eax <<<<<<<<
      0xfbef2210: addl $0x00000028,%esp
      0xfbef2213: popl %ebp
      0xfbef2214: testl %eax,0xfef20100 [ 0xfef20100 ]
      0xfbef221a: ret
      0xfbef221b: call 0xfbeef060 [ 0xfbeef060, .-0x31bb ]
      0xfbef2220: pushl $__RTTI__1nRAbstractAssembler_+0x867e
      0xfbef2225: call 0xfbef222a [ 0xfbef222a, .+5 ]
      0xfbef222a: pushal
      0xfbef222b: call debug32 [ 0xfe31a890, .+0x2428665 ]
      0xfbef2230: hlt
      0xfbef2231: nop
      0xfbef2232: nop
      0xfbef2233: nop
      0xfbef2234: movl %gs:0x000000e0,%esi
      0xfbef223c: movl 0x0000018c(%esi),%eax
      0xfbef2242: movl $0x00000000,0x0000018c(%esi)
      0xfbef224c: movl $0x00000000,0x00000190(%esi)
      0xfbef2256: addl $0x00000028,%esp
      0xfbef2259: popl %ebp
      0xfbef225a: jmp 0xfbeee890 [ 0xfbeee890, .-0x39ca ]
      0xfbef225f: hlt
      0xfbef2260: nop
      (dbx) call find(0xfbef7b20)

      "Executing find"
      Compiled (c1) 663 nmethod sun.dyn.MethodHandleImpl$AllocateObject::allocate (11 bytes)
       total in heap [0xfbef7a08,0xfbef7c50] = 584
       relocation [0xfbef7ad8,0xfbef7b0c] = 52
       main code [0xfbef7b10,0xfbef7b80] = 112
       stub code [0xfbef7b80,0xfbef7bca] = 74
       constants [0xfbef7bca,0xfbef7bcc] = 2
       oops [0xfbef7bcc,0xfbef7bd0] = 4
       scopes data [0xfbef7bd0,0xfbef7bec] = 28
       scopes pcs [0xfbef7bec,0xfbef7c4c] = 96
       dependencies [0xfbef7c4c,0xfbef7c50] = 4
       oops [0xfbef7bcc,0xfbef7bd0] = 4
      t@1 (l@1) stopped in _waitid at 0xfe17a4d7
      0xfe17a4d7: _waitid+0x0007: jae _waitid+0x13 [ 0xfe17a4e3, .+0xc ]
      Current function is SharedRuntime::resolve_sub_helper
        942 assert(caller_nm->is_method_handle_return(caller_frame.pc()), "must be MH call site");
      (dbx) call find(0xfbeab210)

      "Executing find"
      [CodeBlob (0xfbeab1c8)]
      Framesize: 71
      Runtime Stub (0xfbeab1c8): resolve_virtual_call
      Could not load hsdis-i386.so; library not loadable; PrintAssembly is disabled
      t@1 (l@1) stopped in _waitid at 0xfe17a4d7
      0xfe17a4d7: _waitid+0x0007: jae _waitid+0x13 [ 0xfe17a4e3, .+0xc ]
      Current function is SharedRuntime::resolve_sub_helper
        942 assert(caller_nm->is_method_handle_return(caller_frame.pc()), "must be MH call site");

            twisti Christian Thalinger (Inactive)
            jrose John Rose
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: