Lots of java/foreign testd crash when run in -Xint. For example, this one:
$ CONF=linux-x86_64-server-fastdebug make run-test TEST=java/foreign/TestDowncall.java TEST_VM_OPTS="-Xint"
STDOUT:
STDERR:
TEST RESULT: Failed. Unexpected exit from test [exit code: 139]
--------------------------------------------------
The crash produces no hs_err, and debugging is quite complicated, but I think the crash is somewhere within C2I adapter for LJJL shape.
AHE@0x00007fb9a0486750: 0xbbebeb i2c: 0x00007fb995284ee0 c2i: 0x00007fb995284fcc c2iUV: 0x00007fb995284f96 c2iNCI: 0x00007fb995285009
i2c argument handler #218 for: LJJL 0xbbebeb (606 bytes generated)
c2i argument handler starts at 0x7fb995284fcc
  0x00007fb9952850f6:   popfq  
  0x00007fb9952850f7:   mov    %r13,%rsp
  0x00007fb9952850fa:   pop    %rax
  0x00007fb9952850fb:   mov    %rsp,%r13
  0x00007fb9952850fe:   sub    $0x40,%rsp
  0x00007fb995285102:   mov    %rax,(%rsp) ;<---- somewhere here
  0x00007fb995285106:   mov    %rsi,0x30(%rsp)
  0x00007fb99528510b:   movabs $0xdeadffffdeadaaab,%rax
  0x00007fb995285115:   mov    %rax,0x28(%rsp)
Reading the code, I stumbled upon:
address MethodHandles::generate_method_handle_interpreter_entry(MacroAssembler* _masm,
                                                                vmIntrinsics::ID iid) {
...
  // No need in interpreter entry for linkToNative for now.
  // Interpreter calls compiled entry through i2c.
  if (iid == vmIntrinsics::_linkToNative) {
    __ hlt();
    return NULL;
  }
...
}
I wonder if that is too optimistic when no compilers present?