30.03.18 09:28, INADA Naoki пише:
As far as I know, most amd64 and arm64 systems use only 48bit address spaces. (except )
It means there are some chance to compact some data structures. I point two examples below.
My question is; can we use 48bit pointer safely? It depends on CPU architecture & OS memory map. Maybe, configure option which is available on only (amd64, amd64) * (Linux, Windows, macOS)?
If the size be the main problem, we could use these 8 bit for encoding the type and the size of the value for some types, and even encode the value itself for some types in other 48 bits. For example 48 bit integers, 0-, 1- and 2-character Unicode strings, ASCII strings up to 6 characters (and even longer if use base 64 encodings for ASCII identifiers), singletons like None, True, False, Ellipsis, NotImplementes could be encoded in 64 bit word without using additional memory.
But this would significantly complicate and slow down the code.