]> git.eshelyaron.com Git - emacs.git/commitdiff
; * src/lisp.h: Add Lisp_Object tagging scheme overview
authorMattias EngdegÄrd <mattiase@acm.org>
Wed, 21 Feb 2024 14:22:21 +0000 (15:22 +0100)
committerEshel Yaron <me@eshelyaron.com>
Wed, 28 Feb 2024 17:37:52 +0000 (18:37 +0100)
(cherry picked from commit a2eb123fb606af2a62ad6d0d0162255d7f0601e1)

src/lisp.h

index db053ba9f70ea7af149d8b473d519007d0474971..b02466390f14208156908c6dd3f39b3599cc1dba 100644 (file)
@@ -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.  */