[foreign] RFR: Pointer (and other) API refresh
Sundararajan Athijegannathan
sundararajan.athijegannathan at oracle.com
Thu May 17 14:48:11 UTC 2018
API javadoc issues:
* Scope.allocate method
+ * @return a array to the newly allocated memory region.
should be "@return a Pointer ...."
+ * @return a array to the first element of the array.
should be "@return a pointer to the first ..."
* Scope.allocateArray method
+ * @return a array to the first element of the array.
should be "@return an array"
* Scope.allocateStruct method
+ * @return a array to the newly allocated memory region.
should be "@return a new Struct instance
* LayoutType.setter method
+ * @return a 'getter' method handle.
should be "@return a 'setter' method handle
* Pointer.offset method
+ * @return a new array array to the new address.
should be "@return a new Pointer ..."
* Pointer.elements() method
+ * @return a stream array to the first array element.
should be "@return a stream of Pointers..."
-Sundar
On 17/05/18, 7:53 PM, Sundararajan Athijegannathan wrote:
> Quick comments (still reviewing).
>
> * New sources like NativeTypes.java, Array.java (all?) miss copyright
> header.
>
> * Copyright header of LayoutType.java is removed!
>
> -Sundar
>
> On 17/05/18, 7:06 PM, Maurizio Cimadamore wrote:
>> Hi,
>> this change updates most of the public APIs to reflect the changes
>> discussed in the document [1].
>>
>> There are many changes here, let's go one by one:
>>
>> * Pointer API has been updated and the Reference class has been removed
>>
>> * the top type for native structs used to be Reference, now is Struct
>>
>> * the Resource interface has been parameterized
>>
>> * few changes to the Scope API - and also consolidated the Scope
>> implementation in order to remove code duplication between HeapScope
>> and NativeScope
>>
>> * Refresh of LayoutType - as per [1], the new version of LayoutType
>> is MH-based; these MH handles are used in codegen (see changes in
>> HeaderImplGenerator and StructImplGenerator)
>>
>> * Added NativeTypes public class to add useful LayoutType constants
>>
>> * The removal of the Reference class also required some jextract
>> tweak - more specifically, the xyz$ref methods have been replaced by
>> xyz$ptr method (which return pointer of given field). This is also
>> consistent with [1].
>>
>> * The Qsort test has been updated, fixed and un-ignored
>>
>> * most of the public API now have full javadoc (yayy!)
>>
>> While this change greatly improves the public API, much remains to be
>> done internally; I counter 5 (!!) different ways in which Java values
>> are 'loaded/stored' from/to memory/registers:
>>
>> 1) regular struct access
>> 2) array struct access
>> 3) global variable access
>> 4) function invocation
>> 5) callback invocation
>>
>> Some consolidation is badly needed here - as in each of these places,
>> the system will perform the task in a slightly different way; for
>> instance one Java carrier might be supported in (1), but not in (3).
>> Also in some places we depend on the layout (e.g. global vars and
>> struct access) while in other places (function call and callbacks) we
>> infer layouts from Java signatures, which is IMHO a bad smell (e.g. a
>> function that return a Pointer<Character> doesn't necessarily means
>> it's returning a pointer to a 16-bit value).
>>
>> Much more work is needed in the impl internals, in order to reduce
>> duplication between paths and improve regularity.
>>
>> Webrev here:
>>
>> http://cr.openjdk.java.net/~mcimadamore/panama/api-refresh/
>>
>> [1] -
>> http://cr.openjdk.java.net/~mcimadamore/panama/panama-binder-v3.html
>>
More information about the panama-dev
mailing list