Changeset 14406


Ignore:
Timestamp:
Nov 6, 2010, 7:22:18 AM (9 years ago)
Author:
gb
Message:

Start to bootstrap a change which uses "normal" acode operators to represent
T and NIL, rather than semi-magic tokens *NX-T* and *NX-NIL*. (We want to
do displacing/destructive operations on acode forms, even those representing
T and NIL.) This will require more bootstrapping and new images soon.

In the x86 backend, don't "punt" variables in X862-SEQ-BIND if they're already
"punted". ("Punting" a variable that's bound to a simple expression and never
SETQed involves effectively replacing all references to it with references to
that simple expression.) Variable replacement/punting may happen in an earlier
pass, Real Soon Now.

Change the trunk's minor version number to 7, e.g., this is now 1.7-dev.

New images soon.

Location:
trunk/source
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/X86/x862.lisp

    r14374 r14406  
    15071507(defun x862-set-NARGS (seg n)
    15081508  (if (> n call-arguments-limit)
    1509     (error "~s exceeded." call-arguments-limit)
     1509    (error "~s exceeded." 'call-arguments-limit)
    15101510    (with-x86-local-vinsn-macros (seg)
    15111511      (! set-nargs n))))
     
    45414541            (if (and (not (x862-load-ea-p val))
    45424542                     (setq puntval (x862-puntable-binding-p var val)))
    4543               (progn
     4543              (unless (%ilogbitp $vbitpunted bits)
    45444544                (nx-set-var-bits var (%ilogior (%ilsl $vbitpunted 1) bits))
    45454545                (let* ((vtype (var-inittype var)))
  • trunk/source/compiler/nx.lisp

    r14369 r14406  
    2828  (require 'sort)    ; just calls '%sort-list-no-keys'
    2929  (require 'hash))
     30
    3031
    3132(%include "ccl:compiler;nx-basic.lisp")
     
    226227    (:lambda . style-warning)
    227228    (:format-error . style-warning)
    228     (:unused . style-warning)))
     229    (:unused . style-warning)
     230    (:type-conflict . style-warning)))
    229231
    230232
  • trunk/source/compiler/nx0.lisp

    r14375 r14406  
    6666
    6767(defvar *nx-lambdalist* (make-symbol "lambdalist"))
    68 (defvar *nx-nil* (list (make-symbol "nil")))
    69 (defvar *nx-t* (list (make-symbol "t")))
     68(defvar *nx-nil* (make-acode (%nx1-operator nil)))
     69(defvar *nx-t* (make-acode (%nx1-operator t)))
     70
     71(defun %nx-null (x)
     72  (or (eq x *nx-nil*)
     73      (if (acode-p x)
     74        (eql (acode-operator x)
     75             (%nx1-operator nil)))))
     76
     77(defun %nx-t (x)
     78  (or (eq x *nx-t*)
     79      (if (acode-p x)
     80        (eql (acode-operator x)
     81             (%nx1-operator t)))))
    7082
    7183(defparameter *nx-current-compiler-policy* (%default-compiler-policy))
     
    17621774(defun nx1-target-fixnump (form)
    17631775  (when (typep form 'integer)
    1764        (let* ((target (backend-target-arch *target-backend*)))
    1765          (and
    1766           (>= form (arch::target-most-negative-fixnum target))
    1767           (<= form (arch::target-most-positive-fixnum target))))))
     1776    (let* ((target (backend-target-arch *target-backend*)))
     1777      (and
     1778       (>= form (arch::target-most-negative-fixnum target))
     1779       (<= form (arch::target-most-positive-fixnum target))))))
    17681780
    17691781
    17701782(defun nx1-immediate (form)
     1783  #+notyet
     1784  (cond ((eq form t) (make-acode (%nx1-operator t)))
     1785        ((null form) (make-acode (%nx1-operator nil)))
     1786        ((nx1-target-fixnump form)
     1787         (make-acode (%nx1-operator fixnum) form))
     1788        (t (make-acode (%nx1-operator immediate) form)))
     1789  #-notyet
    17711790  (if (or (eq form t) (null form))
    17721791    (nx1-sysnode form)
    1773     (make-acode 
     1792    (make-acode
    17741793     (if (nx1-target-fixnump form)
    17751794       (%nx1-operator fixnum)
    1776         (%nx1-operator immediate))   ; Screw: chars
     1795       (%nx1-operator immediate))   ; Screw: chars
    17771796     form)))
    17781797
  • trunk/source/compiler/nxenv.lisp

    r14348 r14406  
    6060
    6161(defmacro nx-null (x)
    62  `(eq ,x *nx-nil*))
     62 `(%nx-null ,x))
    6363
    6464(defmacro nx-t (x)
    65  `(eq ,x *nx-t*))
     65 `(%nx-t ,x))
    6666
    6767(eval-when (:compile-toplevel :load-toplevel :execute)
     
    167167     (struct-set . 0)
    168168     (%aref1 . #.(logior operator-acode-subforms-mask operator-assignment-free-mask operator-single-valued-mask operator-side-effect-free-mask))
    169      (embedded-nlexit . 0)
    170      (embedded-conditional . 0)
     169     (nil . #.(logior operator-assignment-free-mask operator-single-valued-mask operator-side-effect-free-mask))
     170     (t . #.(logior operator-assignment-free-mask operator-single-valued-mask operator-side-effect-free-mask))
    171171     (%word-to-int . #.(logior operator-assignment-free-mask operator-single-valued-mask))
    172172     (%svref . #.(logior operator-acode-subforms-mask operator-assignment-free-mask operator-single-valued-mask))
  • trunk/source/level-1/version.lisp

    r13656 r14406  
    1919
    2020(defparameter *openmcl-major-version* 1)
    21 (defparameter *openmcl-minor-version* 6)
     21(defparameter *openmcl-minor-version* 7)
    2222(defparameter *openmcl-revision* "dev")
    2323;;; May be set by xload-level-0
Note: See TracChangeset for help on using the changeset viewer.