Eryk Sun added the comment:

Perhaps it should instead use two specific flags, TYPEFLAG_HASBITFIELD and 
TYPEFLAG_HASUNION, which are propagated unconditionally from the base class and 
fields. As a base case, a union itself is flagged TYPEFLAG_HASUNION. Arrays are 
unrolled on X86_64 only if neither flag is present and the size is 16 bytes or 
less.

If ConvParam or converters_from_argtypes see either flag on X86_64 and the size 
is 16 bytes or less, then they raise an exception. As before, this rejects some 
call signatures that would actually succeed. We're not accounting for the case 
in which the limited number of registers forces an argument to be passed on the 
stack even though it's small enough to be passed in registers.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue22273>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to