On 2017-11-03 14:17, Alan Bateman wrote:
On 03/11/2017 08:11, Christoph Dreis wrote:
Hi John,

this has a bigger impact on the overall footprint of Method/Executable objects. What are your thoughts on this?
The footprint is probably about the same.  Small List.of values
do not contain arrays, and may be smaller than arrays with the
same number of elements, since they do not have a length field.
And, indeed, methods typically have a small number of parameters.
Ah, so you would remove the current array field completely and replace it with the immutable List, right?
In that case I said nothing. I was thinking of a field on top.

The VM creates Method objects and sets the fields, including parameterTypes, directly so I think removing it would require more work than it initially looks. If you add a field then it does increase the footprint a bit. Alternatively, have the method could use a ImmutableCollection.ListN like implementation that is backed by the array and doesn't scan it for nulls at create time, this wouldn't be completely allocation free of course.

While it would be pretty sweet if we could train the VM to use List.of as appropriate (might be applicable in a number of places where we want to communicate immutable array-like data from the VM), it should be pretty straightforward to change the interaction so that the VM calls a private method that takes the parameter array and turns it into a List.

My guess is that the superfluous null checking will be hardly measurable even in micros.

In any case, the proposed API does look reasonable although it deviations from the usual conventions in java.lang.reflect.

I agree the getParameterType(index) method should still up for consideration if we can't act on the more elegant proposal to turn things into Lists in a reasonable time-frame.

/Claes

Reply via email to