RFR: 8237359: Clean up Binding
Jorn Vernee
jvernee at openjdk.java.net
Mon Feb 10 15:25:41 UTC 2020
On Mon, 10 Feb 2020 15:03:34 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
> Continuation of: https://mail.openjdk.java.net/pipermail/panama-dev/2020-February/007417.html
>
>> Hi,
>>
>> Please review the following patch that does a few cleanups of the
>> Binding class implementation:
>> - Adds javadoc
>> - Uses static factory methods instead of raw constructors. This allows
>> returning singletons for some of the operators for instance.
>> - Constructing a COPY_BUFFER binding now requires a MemoryLayout,
>> instead of a separate size & alignment. This was easier given the use-cases.
>> - Binding.AllocateBuffer renamed to Binding.Allocate (since we already
>> had Copy as well).
>> - BoxAddress renamed to ConvertAddress, as a more general name to
>> describe the boxing & unboxing that can occur. Suggested by Maurizio.
>>
>> Webrev:
>> http://cr.openjdk.java.net/~jvernee/panama/webrevs/cleanup_bindings/webrev.00/
>> Bugs: https://bugs.openjdk.java.net/browse/JDK-8237359,
>> https://bugs.openjdk.java.net/browse/JDK-8238227,
>> https://bugs.openjdk.java.net/browse/JDK-8238235
>>
>> This patch take care of several smaller issues all at once. It applies
>> on top of the JDK-8237360 patch.
>>
>> Thanks,
>> Jorn
Comment from @mcimadamore on the old mail thread:
> > - Constructing a COPY_BUFFER binding now requires a MemoryLayout, instead of a separate size & alignment. This was easier given the use-cases.
>
> Uhmmm - I'd agree with using a layoutm but patch says this:
>
> ```
> public AllocateBuffer(MemoryLayout layout) {
> + private Allocate(long size, long alignment) {
> super(ALLOC_BUFFER_TAG);
> - this.size = layout.byteSize();
> - this.alignment = layout.byteAlignment();
> + this.size = size;
> + this.alignment = alignment;
> }
> ```
>
> Seems like you went opposite way - e.g. from layout to size/alignment?
I like to keep my constuctors more 1-to-1 with the fields of the class, and handle any argument conversions in a static factory method, so that is what I've done here. The factory methods `allocate` and `copy` do take a `MemoryLayout`
-------------
PR: https://git.openjdk.java.net/panama-foreign/pull/12
More information about the panama-dev
mailing list