Changeset 11725


Ignore:
Timestamp:
04/03/09 21:17:53 (14 years ago)
Author:
ehuelsmann
Message:

Code audited for the use of MACROEXPAND without an environment.
Also, it turns out the precompiler used to work around the previously fixed issue in
RESTART-CASE by special-casing its expansion. Remove that special casing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/precompiler.lisp

    r11720 r11725  
    422422(defun precompile-dolist (form)
    423423  (if *in-jvm-compile*
    424       (precompile1 (macroexpand form))
     424      (precompile1 (macroexpand form *compile-file-environment*))
    425425      (cons 'DOLIST (cons (mapcar #'precompile1 (cadr form))
    426426                          (mapcar #'precompile1 (cddr form))))))
     
    428428(defun precompile-dotimes (form)
    429429  (if *in-jvm-compile*
    430       (precompile1 (macroexpand form))
     430      (precompile1 (macroexpand form *compile-file-environment*))
    431431      (cons 'DOTIMES (cons (mapcar #'precompile1 (cadr form))
    432432                           (mapcar #'precompile1 (cddr form))))))
     
    464464(defun precompile-do/do* (form)
    465465  (if *in-jvm-compile*
    466       (precompile1 (macroexpand form))
     466      (precompile1 (macroexpand form *compile-file-environment*))
    467467      (list* (car form)
    468468             (precompile-do/do*-vars (cadr form))
     
    646646        (parse-body (cddr form) nil)
    647647      `(locally ,@decls ,@(mapcar #'precompile1 body)))))
    648 
    649 ;; "If the restartable-form is a list whose car is any of the symbols SIGNAL,
    650 ;; ERROR, CERROR, or WARN (or is a macro form which macroexpands into such a
    651 ;; list), then WITH-CONDITION-RESTARTS is used implicitly to associate the
    652 ;; indicated restarts with the condition to be signaled." So we need to
    653 ;; precompile the restartable form before macroexpanding RESTART-CASE.
    654 (defun precompile-restart-case (form)
    655   (let ((new-form (list* 'RESTART-CASE (precompile1 (cadr form)) (cddr form))))
    656     (precompile1 (macroexpand new-form sys:*compile-file-environment*))))
    657648
    658649(defun precompile-symbol-macrolet (form)
     
    747738(defun precompile-case (form)
    748739  (if *in-jvm-compile*
    749       (precompile1 (macroexpand form))
     740      (precompile1 (macroexpand form *compile-file-environment*))
    750741      (let* ((keyform (cadr form))
    751742             (clauses (cddr form))
     
    762753(defun precompile-cond (form)
    763754  (if *in-jvm-compile*
    764       (precompile1 (macroexpand form))
     755      (precompile1 (macroexpand form *compile-file-environment*))
    765756      (let ((clauses (cdr form))
    766757            (result nil))
     
    867858(defun precompile-when (form)
    868859  (if *in-jvm-compile*
    869       (precompile1 (macroexpand form))
     860      (precompile1 (macroexpand form *compile-file-environment*))
    870861      (precompile-cons form)))
    871862
    872863(defun precompile-unless (form)
    873864  (if *in-jvm-compile*
    874       (precompile1 (macroexpand form))
     865      (precompile1 (macroexpand form *compile-file-environment*))
    875866      (precompile-cons form)))
    876867
     
    891882(defun precompile-nth-value (form)
    892883  (if *in-jvm-compile*
    893       (precompile1 (macroexpand form))
     884      (precompile1 (macroexpand form *compile-file-environment*))
    894885      form))
    895886
    896887(defun precompile-return (form)
    897888  (if *in-jvm-compile*
    898       (precompile1 (macroexpand form))
     889      (precompile1 (macroexpand form *compile-file-environment*))
    899890      (list 'RETURN (precompile1 (cadr form)))))
    900891
     
    982973                              PSETF
    983974                              PSETQ
    984                               RESTART-CASE
    985975                              RETURN
    986976                              RETURN-FROM
Note: See TracChangeset for help on using the changeset viewer.