RFR(L): 8185265 [MVT] improve performance of return of value types with new calling convention
Tobias Hartmann
tobias.hartmann at oracle.com
Wed Aug 9 12:16:17 UTC 2017
Hi Roland,
On 09.08.2017 13:48, Roland Westrelin wrote:
>> http://cr.openjdk.java.net/~roland/8185265/webrev.00/
>
> The following patch on top of the webrev above is needed to not break
> the 32 bit build.
This looks reasonable.
Thanks,
Tobias
> --- a/src/cpu/x86/vm/sharedRuntime_x86_32.cpp
> +++ b/src/cpu/x86/vm/sharedRuntime_x86_32.cpp
> @@ -3147,6 +3147,6 @@
> }
>
> BufferedValueTypeBlob* SharedRuntime::generate_buffered_value_type_adapter(const ValueKlass* vk) {
> - ShouldNotReachHere();
> + Unimplemented();
> return NULL;
> }
> diff --git a/src/share/vm/oops/valueKlass.cpp b/src/share/vm/oops/valueKlass.cpp
> --- a/src/share/vm/oops/valueKlass.cpp
> +++ b/src/share/vm/oops/valueKlass.cpp
> @@ -344,6 +344,7 @@
> }
>
> void ValueKlass::initialize_calling_convention() {
> + if (ValueTypeReturnedAsFields || ValueTypePassFieldsAsArgs) {
> Thread* THREAD = Thread::current();
> assert(!HAS_PENDING_EXCEPTION, "should have no exception");
> ResourceMark rm;
> @@ -355,6 +356,7 @@
> extended_sig->at_put(i, sig_vk.at(i));
> }
>
> + if (ValueTypeReturnedAsFields) {
> BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType, nb_fields);
> sig_bt[0] = T_METADATA;
> SigEntry::fill_sig_bt(sig_vk, sig_bt+1, nb_fields-1, true);
> @@ -373,6 +375,8 @@
> *((address*)adr_unpack_handler()) = buffered_blob->unpack_fields();
> assert(CodeCache::find_blob(pack_handler()) == buffered_blob, "lost track of blob");
> }
> + }
> + }
> assert(vtable_length() == 0, "a value klass with a vtable?");
> }
>
>
More information about the valhalla-dev
mailing list