Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I assume so. If the integers fit in 31 or 63 bits, depending on your architecture, they are inlined in the pointer.


OK (because that's not the case in CPython, I think)


Yeah, I too am pretty sure that CPython does not inline integers in the pointers. And from a quick glance at the source code I saw nothing such.

Inlining integers in pointers by shifting up and adding 1 is a quite common trick though and I have seen it in more programming language implementations than MRI. I think at least some Prolog implementation and older versions of Spidermonkey (newer versions use a similar trick with doubles).


Inlining integers in pointers by shifting up and adding 1 is a quite common trick though and I have seen it in more programming language implementations than MRI

This trick was already used in Smalltalk-80, btw. A more recent variant of this is NaN tagging, made popular by LuaJIT.


> Inlining integers in pointers by shifting up and adding 1 is a quite common trick though and I have seen it in more programming language implementations than MRI.

Yeah, I know about it, I just did not think MRI had bothered with it anymore than CPython.


false, true, nil, Symbol's and Fixnum's are all special cased with typetags in MRI.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: