Lisp tags

Type tags embedded in pointers used in Common Lisp implementations.

Note: this is not yet verified to be completely correct.


Allegro CL

(32-bit)

...xx fixnum
	  

(64-bit)

...xxx fixnum
	  

Armed Bear Lisp

No type information in pointers.

CMUCL

...00 fixnum
..001 function
...10 other immediate
..011 list
..101 structure pointer
..111 other pointer
	  

Corman Lisp

......000 fixnum
......001 immediate
.00000001 character
......010 forwarding tag
.......11 short float
......100 cons
......101 uvector pointer
......110 uvector header
	  

CLISP

(varies)

...xxxxxxx type code
	  

ECL

...00 pointer
...01 fixnum
...10 character
	  

GCL

No type information in pointers.

Liquid CL

...00010110 character
	  

Lisp500 (not a full CL implementation)

00..00000 nil
....10000 fixnum
....11000 character
.......01 cons
.......10 arrays etc
.......11 strings etc
	  

"Arrays etc" include symbol, simple-vector, array, package, function, and instance. "Strings etc" include simple-string, double, simple-bit-vector, and file-stream.

LispWorks

Unknown.

MCL

Same as OpenMCL?

Movitz

...00 fixnum
..001 cons
..010 character
..101 nil
..110 other pointer
..111 symbol
	  

MusCL

...00 immediate
..000 fixnum
.0100 character
...01 cons
...10 record
...11 callable
	  

OpenMCL

...00 fixnum
..001 cons
..010 gvector header
..011 immediate
..101 nil
..110 pointer to uvector
..111 ivector header
	  

SBCL

...00 fixnum
..001 instance
...10 other immediate
..011 list
..101 function
..111 other pointer
	  

SCL

Unknown.


Last changed