From: Mattias EngdegÄrd Date: Wed, 21 Feb 2024 14:22:21 +0000 (+0100) Subject: ; * src/lisp.h: Add Lisp_Object tagging scheme overview X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=268a4eb1638af4e6ce122123a775804395a8eeba;p=emacs.git ; * src/lisp.h: Add Lisp_Object tagging scheme overview (cherry picked from commit a2eb123fb606af2a62ad6d0d0162255d7f0601e1) --- diff --git a/src/lisp.h b/src/lisp.h index db053ba9f70..b02466390f1 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -478,6 +478,16 @@ typedef EMACS_INT Lisp_Word; #endif +/* Lisp_Object tagging scheme: + Tag location + Upper bits Lower bits Type Payload + 000....... .......000 symbol offset from lispsym to struct Lisp_Symbol + 001....... .......001 unused + 01........ ........10 fixnum signed integer of FIXNUM_BITS + 110....... .......011 cons pointer to struct Lisp_Cons + 100....... .......100 string pointer to struct Lisp_String + 101....... .......101 vectorlike pointer to union vectorlike_header + 111....... .......111 float pointer to struct Lisp_Float */ enum Lisp_Type { /* Symbol. XSYMBOL (object) points to a struct Lisp_Symbol. */