Changeset 13231


Ignore:
Timestamp:
Nov 24, 2009, 3:03:02 PM (10 years ago)
Author:
gb
Message:

If APPLY's last arg is a quoted list, transform it into FUNCALL
(quoting list elements if necessary.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/optimizers.lisp

    r13067 r13231  
    327327      call)))
    328328
     329
    329330(define-compiler-macro apply  (&whole call fn arg0 &rest args)
    330331  ;; Special-case (apply #'make-instance 'name ...)
     
    362363                   original-fn
    363364                   (nreconc (cdr (reverse args)) (%cdr last))))
    364             call))))))
     365            (if (and (consp last)
     366                     (eq (car last) 'quote)
     367                     (proper-list-p (cadr last)))
     368              (flet ((quotify (arg)
     369                       (if (self-evaluating-p arg)
     370                         arg
     371                         (list 'quote arg))))
     372                (cons 'funcall (cons original-fn
     373                                     (nreconc (cdr (reverse args)) (mapcar #'quotify (%cadr last))))))
     374              call)))))))
     375
    365376
    366377
Note: See TracChangeset for help on using the changeset viewer.