Skip to content

Commit

Permalink
0.7.9.24:
Browse files Browse the repository at this point in the history
        Committed patch for the bug 166 (APD sbcl-devel 2002-05-10)
  • Loading branch information
Alexey Dejneka committed Nov 1, 2002
1 parent 6091d27 commit a52bbbd
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 30 deletions.
25 changes: 0 additions & 25 deletions BUGS
Expand Up @@ -781,31 +781,6 @@ WORKAROUND:
isn't too surprising since there are many differences in stack
implementation and GC conservatism between the X86 and other ports.)

166:
Compiling
(in-package :cl-user)
(defstruct uustk)
(defmethod permanentize ((uustk uustk))
(flet ((frob (hash-table test-for-deletion)
)
(obj-entry.stale? (oe)
(destructuring-bind (key . datum) oe
(declare (type simple-vector key))
(deny0 (void? datum))
(some #'stale? key))))
(declare (inline frob obj-entry.stale?))
(frob (uustk.args-hash->obj-alist uustk)
#'obj-entry.stale?)
(frob (uustk.hash->memoized-objs-list uustk)
#'objs.stale?))
(call-next-method))
in sbcl-0.7.3.11 causes an assertion failure,
failed AVER:
"(NOT
(AND (NULL (BLOCK-SUCC B))
(NOT (BLOCK-DELETE-P B))
(NOT (EQ B (COMPONENT-HEAD #)))))"

167:
In sbcl-0.7.3.11, compiling the (illegal) code
(in-package :cl-user)
Expand Down
2 changes: 2 additions & 0 deletions NEWS
Expand Up @@ -1363,6 +1363,8 @@ changes in sbcl-0.7.10 relative to sbcl-0.7.9:
correct order
** MULTIPLE-VALUE-SETQ evaluates side-effectful places before
value producing form
* fixed bug 166: compiler preserves "there is a way to go"
invariant when deleting code

planned incompatible changes in 0.7.x:
* When the profiling interface settles down, maybe in 0.7.x, maybe
Expand Down
3 changes: 1 addition & 2 deletions src/compiler/ir1-translators.lisp
Expand Up @@ -299,8 +299,7 @@
"MACROLET ({(Name Lambda-List Form*)}*) Body-Form*
Evaluate the Body-Forms in an environment with the specified local macros
defined. Name is the local macro name, Lambda-List is the DEFMACRO style
destructuring lambda list, and the Forms evaluate to the expansion. The
Forms are evaluated in the null environment."
destructuring lambda list, and the Forms evaluate to the expansion.."
(funcall-in-macrolet-lexenv
definitions
(lambda (&key funs)
Expand Down
6 changes: 3 additions & 3 deletions src/compiler/ir1opt.lisp
Expand Up @@ -282,9 +282,9 @@
;; exception).
(labels ((mark-blocks (block)
(dolist (pred (block-pred block))
(when (and (not (block-delete-p pred))
(eq (functional-kind (block-home-lambda pred))
:deleted))
(unless (or (block-delete-p pred)
(eq (component-head (block-component pred))
pred))
(setf (block-delete-p pred) t)
(mark-blocks pred)))))
(mark-blocks block)
Expand Down
17 changes: 17 additions & 0 deletions tests/compiler-1.impure-cload.lisp
Expand Up @@ -121,5 +121,22 @@
(defun bug221 (b x)
(funcall (if b #'bug221-f1 #'bug221-f2) x))

;;; bug 166: compiler failure
(defstruct bug166s)
(defmethod permanentize ((uustk bug166s))
(flet ((frob (hash-table test-for-deletion)
)
(obj-entry.stale? (oe)
(destructuring-bind (key . datum) oe
(declare (type simple-vector key))
(deny0 (void? datum))
(some #'stale? key))))
(declare (inline frob obj-entry.stale?))
(frob (uustk.args-hash->obj-alist uustk)
#'obj-entry.stale?)
(frob (uustk.hash->memoized-objs-list uustk)
#'objs.stale?))
(call-next-method))

(sb-ext:quit :unix-status 104) ; success

0 comments on commit a52bbbd

Please sign in to comment.