[foreign-abi] On invokers
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Mon Oct 28 17:21:58 UTC 2019
Updated webrev
http://cr.openjdk.java.net/~mcimadamore/panama/programmableInvoker-sysv_v2/
Maurizio
On 28/10/2019 16:57, Maurizio Cimadamore wrote:
>
> On 28/10/2019 14:41, Jorn Vernee wrote:
>> Hi Maurizio,
>>
>> Thanks for doing the SysV implementation!
>>
>> Some comments on CallArranger:
>> - You are still using the WinABI layout constants in places; e.g.
>> `MemoryLayouts.WinABI.C_POINTER` when generating in memory return
>> bindings.
> Whoops - I will fix this.
>> - For upcalls with in memory returns there is a return binding for
>> the buffer address, but this is only needed on Windows, so it can be
>> removed for SysV.
> I'll take a look.
>>
>> I didn't review the layout classification, as I'm not familiar with
>> that code (I assume it's still the same any ways?)
>
> The classification is the same logic as we have currently - as I
> thought it would have been safer to start from there - and maybe
> cleanup the code later. So, what I did was to bridge the old
> classification code and make it work with the new API. I originally
> thought the classification logic could be made simpler - e.g. just
> return a TypeClass; but I later realized that the SysV is inherently
> more complex with structs than Win64 and Aarch64 - where we
> essentially can have only one register kind per struct; in SysV a
> struct can use multiple register kinds, which means we need to keep
> track of a more fine-grained classification. Probably there is some
> simplifying move lurking in there, but I thought it would be better to
> get the test passing and to push back the work, and then work on code
> quality issues.
>
> Cheers
> Maurizio
>
>>
>> Thanks,
>> Jorn
>>
>> On 26/10/2019 01:55, Maurizio Cimadamore wrote:
>>> Sorry for the delay.
>>>
>>> Here's a port of SysV of the programmable invoker. The code can be
>>> improved, but passes all tests (I fixed one test in
>>> TestUpcall/Downcall which was actually causing certain checks to be
>>> skipped, resulting in spurious passes, so I recommend that other
>>> patches are re-tested also). I also tried the support with a
>>> libclang port I have on top of the foreign-abi support, and
>>> everything worked reliably.
>>>
>>> Patch here:
>>>
>>> http://cr.openjdk.java.net/~mcimadamore/panama/programmableInvoker-sysv/
>>>
>>>
>>> Cheers
>>> Maurizio
>>>
>>> On 24/09/2019 10:42, Jorn Vernee wrote:
>>>> If you want to do a SysV port that would be much appreciated :). In
>>>> principle everything in the `programmable` package, except for
>>>> CallArranger is a part of the API, though there should be no need
>>>> to interact directly with BindingInterpreter and BufferLayout. So,
>>>> if you want to do a port the only thing you should have to do is
>>>> add a SysV version of CallArranger, (which I based on
>>>> CallingSequenceBuilderImpl, so that's probably a good place to
>>>> start) and then call that from SysVx64ABI.
More information about the panama-dev
mailing list