Tim Peters <t...@python.org> added the comment:

Can't really know without a system to try it on, but my best guess is that 
these asserts are the only thing that will fail with tagging enabled. The 
obvious "fix" is indeed just to skip them on a platform with tagging enabled. 
They're meant as a sanity check that only 48 bits are really used for 
addresses. Which remains true even when tagging is enabled - the tag bits are 
part of the _pointer_ on AMD, but not part of the address.

Taking tagging seriously instead would be a significant project, relying on 
platform-specific instructions. For a start, obmalloc would have to generate a 
random 4-bit integer for each object it returns, plug that into 4 specific 
"high order" bits of the pointer it returns, and tell the OS to associate those 
4 bits with each 16-byte chunk of the object's space.  mmap()-like calls would 
also need to be changed, to tell the OS to enable tag checking on the memory 
slice returned.

While caching may or may not speed things up, I'm not seeing how it _could_ 
help move to 64-bit addresses.  As is, the tree needs 8 bytes of bottom-node 
space for each arena in use, and that's independent of how many address bits 
there are (it only depends on the arena granularity).  I think that could be 
cut by a factor of 4 by keeping track of arena pool (instead of byte) 
boundaries in the bottom nodes, meaning that, with the _current_ settings, we'd 
only need to keep track of the 64=2^6 possible pool addresses in an arena, 
instead of the 2^20 possible byte addresses.  6 bits fits fine in a signed 
8-bit int (but we need a 32-bit int now to hold the 2^20 possible byte 
addresses in an arena).

So the clearest way to ease the space burden of keeping track of truly 
expansive address spaces is to boost arena size. And, if the tree bottom 
changed to keep track of pool (instead of byte) addresses, possibly boost pool 
size too.

----------

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

Reply via email to