2 ms·
Apple is using some of the bits in a normal 64 bit pointer for other purposes, something that's been done in production Lisps for a long time, no later than whe
by hga 12y ago
Apple is using some of the bits in a normal 64 bit pointer for other purposes, something that's been done in production Lisps for a long time, no later than when the Vax appeared with its byte addressed pointers. E.g. a valid 32 bit pointer has the 2 LSB bits as zero, allowing for 3 other values and all sorts of tricks with them.
By comparison, the CADR Lisp machine had a 32 bit word size, with 8 bits used for tags, and the remaining 24 bits used for immediate data or as a word addressed pointer. The lowRISC project proposes to add tag bits taken from other regions of memory that are fetched into a tag cache, and promoted as additional bits in the L2 and L1 caches and above. So starting with the L2 cache words will be internally 66 bits long.
- cmrdporcupine 12y agoI'm baffled why Apple's refcounting implementation doesn't do cycle collection. There are a few good algorithms for doing this for many years now. I implemented this one in C++ once: http://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon01Concurrent.pdf http://researcher.watson.ibm.com/researcher/files/us-bacon/B...