Douglas Katzman | 2 Jul 21:20 2015
Picon
Picon

master: Delete all remnants of parse-defmacro

The branch "master" has been updated in SBCL:
       via  be5cb7ee138291b348573d567fdd7ff4bfc466b8 (commit)
      from  07338b735fb3aa0c2770a29ba4520bcd73f45d02 (commit)

- Log -----------------------------------------------------------------
commit be5cb7ee138291b348573d567fdd7ff4bfc466b8
Author: Douglas Katzman <dougk <at> google.com>
Date:   Thu Jul 2 15:04:02 2015 -0400

    Delete all remnants of parse-defmacro
---
 build-order.lisp-expr               |    3 +-
 package-data-list.lisp-expr         |    2 +-
 src/code/parse-defmacro-errors.lisp |   19 +--
 src/code/parse-defmacro.lisp        |  453 -----------------------------------
 src/compiler/parse-lambda-list.lisp |   26 ++-
 src/pcl/defcombin.lisp              |    2 +-
 tests/lambda-list.pure.lisp         |    2 +-
 tests/macroexpand.impure.lisp       |    3 +-
 8 files changed, 30 insertions(+), 480 deletions(-)

diff --git a/build-order.lisp-expr b/build-order.lisp-expr
index 1d37873..ecd3207 100644
--- a/build-order.lisp-expr
+++ b/build-order.lisp-expr
 <at>  <at>  -129,8 +129,7  <at>  <at> 
  ("src/code/barrier" :not-host)
  ("src/code/parse-body")       ; on host for PARSE-BODY
  ("src/code/early-extensions") ; on host for COLLECT, SYMBOLICATE, etc.
- ("src/compiler/parse-lambda-list") ; needed by PARSE-DEFMACRO
(Continue reading)

Douglas Katzman | 2 Jul 20:16 2015
Picon
Picon

master: Remove last use of PARSE-DEFMACRO.

The branch "master" has been updated in SBCL:
       via  07338b735fb3aa0c2770a29ba4520bcd73f45d02 (commit)
      from  a86cac2825c24fc8f2c3bd01f7d0860bb71512c7 (commit)

- Log -----------------------------------------------------------------
commit 07338b735fb3aa0c2770a29ba4520bcd73f45d02
Author: Douglas Katzman <dougk <at> google.com>
Date:   Thu Jul 2 14:15:55 2015 -0400

    Remove last use of PARSE-DEFMACRO.

    The interpreter rolled its own variation of DS-BIND, for better or worse.
    Moreover it rolled its own MAKE-MACRO-LAMBDA (effectively).
    There should be no difference between how the innards of a macro look,
    whether that macro came from the compiler or interpreter,
    so EVAL-LOCAL-MACRO-DEF uses MAKE-MACRO-LAMBDA directly.

    The only thing preventing deletion of 'parse-defmacro' is defining
    ARG-COUNT-ERROR somewhere else.
---
 NEWS                                |    3 +
 src/code/full-eval.lisp             |   92 ++++++++++++-----------------------
 src/code/parse-defmacro-errors.lisp |    2 +
 src/compiler/parse-lambda-list.lisp |   33 +++++++++----
 4 files changed, 59 insertions(+), 71 deletions(-)

diff --git a/NEWS b/NEWS
index 821459f..f341294 100644
--- a/NEWS
+++ b/NEWS
(Continue reading)

Douglas Katzman | 2 Jul 10:59 2015
Picon
Picon

master: Change all but 1 last use of PARSE-DEFMACRO to MAKE-MACRO-LAMBDA.

The branch "master" has been updated in SBCL:
       via  a86cac2825c24fc8f2c3bd01f7d0860bb71512c7 (commit)
      from  d15c0aba3919197253508c84adf3c1cb5aa0ff8b (commit)

- Log -----------------------------------------------------------------
commit a86cac2825c24fc8f2c3bd01f7d0860bb71512c7
Author: Douglas Katzman <dougk <at> google.com>
Date:   Thu Jul 2 04:56:43 2015 -0400

    Change all but 1 last use of PARSE-DEFMACRO to MAKE-MACRO-LAMBDA.
---
 NEWS                                |    5 +++++
 contrib/sb-cltl2/env.lisp           |   10 ++--------
 src/code/defmacro.lisp              |   26 ++++++--------------------
 src/code/destructuring-bind.lisp    |   19 +++++++------------
 src/compiler/parse-lambda-list.lisp |    6 +++---
 tests/lambda-list.pure.lisp         |    4 ++--
 6 files changed, 25 insertions(+), 45 deletions(-)

diff --git a/NEWS b/NEWS
index 3c1da8a..821459f 100644
--- a/NEWS
+++ b/NEWS
 <at>  <at>  -1,4 +1,9  <at>  <at> 
 ;;;; -*- coding: utf-8; fill-column: 78 -*-
+changes relative to sbcl-1.2.13:
+  * DESTRUCTURING-BIND has been totally reimplemented from scratch
+    to address a handful of performance and correctness issues.
+    (lp#707556, lp#707573, lp#707578, lp#708051)
+
(Continue reading)

Douglas Katzman | 2 Jul 09:42 2015
Picon
Picon

master: Change MACROLET IR1 translator to use MAKE-MACRO-LAMBDA

The branch "master" has been updated in SBCL:
       via  d15c0aba3919197253508c84adf3c1cb5aa0ff8b (commit)
      from  b4622386a3f0ceecc0d8d62c9ef84b79014837c7 (commit)

- Log -----------------------------------------------------------------
commit d15c0aba3919197253508c84adf3c1cb5aa0ff8b
Author: Douglas Katzman <dougk <at> google.com>
Date:   Thu Jul 2 02:12:52 2015 -0400

    Change MACROLET IR1 translator to use MAKE-MACRO-LAMBDA

    There is a minor discrepancy in whether repetition of variables
    in a destructuring lambda list is permitted. MAKE-MACRO-LAMBDA
    allows it but PARSE-DEFMACRO does not, which is slightly wrong
    at least according to a quick survey of other implementations,
    most of which permit (X &REST X), though in some cases you'll get
    a warning about non-use of the earlier X.

    When everything has been converted to MAKE-MACRO-LAMBDA
    we should add a NEWS entry documenting the relaxed stance.
---
 src/compiler/ir1-translators.lisp   |   17 +++++------------
 src/compiler/parse-lambda-list.lisp |   29 ++++++++++++++++++++++-------
 tests/compiler.pure.lisp            |    6 +++++-
 3 files changed, 32 insertions(+), 20 deletions(-)

diff --git a/src/compiler/ir1-translators.lisp b/src/compiler/ir1-translators.lisp
index 5a44261..c71443b 100644
--- a/src/compiler/ir1-translators.lisp
+++ b/src/compiler/ir1-translators.lisp
(Continue reading)

Douglas Katzman | 2 Jul 02:50 2015
Picon
Picon

master: Additional optimization to uses of *{CL|KEYWORD|PCL}-PACKAGE*

The branch "master" has been updated in SBCL:
       via  b4622386a3f0ceecc0d8d62c9ef84b79014837c7 (commit)
      from  751ca661b8fffcc271e90d2d1869c28dc3646808 (commit)

- Log -----------------------------------------------------------------
commit b4622386a3f0ceecc0d8d62c9ef84b79014837c7
Author: Douglas Katzman <dougk <at> google.com>
Date:   Wed Jul 1 20:45:19 2015 -0400

    Additional optimization to uses of *{CL|KEYWORD|PCL}-PACKAGE*
---
 src/code/function-names.lisp        |    2 +-
 src/code/primordial-extensions.lisp |   21 ++++++++++++---------
 src/compiler/fopcompile.lisp        |    4 +++-
 src/compiler/generic/genesis.lisp   |   23 +++++++++++------------
 src/compiler/globaldb.lisp          |    2 +-
 src/compiler/main.lisp              |   33 +++++++++++++++++++++------------
 src/pcl/early-low.lisp              |   17 +++--------------
 7 files changed, 52 insertions(+), 50 deletions(-)

diff --git a/src/code/function-names.lisp b/src/code/function-names.lisp
index 5a9accf..644be98 100644
--- a/src/code/function-names.lisp
+++ b/src/code/function-names.lisp
 <at>  <at>  -11,7 +11,7  <at>  <at> 
               (acons symbol checker *valid-fun-names-alist*)))))

 #+sb-xc-host
-(setf (get '%define-fun-name-syntax :sb-cold-funcall-handler)
+(setf (get '%define-fun-name-syntax :sb-cold-funcall-handler/for-effect)
(Continue reading)

Douglas Katzman | 2 Jul 02:50 2015
Picon
Picon

master: Add a declaration

The branch "master" has been updated in SBCL:
       via  751ca661b8fffcc271e90d2d1869c28dc3646808 (commit)
      from  eeecd7132785ef42ee4cb73faec520d4f081e396 (commit)

- Log -----------------------------------------------------------------
commit 751ca661b8fffcc271e90d2d1869c28dc3646808
Author: Douglas Katzman <dougk <at> google.com>
Date:   Wed Jul 1 20:39:49 2015 -0400

    Add a declaration
---
 src/code/print.lisp |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/code/print.lisp b/src/code/print.lisp
index b21f358..ddd4f87 100644
--- a/src/code/print.lisp
+++ b/src/code/print.lisp
 <at>  <at>  -489,6 +489,7  <at>  <at>  variable: an unreadable object representing the error is printed instead.")
   (write-char #\| stream))

 (defun output-symbol (object stream)
+  (declare (symbol object))
   (if (or *print-escape* *print-readably*)
       (let ((package (symbol-package object))
             (name (symbol-name object))

-----------------------------------------------------------------------

hooks/post-receive
(Continue reading)

Douglas Katzman | 1 Jul 23:47 2015
Picon
Picon

master: Style-warn if destructuring lambda list has &keyword in weird place.

The branch "master" has been updated in SBCL:
       via  eeecd7132785ef42ee4cb73faec520d4f081e396 (commit)
      from  b336bb2495b3addeb7708e811bb694328584a83a (commit)

- Log -----------------------------------------------------------------
commit eeecd7132785ef42ee4cb73faec520d4f081e396
Author: Douglas Katzman <dougk <at> google.com>
Date:   Wed Jul 1 17:45:23 2015 -0400

    Style-warn if destructuring lambda list has &keyword in weird place.
---
 src/compiler/parse-lambda-list.lisp |   45 +++++++++++++++++++++++++++-------
 tests/lambda-list.pure.lisp         |    8 ++++++
 2 files changed, 43 insertions(+), 10 deletions(-)

diff --git a/src/compiler/parse-lambda-list.lisp b/src/compiler/parse-lambda-list.lisp
index 830e8a5..51b78d4 100644
--- a/src/compiler/parse-lambda-list.lisp
+++ b/src/compiler/parse-lambda-list.lisp
 <at>  <at>  -105,6 +105,15  <at>  <at> 
                           collect `(,i (setq ,s ,val))))))
     (labels ((destructuring-p ()
                (logtest (bits &whole) accept))
+             (probably-ll-keyword-p (arg)
+               ;; Compiler doesn't see that the check is manually done. :-(
+               #-sb-xc-host
+               (declare (optimize (sb!c::insert-array-bounds-checks 0)))
+               (and (symbolp arg)
+                    (let ((name (symbol-name arg)))
+                      (and (typep name 'simple-base-string)
(Continue reading)

Douglas Katzman | 1 Jul 02:40 2015
Picon
Picon

master: Use EXPAND-DS-BIND for most macro-like things.

The branch "master" has been updated in SBCL:
       via  b336bb2495b3addeb7708e811bb694328584a83a (commit)
      from  7159c30260c512530bc03f248af97dd7a555d64a (commit)

- Log -----------------------------------------------------------------
commit b336bb2495b3addeb7708e811bb694328584a83a
Author: Douglas Katzman <dougk <at> google.com>
Date:   Mon Jun 29 22:46:25 2015 -0400

    Use EXPAND-DS-BIND for most macro-like things.

    - DEFTYPE, !DEF-TYPE-TRANSLATOR, DEFINE-ALIEN-TYPE-TRANSLATOR
    - DEF-IR1-TRANSLATOR
    - DEFINE-COMPILER-MACRO
    - DEFINE-INSTRUCTION-MACRO
    - DEFSETF and DEFCAS

    Missing from the above list are destructuring-bind and "actual" macros,
    on account of a few bootstrapping issues pending resolution.

    This doesn't yet use the expander that is able to elide type tests.
    It does however avoid all the (CDR (CDR (CDR ...))) nonsense.

    A test of DEFTYPE in sb-introspect now expects a different result,
    because we generally delete &WHOLE and &ENVIRONMENT variables
    from lambda lists in their returned representation.
---
 contrib/sb-introspect/test-driver.lisp |    2 +-
 package-data-list.lisp-expr            |    1 +
 src/code/cas.lisp                      |   16 +----
(Continue reading)

stassats | 1 Jul 00:54 2015
Picon
Picon

master: Optimize ARRAY-IN-BOUNDS-P transform some more.

The branch "master" has been updated in SBCL:
       via  7159c30260c512530bc03f248af97dd7a555d64a (commit)
      from  2d52f1b25d2527f3d3b169c3c4ea265f95184fb1 (commit)

- Log -----------------------------------------------------------------
commit 7159c30260c512530bc03f248af97dd7a555d64a
Author: Stas Boukarev <stassats <at> gmail.com>
Date:   Wed Jul 1 01:31:55 2015 +0300

    Optimize ARRAY-IN-BOUNDS-P transform some more.

    Avoid generic-<, it will only succeed when the argument is a fixnum.
---
 src/compiler/array-tran.lisp |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/compiler/array-tran.lisp b/src/compiler/array-tran.lisp
index b4f698e..e5f867a 100644
--- a/src/compiler/array-tran.lisp
+++ b/src/compiler/array-tran.lisp
 <at>  <at>  -165,7 +165,8  <at>  <at> 
              (cond ((= (length subscripts) 1)
                     (let ((arg (sb!xc:gensym)))
                       `(lambda (array ,arg)
-                         (< ,arg (array-dimension array 0)))))
+                         (and (fixnump ,arg)
+                              (< ,arg (array-dimension array 0))))))
                    (t
                     (give-up-ir1-transform
                      (or reason
(Continue reading)

stassats | 30 Jun 22:51 2015
Picon
Picon

master: Optimize ARRAY-IN-BOUNDS-P and ARRAY-ROW-MAJOR-INDEX.

The branch "master" has been updated in SBCL:
       via  2d52f1b25d2527f3d3b169c3c4ea265f95184fb1 (commit)
      from  4e602914e8de0459a33eb325748a718d5356d3b2 (commit)

- Log -----------------------------------------------------------------
commit 2d52f1b25d2527f3d3b169c3c4ea265f95184fb1
Author: Stas Boukarev <stassats <at> gmail.com>
Date:   Tue Jun 30 23:51:27 2015 +0300

    Optimize ARRAY-IN-BOUNDS-P and ARRAY-ROW-MAJOR-INDEX.

    Rewrite %array-row-major-index accessing &more args.
    Don't use %array-row-major-index for implementing array-in-bounds-p,
    it can be done faster.
    Transform (array-in-bounds-p x y) into a length check.
---
 src/code/array.lisp          |   97 ++++++++++++++++++++++++-----------------
 src/compiler/array-tran.lisp |   31 +++++++++-----
 src/compiler/ir1opt.lisp     |    8 ++--
 src/compiler/seqtran.lisp    |   80 +++++++++++++++++-----------------
 tests/compiler.pure.lisp     |   31 +++++---------
 5 files changed, 132 insertions(+), 115 deletions(-)

diff --git a/src/code/array.lisp b/src/code/array.lisp
index 48b2cd6..cd98cda 100644
--- a/src/code/array.lisp
+++ b/src/code/array.lisp
 <at>  <at>  -770,54 +770,71  <at>  <at>  of specialized arrays is supported."
              :expected-type `(integer 0 (,bound)))))

(Continue reading)

stassats | 30 Jun 20:57 2015
Picon
Picon

master: Don't cons in array-in-bounds-p.

The branch "master" has been updated in SBCL:
       via  4e602914e8de0459a33eb325748a718d5356d3b2 (commit)
      from  bc31cd6a66c243252a2e831eaf78f9f17f8c3633 (commit)

- Log -----------------------------------------------------------------
commit 4e602914e8de0459a33eb325748a718d5356d3b2
Author: Stas Boukarev <stassats <at> gmail.com>
Date:   Tue Jun 30 21:48:31 2015 +0300

    Don't cons in array-in-bounds-p.

    Declare subscripts dynamic-extent.
---
 src/code/array.lisp |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/code/array.lisp b/src/code/array.lisp
index 0bac83a..48b2cd6 100644
--- a/src/code/array.lisp
+++ b/src/code/array.lisp
 <at>  <at>  -805,8 +805,9  <at>  <at>  of specialized arrays is supported."
 (defun array-in-bounds-p (array &rest subscripts)
   #!+sb-doc
   "Return T if the SUBSCRIPTS are in bounds for the ARRAY, NIL otherwise."
-  (if (%array-row-major-index array subscripts nil)
-      t))
+  (declare (truly-dynamic-extent subscripts))
+  (and (%array-row-major-index array subscripts nil)
+       t))

(Continue reading)


Gmane