RFR(S): 8182645: [MVT] VM crashes with -XX:+VerifyOops and -XX:+VerifyStack

Tobias Hartmann tobias.hartmann at oracle.com
Wed Jun 21 11:35:43 UTC 2017


Hi,

please review the following patch:
https://bugs.openjdk.java.net/browse/JDK-8182645
http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.22/

If ValueTypeTestBench is executed with -XX:+VerifyStack the VM crashes with "assert(callee != __null) failed: must have attached method". This is because signatures like "([[[Qcompiler/valhalla/valuetypes/MyValue1;[J)V" are confused with a value type argument. I fixed the signature scanning code in CompiledMethod::preserve_callee_argument_oops() and SharedRuntime::find_callee_arguments(). I also noticed that VerifyStack serves the same purpose as FullGCALotWithValueTypes which I introduced to trigger stack scanning - so I removed it.

If ValueTypeTestBench is executed with -XX:+VerifyOops we crash during adapter verification with "assert(shared_entry->compare_code(buf->code_begin(), buffer.insts_size())) failed: code must match". This is because we now emit MacroAssembler::store_heap_oop()-> MacroAssembler::verify_oop() in the c2i/i2c adapters which may confuse the verification code due to constant string addresses that differ.

Thanks,
Tobias


More information about the valhalla-dev mailing list