X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Fobjdef.lisp;h=5156cad470b5dd0eb87e97aa25c2c676f5483661;hb=eafc55e040c41a5fc4215d364f2b2b3bbf545810;hp=e2303d2b0b3f267b6528195ea13370eb59d7454c;hpb=f143939b1dbaf38ebd4f92c851fbc4ecddf37af1;p=sbcl.git diff --git a/src/compiler/generic/objdef.lisp b/src/compiler/generic/objdef.lisp index e2303d2..5156cad 100644 --- a/src/compiler/generic/objdef.lisp +++ b/src/compiler/generic/objdef.lisp @@ -13,24 +13,24 @@ ;;;; the primitive objects themselves -(define-primitive-object (cons :lowtag list-pointer-type +(define-primitive-object (cons :lowtag list-pointer-lowtag :alloc-trans cons) (car :ref-trans car :set-trans sb!c::%rplaca :init :arg) (cdr :ref-trans cdr :set-trans sb!c::%rplacd :init :arg)) -(define-primitive-object (instance :lowtag instance-pointer-type - :header instance-header-type +(define-primitive-object (instance :lowtag instance-pointer-lowtag + :widetag instance-header-widetag :alloc-trans %make-instance) (slots :rest-p t)) -(define-primitive-object (bignum :lowtag other-pointer-type - :header bignum-type +(define-primitive-object (bignum :lowtag other-pointer-lowtag + :widetag bignum-widetag :alloc-trans sb!bignum::%allocate-bignum) (digits :rest-p t :c-type #!-alpha "long" #!+alpha "u32")) (define-primitive-object (ratio :type ratio - :lowtag other-pointer-type - :header ratio-type + :lowtag other-pointer-lowtag + :widetag ratio-widetag :alloc-trans %make-ratio) (numerator :type integer :ref-known (flushable movable) @@ -41,24 +41,24 @@ :ref-trans %denominator :init :arg)) -(define-primitive-object (single-float :lowtag other-pointer-type - :header single-float-type) +(define-primitive-object (single-float :lowtag other-pointer-lowtag + :widetag single-float-widetag) (value :c-type "float")) -(define-primitive-object (double-float :lowtag other-pointer-type - :header double-float-type) +(define-primitive-object (double-float :lowtag other-pointer-lowtag + :widetag double-float-widetag) (filler) (value :c-type "double" :length 2)) #!+long-float -(define-primitive-object (long-float :lowtag other-pointer-type - :header long-float-type) +(define-primitive-object (long-float :lowtag other-pointer-lowtag + :widetag long-float-widetag) #!+sparc (filler) (value :c-type "long double" :length #!+x86 3 #!+sparc 4)) (define-primitive-object (complex :type complex - :lowtag other-pointer-type - :header complex-type + :lowtag other-pointer-lowtag + :widetag complex-widetag :alloc-trans %make-complex) (real :type real :ref-known (flushable movable) @@ -69,8 +69,8 @@ :ref-trans %imagpart :init :arg)) -(define-primitive-object (array :lowtag other-pointer-type - :header t) +(define-primitive-object (array :lowtag other-pointer-lowtag + :widetag t) (fill-pointer :type index :ref-trans %array-fill-pointer :ref-known (flushable foldable) @@ -104,15 +104,15 @@ (dimensions :rest-p t)) (define-primitive-object (vector :type vector - :lowtag other-pointer-type - :header t) + :lowtag other-pointer-lowtag + :widetag t) (length :ref-trans sb!c::vector-length :type index) (data :rest-p t :c-type #!-alpha "unsigned long" #!+alpha "u32")) (define-primitive-object (code :type code-component - :lowtag other-pointer-type - :header t) + :lowtag other-pointer-lowtag + :widetag t) (code-size :type index :ref-known (flushable movable) :ref-trans %code-code-size) @@ -130,8 +130,8 @@ (constants :rest-p t)) (define-primitive-object (fdefn :type fdefn - :lowtag other-pointer-type - :header fdefn-type) + :lowtag other-pointer-lowtag + :widetag fdefn-widetag) (name :ref-trans fdefn-name) (fun :type (or function null) :ref-trans fdefn-fun) (raw-addr :c-type #!-alpha "char *" #!+alpha "u32")) @@ -139,8 +139,8 @@ ;;; a simple function (as opposed to hairier things like closures ;;; which are also subtypes of Common Lisp's FUNCTION type) (define-primitive-object (simple-fun :type function - :lowtag fun-pointer-type - :header simple-fun-header-type) + :lowtag fun-pointer-lowtag + :widetag simple-fun-header-widetag) #!-x86 (self :ref-trans %simple-fun-self :set-trans (setf %simple-fun-self)) #!+x86 (self @@ -176,19 +176,25 @@ :ref-trans %simple-fun-type :set-known (unsafe) :set-trans (setf %simple-fun-type)) + ;; the SB!C::DEBUG-FUN object corresponding to this object, or NIL for none + #+nil ; FIXME: doesn't work (gotcha, lowly maintenoid!) See notes on bug 137. + (debug-fun :ref-known (flushable) + :ref-trans %simple-fun-debug-fun + :set-known (unsafe) + :set-trans (setf %simple-fun-debug-fun)) (code :rest-p t :c-type "unsigned char")) -(define-primitive-object (return-pc :lowtag other-pointer-type :header t) +(define-primitive-object (return-pc :lowtag other-pointer-lowtag :widetag t) (return-point :c-type "unsigned char" :rest-p t)) -(define-primitive-object (closure :lowtag fun-pointer-type - :header closure-header-type) +(define-primitive-object (closure :lowtag fun-pointer-lowtag + :widetag closure-header-widetag) (fun :init :arg :ref-trans %closure-fun) (info :rest-p t)) (define-primitive-object (funcallable-instance - :lowtag fun-pointer-type - :header funcallable-instance-header-type + :lowtag fun-pointer-lowtag + :widetag funcallable-instance-header-widetag :alloc-trans %make-funcallable-instance) #!-x86 (fun @@ -218,8 +224,8 @@ :set-known (unsafe) :set-trans (setf %funcallable-instance-layout)) (info :rest-p t)) -(define-primitive-object (value-cell :lowtag other-pointer-type - :header value-cell-header-type +(define-primitive-object (value-cell :lowtag other-pointer-lowtag + :widetag value-cell-header-widetag :alloc-trans make-value-cell) (value :set-trans value-cell-set :set-known (unsafe) @@ -228,20 +234,20 @@ :init :arg)) #!+alpha -(define-primitive-object (sap :lowtag other-pointer-type - :header sap-type) +(define-primitive-object (sap :lowtag other-pointer-lowtag + :widetag sap-widetag) (padding) (pointer :c-type "char *" :length 2)) #!-alpha -(define-primitive-object (sap :lowtag other-pointer-type - :header sap-type) +(define-primitive-object (sap :lowtag other-pointer-lowtag + :widetag sap-widetag) (pointer :c-type "char *")) (define-primitive-object (weak-pointer :type weak-pointer - :lowtag other-pointer-type - :header weak-pointer-type + :lowtag other-pointer-lowtag + :widetag weak-pointer-widetag :alloc-trans make-weak-pointer) (value :ref-trans sb!c::%weak-pointer-value :ref-known (flushable) :init :arg) @@ -273,7 +279,7 @@ ;;; (For an explanation of this, see the comments at the definition of ;;; KLUDGE-NONDETERMINISTIC-CATCH-BLOCK-SIZE.) -(aver (= sb!vm::kludge-nondeterministic-catch-block-size catch-block-size)) +(aver (= kludge-nondeterministic-catch-block-size catch-block-size)) ;;;; symbols @@ -281,8 +287,8 @@ (defknown symbol-hash (symbol) (integer 0 #.*target-most-positive-fixnum*) (flushable movable)) -(define-primitive-object (symbol :lowtag other-pointer-type - :header symbol-header-type +(define-primitive-object (symbol :lowtag other-pointer-lowtag + :widetag symbol-header-widetag #!-x86 :alloc-trans #!-x86 make-symbol) (value :set-trans %set-symbol-value :init :unbound) @@ -296,22 +302,22 @@ :init :null)) (define-primitive-object (complex-single-float - :lowtag other-pointer-type - :header complex-single-float-type) + :lowtag other-pointer-lowtag + :widetag complex-single-float-widetag) (real :c-type "float") (imag :c-type "float")) (define-primitive-object (complex-double-float - :lowtag other-pointer-type - :header complex-double-float-type) + :lowtag other-pointer-lowtag + :widetag complex-double-float-widetag) (filler) (real :c-type "double" :length 2) (imag :c-type "double" :length 2)) #!+long-float (define-primitive-object (complex-long-float - :lowtag other-pointer-type - :header complex-long-float-type) + :lowtag other-pointer-lowtag + :widetag complex-long-float-widetag) #!+sparc (filler) (real :c-type "long double" :length #!+x86 3 #!+sparc 4) (imag :c-type "long double" :length #!+x86 3 #!+sparc 4))