[foreign-abi] RFR 8237358: Split the DEREFERENCE binding operator into a load/store + move

Jorn Vernee jorn.vernee at oracle.com
Tue Jan 28 13:35:30 UTC 2020


Hi,

Please review the following patch which splits the DEREFERENCE binding 
operator into a load/store + move. This simplifies what the binding 
operator does itself, but surfaces the need for a stack of values in the 
binding interpreter rather than a single object. We also need a DUP 
operator now, for instance in the case where a struct is being passed to 
an upcall, we get ALLOC_BUFFER, DUP, MOVE, DEREFERENCE where the buffer 
is left as last value on the stack to be passed to the target method.

However, we've found that splitting DEREFERENCE makes later 
intrinsification much simpler.

Bug: https://bugs.openjdk.java.net/browse/JDK-8237358
Webrev: 
http://cr.openjdk.java.net/~jvernee/panama/webrevs/8237358/webrev.00/

I've tested  this on Windows and Linux (WSL). I also have a binding 
recipe verifier which I ran this through. Will submit that in the next 
patch. (But, I thought it would be best to get this API change out of 
the way before adding more tests, to avoid having to update them).

Thanks,
Jorn



More information about the panama-dev mailing list