C2 support for reference fields in value types

Tobias Hartmann tobias.hartmann at oracle.com
Thu May 4 11:56:20 UTC 2017

Hi Roland,

I refactored the changes in nmethod.cpp and fixed some other issues. JPRT now passes:

I still need to disable the assert in ConstantPool::klass_at_impl(). In the long term, we need to find a better solution to get to the extended signature without (re-)resolving the call site in nmethod::preserve_callee_argument_oops(). I would like to push this version and then work on fixing the remaining issues.

On 27.04.2017 17:57, Roland Westrelin wrote:
> Instead of indirecting through the adapter to get the extended
> signature, could you instead:
> - in gen_c2i_adapter() rather than build an OopMap with all registers,
> construct one that only contains live oops
> - then make the gc code use that oop map, maybe by not going through
> nmethod::preserve_callee_argument_oops() at all?

I think that's not sufficient as we may not have an adapter frame on the stack but block while resolving the call in SharedRuntime::resolve_virtual_call_C().


More information about the valhalla-dev mailing list