0.6.7.22: removed CVS dollar-Header-dollar tags from sources
[sbcl.git] / src / compiler / generic / early-objdef.lisp
1 ;;;; type-based constants
2
3 ;;;; This software is part of the SBCL system. See the README file for
4 ;;;; more information.
5 ;;;;
6 ;;;; This software is derived from the CMU CL system, which was
7 ;;;; written at Carnegie Mellon University and released into the
8 ;;;; public domain. The software is in the public domain and is
9 ;;;; provided with absolutely no warranty. See the COPYING and CREDITS
10 ;;;; files for more information.
11
12 (in-package "SB!VM")
13
14 ;;; FIXME: It's clever using :SUFFIX -TYPE for these things, but it's
15 ;;; a pain for people just learning to find their way around the code
16 ;;; who want to figure out where things like EVEN-FIXNUM type are
17 ;;; defined. Remove the :SUFFIXes and just expand out the full names.
18
19 ;;; the main types. These types are represented by the low three bits of the
20 ;;; pointer or immeditate object.
21 (defenum (:suffix -type)
22   even-fixnum
23   function-pointer
24   other-immediate-0
25   list-pointer
26   odd-fixnum
27   instance-pointer
28   other-immediate-1
29   other-pointer)
30
31 ;;; the heap types. Each of these types is in the header of objects in
32 ;;; the heap.
33 (defenum (:suffix -type
34           :start (+ (ash 1 lowtag-bits) other-immediate-0-type)
35           :step (ash 1 (1- lowtag-bits)))
36   bignum
37   ratio
38   single-float
39   double-float
40   #!+long-float long-float
41   complex
42   complex-single-float
43   complex-double-float
44   #!+long-float complex-long-float
45
46   simple-array
47   simple-string
48   simple-bit-vector
49   simple-vector
50   simple-array-unsigned-byte-2
51   simple-array-unsigned-byte-4
52   simple-array-unsigned-byte-8
53   simple-array-unsigned-byte-16
54   simple-array-unsigned-byte-32
55   simple-array-signed-byte-8
56   simple-array-signed-byte-16
57   simple-array-signed-byte-30
58   simple-array-signed-byte-32
59   simple-array-single-float
60   simple-array-double-float
61   #!+long-float simple-array-long-float
62   simple-array-complex-single-float
63   simple-array-complex-double-float
64   #!+long-float simple-array-complex-long-float
65   complex-string
66   complex-bit-vector
67   complex-vector
68   complex-array
69
70   code-header
71   function-header
72   closure-header
73   funcallable-instance-header
74   byte-code-function
75   byte-code-closure
76   closure-function-header
77   #!-gengc return-pc-header
78   #!+gengc forwarding-pointer
79   value-cell-header
80   symbol-header
81   base-char
82   sap
83   unbound-marker
84   weak-pointer
85   instance-header
86   fdefn
87   )
88
89 ;;; the different vector subtypes
90 (defenum (:prefix vector- :suffix -subtype)
91   normal
92   unused
93   valid-hashing
94   must-rehash)