[foreign] RFR: Debug code for UniversalUpcallHandler
Jorn Vernee
jbvernee at xs4all.nl
Tue Dec 18 00:45:37 UTC 2018
They are pretty similar, but CallingSequence::asString doesn't actually
print out the values of the arguments, it's more of a "which argument
goes where" type of deal.
UpcallContext actually holds the values of the arguments, so in the case
of UpcallContext::asString we dump the actual value of the arguments.
Does that make sense?
Jorn
Maurizio Cimadamore schreef op 2018-12-18 01:35:
> 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