RFR/RFC calling convention change for value types in compiled code
Tobias Hartmann
tobias.hartmann at oracle.com
Tue Dec 13 08:54:48 UTC 2016
Hi Roland,
On 13.12.2016 09:44, Roland Westrelin wrote:
> Here it is rebased:
>
> http://cr.openjdk.java.net/~roland/valhalla/callingconvention/webrev.02/
Looks good to me!
> I also had to make the fix below to collect all value type fields at
> a safepoint.
Good catch, I think I screwed that up when removing the double-loop.
Thanks,
Tobias
> Roland.
>
> diff --git a/src/share/vm/opto/valuetypenode.cpp b/src/share/vm/opto/valuetypenode.cpp
> --- a/src/share/vm/opto/valuetypenode.cpp
> +++ b/src/share/vm/opto/valuetypenode.cpp
> @@ -298,7 +298,7 @@
> void ValueTypeNode::make_scalar_in_safepoints(Compile* C) {
> const TypeValueTypePtr* res_type = TypeValueTypePtr::make(bottom_type()->isa_valuetype(), TypePtr::NotNull);
> ciValueKlass* vk = value_klass();
> - uint nfields = vk->field_count();
> + uint nfields = vk->flattened_field_count();
> for (DUIterator_Fast imax, i = fast_outs(imax); i < imax; i++) {
> Node* u = fast_out(i);
> if (u->is_SafePoint() && (!u->is_Call() || u->as_Call()->has_debug_use(this))) {
>
More information about the valhalla-dev
mailing list