Ignore:
Timestamp:
Jul 9, 2010, 11:46:08 PM (9 years ago)
Author:
gb
Message:

The point of the checkpoint in the last commit: change nil_value on ARM
from #x10000005 to #x04000001. That obviously means that we invert
arm::fulltag-cons and arm::fulltag-nil, and change a few things (the link-
inverting marker, the LISTP compiler-macro) that were more sensitive to
that than they probably should have been.

OTOH, we get ~192M more address space to play with.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/arm/compiler/ARM/arm-arch.lisp

    r13926 r13948  
    528528(ccl::defenum ()
    529529  fulltag-even-fixnum                   ; I suppose EVENP/ODDP might care; nothing else does.
    530   fulltag-cons                          ; a real (non-null) cons.  Shares TAG with fulltag-nil.
     530  fulltag-nil                           ; NIL and nothing but.  (Note that there's still a hidden NILSYM.)
    531531  fulltag-nodeheader                    ; Header of heap-allocated object that contains lisp-object pointers
    532532  fulltag-imm                           ; a "real" immediate object.  Shares TAG with fulltag-immheader.
    533533  fulltag-odd-fixnum                    ;
    534   fulltag-nil                           ; NIL and nothing but.  (Note that there's still a hidden NILSYM.)
     534  fulltag-cons                          ; a real (non-null) cons.  Shares TAG with fulltag-nil.
    535535  fulltag-misc                          ; Pointer "real" tag-misc object.  Shares TAG with fulltag-nodeheader.
    536536  fulltag-immheader                     ; Header of heap-allocated object that contains unboxed data.
     
    543543
    544544
    545 (defconstant canonical-nil-value (+ #x10000000 fulltag-nil))
     545(defconstant canonical-nil-value (+ #x04000000 fulltag-nil))
    546546(defconstant nil-value canonical-nil-value)
    547547
    548548;;; T is almost adjacent to NIL: since NIL is a misaligned CONS, it spans
    549549;;; two doublewords.  The arithmetic difference between T and NIL is
    550 ;;; such that the least-significant bit and exactly one other bit is
    551 ;;; set in the result.
    552 
    553 (defconstant t-offset (+ dnode-size (- dnode-size fulltag-nil) fulltag-misc))
     550;;; not inherently interesting; it should be possible to express that
     551;;; difference as an ARM constant, but that's the only real constraint.
     552
     553(defconstant t-offset (+ (- dnode-size fulltag-nil) fulltag-misc))
    554554
    555555
     
    674674;;; too many tricks to be played with predecrement/preincrement addressing.
    675675;;; Keep them in the confusing MCL 3.0 order, to avoid confusion.
    676 (define-lisp-object cons tag-list
     676(define-lisp-object cons fulltag-cons
    677677  cdr
    678678  car)
     
    936936  (let* ((pos (position sym arm::*arm-kernel-globals* :test #'string=)))
    937937    (if pos
    938       (- (* (1+ pos) 4))
     938      (- (* (+ 3 pos) 4))
    939939      (error "Unknown kernel global : ~s ." sym))))
    940940
     
    942942  (let* ((pos (position sym arm::*arm-kernel-globals* :test #'string=)))
    943943    (if pos
    944       (- (* (1+ pos) 4))
     944      (- (* (+ 3 pos) 4))
    945945      (error "Unknown kernel global : ~s ." sym))))
    946946
Note: See TracChangeset for help on using the changeset viewer.