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?