[foreign] RFR: Debug code for UniversalUpcallHandler

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Tue Dec 18 00:35:41 UTC 2018


Question: why is UniversalUpcallHandler::asString duplicating the 
CallSequence::asString code (instead of delegating to it)?

Maurizio

On 18/12/2018 00:16, Jorn Vernee wrote:
> Hi,
>
> I have one more piece of debugging code from my Windows porting 
> experience that I thought might be useful to have.
>
> This adds to the debugging code already in UniversalUpcallHandler to 
> also output the incoming and outgoing UpcallContext and Java 
> arguments/returns. e.g. this is for a qsort comparator call:
>
> ```
> === UpcallHandler.invoke ===
> CallingSequence: {
>   returnsInMemory: false
>   Classes:
>     STACK_ARGUMENT_SLOT
>     VECTOR_ARGUMENT_REGISTER
>     INTEGER_ARGUMENT_REGISTER
>       Storage { INTEGER_ARGUMENT_REGISTER[0] (size=8) } : arg0 @ 0x0
>       Storage { INTEGER_ARGUMENT_REGISTER[1] (size=8) } : arg1 @ 0x0
>     VECTOR_RETURN_REGISTER
>     INTEGER_RETURN_REGISTER
>       Storage { INTEGER_RETURN_REGISTER[0] (size=8) } : __retval @ 0x0
>     X87_RETURN_REGISTER
> }
>
> UpcallContext:
>   STACK_ARGUMENT_SLOT
>   VECTOR_ARGUMENT_REGISTER
>   INTEGER_ARGUMENT_REGISTER
>     b0 4f 57 cb a0 02 00 00
>     c4 4f 57 cb a0 02 00 00
>   VECTOR_RETURN_REGISTER
>   INTEGER_RETURN_REGISTER
>     73 9e 21 af a0 02 00 00
>   X87_RETURN_REGISTER
>
> Java arguments:
>   [{ BoundedPointer type: 
> jdk.internal.foreign.memory.LayoutTypeImpl at 61064425 region: { 
> BoundedMemoryRegion base=null, min=0x0 length=0x7fffffffffffffff 
> mode=READ_WRITE } offset=0x2a0cb574fb0 }, { BoundedPointer type: 
> jdk.internal.foreign.memory.LayoutTypeImpl at 61064425 region: { 
> BoundedMemoryRegion base=null, min=0x0 length=0x7fffffffffffffff 
> mode=READ_WRITE } offset=0x2a0cb574fc4 }]
>
> Java return:
>   1
>
> Returning:
>   UpcallContext:
>     STACK_ARGUMENT_SLOT
>     VECTOR_ARGUMENT_REGISTER
>     INTEGER_ARGUMENT_REGISTER
>       b0 4f 57 cb a0 02 00 00
>       c4 4f 57 cb a0 02 00 00
>     VECTOR_RETURN_REGISTER
>     INTEGER_RETURN_REGISTER
>       01 00 00 00 a0 02 00 00
>     X87_RETURN_REGISTER
> ```
>
> This behaviour is guarded by the 
> '-Djdk.internal.foreign.UpcallHandler.DEBUG=true' flag.
>
> Webrev: 
> http://cr.openjdk.java.net/~jvernee/panama/webrevs/univupcalldebug/webrev.03/
>
> Let me know what you think!
>
> Thanks,
> Jorn
>
> P.S. is it OK that I'm not making JIRA tickets for these?


More information about the panama-dev mailing list