4 ms·
I'm pretty sure it was already done in the Symbolics Lisp Machine.
by eudox 12y ago
I'm pretty sure it was already done in the Symbolics Lisp Machine.
- wes-exp 12y agoYet again in the Lisp world, the past is more futuristic than the present.
- rjsw 12y agoAlso in the LMI K-machine [1]. I got part way through building type checking hardware to use with Franz Lisp on 68k CPUs. Franz Lisp allocated objects of a single type in each page and the 68k had function code pins that meant you could tell whether a bus read was for data or instruction fetch, the idea was that I would modify the compiler to read a latched type value just after a Lisp object had been read into a register. [1] http://fare.tunes.org/tmp/emergent/kmachine.htm http://fare.tunes.org/tmp/emergent/kmachine.htm
- nealabq 12y agoAs I recall (and I may have some of this wrong) the Symbolics 3600 machines used a few extra bits to tag types like 32bit_int, 32bit_float, and pointer_to_object. And when operating on integers, the cpu would assume it had 32bit_ints and would raise a low-level signal to interrupt the operation if the operands were something else (like bignums). There were also extra bits in each word for cdr-coding lists, which was a way to internally implement a list as an array. There might have also been an extra bit for GC, maybe for mark-and-sweep.