[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