Earlier quoted context omitted.
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)
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).