Christian Heimes added the comment:

I'm a bit worried that the patch might slow down the general case of SipHash24. 
When I was working on SipHash24 I made sure that the general case in 
PyBytes_Object and PyUnicode_Object are fast and always aligned. Do all 
compilers optimize that case? For MSVC we still have a specialized Py_MEMCPY() 
variant in pyports.h.

I can see three more ways to fix the issue:

1) Have two loops, one for the aligned case with memcpy() and one for the 
unaligned case w/o memcpy()
2) Add a special variant of _le64toh() for PY_LITTLE_ENDIAN on ARM and use the 
current variant on X86_64.
3) Make it illegal to call _Py_HashBytes() with non-aligned pointer and require 
the caller to provide an aligned buffer. It's easy for datetime but requires an 
extra buffer memoryview. Memoryview already uses a buffer for all but 
single-strided C contiguous views. We can easily add another case for 
non-aligned buffers.

----------
stage:  -> needs patch
type:  -> crash

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

Reply via email to