[Openmcl-cvs-notifications] r14406 - in /trunk/source: compiler/X86/x862.lisp compiler/nx.lisp compiler/nx0.lisp compiler/nxenv.lisp level-1/version.lisp

gb at clozure.com gb at clozure.com
Sat Nov 6 02:22:18 CDT 2010


Author: gb
Date: Sat Nov  6 02:22:18 2010
New Revision: 14406

Log:
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 alre=
ady
"punted".  ("Punting" a variable that's bound to a simple expression and ne=
ver
SETQed involves effectively replacing all references to it with references =
to
that simple expression.)  Variable replacement/punting may happen in an ear=
lier
pass, Real Soon Now.


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

New images soon.

Modified:
    trunk/source/compiler/X86/x862.lisp
    trunk/source/compiler/nx.lisp
    trunk/source/compiler/nx0.lisp
    trunk/source/compiler/nxenv.lisp
    trunk/source/level-1/version.lisp

Modified: trunk/source/compiler/X86/x862.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/X86/x862.lisp (original)
+++ trunk/source/compiler/X86/x862.lisp Sat Nov  6 02:22:18 2010
@@ -1506,7 +1506,7 @@
 =

 (defun x862-set-NARGS (seg n)
   (if (> n call-arguments-limit)
-    (error "~s exceeded." call-arguments-limit)
+    (error "~s exceeded." 'call-arguments-limit)
     (with-x86-local-vinsn-macros (seg)
       (! set-nargs n))))
 =

@@ -4540,7 +4540,7 @@
             (declare (inline x862-puntable-binding-p))
             (if (and (not (x862-load-ea-p val))
                      (setq puntval (x862-puntable-binding-p var val)))
-              (progn
+              (unless (%ilogbitp $vbitpunted bits)
                 (nx-set-var-bits var (%ilogior (%ilsl $vbitpunted 1) bits))
                 (let* ((vtype (var-inittype var)))
                   (when (and vtype (not (eq t vtype)))

Modified: trunk/source/compiler/nx.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/nx.lisp (original)
+++ trunk/source/compiler/nx.lisp Sat Nov  6 02:22:18 2010
@@ -27,6 +27,7 @@
   (require 'numbers) ; just calls 'logcount' and 'integer-length'
   (require 'sort)    ; just calls '%sort-list-no-keys'
   (require 'hash))
+
 =

 (%include "ccl:compiler;nx-basic.lisp")
 =

@@ -225,7 +226,8 @@
     (:result-ignored . style-warning)
     (:lambda . style-warning)
     (:format-error . style-warning)
-    (:unused . style-warning)))
+    (:unused . style-warning)
+    (:type-conflict . style-warning)))
 =

 =

 =


Modified: trunk/source/compiler/nx0.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/nx0.lisp (original)
+++ trunk/source/compiler/nx0.lisp Sat Nov  6 02:22:18 2010
@@ -65,8 +65,20 @@
 (defvar *nx1-operators* (make-hash-table :size 300 :test #'eq))
 =

 (defvar *nx-lambdalist* (make-symbol "lambdalist"))
-(defvar *nx-nil* (list (make-symbol "nil")))
-(defvar *nx-t* (list (make-symbol "t")))
+(defvar *nx-nil* (make-acode (%nx1-operator nil)))
+(defvar *nx-t* (make-acode (%nx1-operator t)))
+
+(defun %nx-null (x)
+  (or (eq x *nx-nil*)
+      (if (acode-p x)
+        (eql (acode-operator x)
+             (%nx1-operator nil)))))
+
+(defun %nx-t (x)
+  (or (eq x *nx-t*)
+      (if (acode-p x)
+        (eql (acode-operator x)
+             (%nx1-operator t)))))
 =

 (defparameter *nx-current-compiler-policy* (%default-compiler-policy))
 =

@@ -1761,19 +1773,26 @@
 =

 (defun nx1-target-fixnump (form)
   (when (typep form 'integer)
-       (let* ((target (backend-target-arch *target-backend*)))
-         (and
-          (>=3D form (arch::target-most-negative-fixnum target))
-          (<=3D form (arch::target-most-positive-fixnum target))))))
+    (let* ((target (backend-target-arch *target-backend*)))
+      (and
+       (>=3D form (arch::target-most-negative-fixnum target))
+       (<=3D form (arch::target-most-positive-fixnum target))))))
 =

 =

 (defun nx1-immediate (form)
+  #+notyet
+  (cond ((eq form t) (make-acode (%nx1-operator t)))
+        ((null form) (make-acode (%nx1-operator nil)))
+        ((nx1-target-fixnump form)
+         (make-acode (%nx1-operator fixnum) form))
+        (t (make-acode (%nx1-operator immediate) form)))
+  #-notyet
   (if (or (eq form t) (null form))
     (nx1-sysnode form)
-    (make-acode =

+    (make-acode
      (if (nx1-target-fixnump form) =

        (%nx1-operator fixnum)
-        (%nx1-operator immediate))   ; Screw: chars
+       (%nx1-operator immediate))   ; Screw: chars
      form)))
 =

 (defun nx2-constant-form-value (form)

Modified: trunk/source/compiler/nxenv.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/nxenv.lisp (original)
+++ trunk/source/compiler/nxenv.lisp Sat Nov  6 02:22:18 2010
@@ -59,10 +59,10 @@
 (defconstant $regnote-ea 1)
 =

 (defmacro nx-null (x)
- `(eq ,x *nx-nil*))
+ `(%nx-null ,x))
 =

 (defmacro nx-t (x)
- `(eq ,x *nx-t*))
+ `(%nx-t ,x))
 =

 (eval-when (:compile-toplevel :load-toplevel :execute)
 =

@@ -166,8 +166,8 @@
      (struct-ref . 0)
      (struct-set . 0)
      (%aref1 . #.(logior operator-acode-subforms-mask operator-assignment-=
free-mask operator-single-valued-mask operator-side-effect-free-mask))
-     (embedded-nlexit . 0)
-     (embedded-conditional . 0) =

+     (nil . #.(logior operator-assignment-free-mask operator-single-valued=
-mask operator-side-effect-free-mask))
+     (t . #.(logior operator-assignment-free-mask operator-single-valued-m=
ask operator-side-effect-free-mask))
      (%word-to-int . #.(logior operator-assignment-free-mask operator-sing=
le-valued-mask))
      (%svref . #.(logior operator-acode-subforms-mask operator-assignment-=
free-mask operator-single-valued-mask))
      (%svset . #.(logior operator-acode-subforms-mask operator-single-valu=
ed-mask))

Modified: trunk/source/level-1/version.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/level-1/version.lisp (original)
+++ trunk/source/level-1/version.lisp Sat Nov  6 02:22:18 2010
@@ -18,7 +18,7 @@
 (in-package "CCL")
 =

 (defparameter *openmcl-major-version* 1)
-(defparameter *openmcl-minor-version* 6)
+(defparameter *openmcl-minor-version* 7)
 (defparameter *openmcl-revision* "dev")
 ;;; May be set by xload-level-0
 (defvar *openmcl-svn-revision* nil)



More information about the Openmcl-cvs-notifications mailing list