Eliminate '#!aux, which parses to the wrong thing (yuk!).
authorChris Hanson <org/chris-hanson/cph>
Sat, 15 May 1999 03:15:29 +0000 (03:15 +0000)
committerChris Hanson <org/chris-hanson/cph>
Sat, 15 May 1999 03:15:29 +0000 (03:15 +0000)
14 files changed:
v8/src/compiler/midend/alpha.scm
v8/src/compiler/midend/cleanup.scm
v8/src/compiler/midend/coerce.scm
v8/src/compiler/midend/dataflow.scm
v8/src/compiler/midend/ea2.scm
v8/src/compiler/midend/expand.scm
v8/src/compiler/midend/fakeprim.scm
v8/src/compiler/midend/frag.scm
v8/src/compiler/midend/inlate.scm
v8/src/compiler/midend/kmp.scm
v8/src/compiler/midend/simplify.scm
v8/src/compiler/midend/synutl.scm
v8/src/compiler/midend/utils.scm
v8/src/compiler/midend/widen.scm

index 62f3c3c8da4feb4adaddda0a2652f3f4b4df33eb..a9bdd4780203760acc32b2a7d0e0e049ee09b766 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: alpha.scm,v 1.12 1999/01/02 06:06:43 cph Exp $
+$Id: alpha.scm,v 1.13 1999/05/15 03:15:29 cph Exp $
 
 Copyright (c) 1994-1999 Massachusetts Institute of Technology
 
@@ -60,7 +60,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 (define (alphaconv/rename-lambda-list lambda-list new-names)
   (let loop ((ll lambda-list) (nn new-names) (result '()))
     (cond ((null? ll) (reverse! result))
-         ((memq (car ll) '(#!AUX #!OPTIONAL #!REST))
+         ((or (eq? #!optional (car ll))
+              (eq? #!rest (car ll))
+              (eq? #!aux (car ll)))
           (loop (cdr ll) nn (cons (car ll) result)))
          (else
           (loop (cdr ll) (cdr nn) (cons (car nn) result))))))
index 28d5e74ad41ad5a71fdcb154099d208c4c251363..b8c55c6bdcdce374e48940a9282fdcfe0f0920b5 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: cleanup.scm,v 1.32 1999/01/02 06:06:43 cph Exp $
+$Id: cleanup.scm,v 1.33 1999/05/15 03:15:25 cph Exp $
 
 Copyright (c) 1994-1999 Massachusetts Institute of Technology
 
@@ -49,7 +49,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   (define (exit! name) (cleanup/env/exit! env name))
   (let ((lambda-list*
         (map (lambda (name)
-               (if (memq name '(#!AUX #!REST #!OPTIONAL))
+               (if (lambda-list-keyword? name)
                    name
                    (cleanup/binding/name (cleanup/env/enter! env name))))
              lambda-list)))
index fa8ccb69dc23273b9e48c113a249f13b7dd7f7ee..2afa625217dfbd1c5d28780a85e033a9d0ddf2f4 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: coerce.scm,v 1.7 1999/01/02 06:06:43 cph Exp $
+$Id: coerce.scm,v 1.8 1999/05/15 03:15:22 cph Exp $
 
 Copyright (c) 1995, 1999 Massachusetts Institute of Technology
 
@@ -254,10 +254,11 @@ wins by about 10%.
               (bds   '())
               (rands (cons cont rands)))
       (cond ((null? ll) bds)
-           ((eq? (car ll) '#!optional)
+           ((eq? (car ll) #!optional)
             (loop (cdr ll) bds rands))
            ((or (null? rands)
-                (memq (car ll) '(#!aux #!rest)))
+                (eq? #!rest (car ll))
+                (eq? #!aux (car ll)))
             (map* bds coerce/binding/make (lambda-list->names ll)))
            (else
             (loop (cdr ll)
index deccc3ba19fea3041b01a423dd60609db8e3323a..6ad8b010e651f0ceedab380289c8cc4ca45861b9 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: dataflow.scm,v 1.21 1999/01/02 06:06:43 cph Exp $
+$Id: dataflow.scm,v 1.22 1999/05/15 03:15:17 cph Exp $
 
 Copyright (c) 1994-1999 Massachusetts Institute of Technology
 
@@ -1904,9 +1904,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
     (cond ((null? lambda-list)
            (if (not (null? args))
                (warn "Too many args" whole-lambda-list whole-args)))
-          ((eq? (car lambda-list) '#!OPTIONAL)
+          ((eq? (car lambda-list) #!optional)
            (optional-loop (cdr lambda-list) formals args))
-          ((eq? (car lambda-list) '#!REST)
+          ((eq? (car lambda-list) #!rest)
            (rest-loop (cdr lambda-list) formals args))
           ((null? args)
            (warn "Too few arguments" whole-lambda-list whole-args))
@@ -1918,7 +1918,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
     (cond ((null? lambda-list)
            (if (not (null? args))
                (warn "Too many args"  whole-lambda-list whole-args)))
-          ((eq? (car lambda-list) '#!REST)
+          ((eq? (car lambda-list) #!rest)
            (rest-loop (cdr lambda-list) formals args))
           ((null? args)
            (do-optional! (car lambda-list) (car formals) #f)
index 583499f2b245e44802d6e8e0c4315eb39251f141..c66ee08e429c83cac5253b8b4dca5496169fb2d1 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: ea2.scm,v 1.5 1999/01/02 06:06:43 cph Exp $
+$Id: ea2.scm,v 1.6 1999/05/15 03:15:14 cph Exp $
 
 Copyright (c) 1995, 1999 Massachusetts Institute of Technology
 
@@ -444,11 +444,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
           env)
          ((or (null? names) (null? types))
           (internal-error "Mismatch" names0 types0))
-         ((eq? (car names) '#!optional)
+         ((eq? (car names) #!optional)
           (loop (cdr names) types #T))
-         ((eq? (car names) '#!aux)
+         ((eq? (car names) #!aux)
           (loop (cdr names) types #T))
-         ((eq? (car names) '#!rest)
+         ((eq? (car names) #!rest)
           (extend! (second names) earlyrew/type/*unknown)
           env)
          (else
index 80638bdb1e84b774359f67075d78b25776de4fa2..3f6b5ecafeaaadeca433faba4f6678882c60f567 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: expand.scm,v 1.10 1999/01/02 06:06:43 cph Exp $
+$Id: expand.scm,v 1.11 1999/05/15 03:15:11 cph Exp $
 
 Copyright (c) 1994-1999 Massachusetts Institute of Technology
 
@@ -59,7 +59,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   (expand/remember
    (let ((lambda-list (lambda/formals form))
         (body        (expand/expr (lambda/body form))))
-     (cond ((memq '#!AUX lambda-list)
+     (cond ((memq #!aux lambda-list)
            => (lambda (tail)
                 (let ((rest  (list-prefix lambda-list tail))
                       (auxes (cdr tail)))
index b94d7b6152f616e164152cba19cf73808695f95b..73fe2b46b2fede7ce870bffd03ceb197e75dcbb2 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: fakeprim.scm,v 1.31 1999/01/02 06:06:43 cph Exp $
+$Id: fakeprim.scm,v 1.32 1999/05/15 03:14:42 cph Exp $
 
 Copyright (c) 1994-1999 Massachusetts Institute of Technology
 
@@ -129,7 +129,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
         defs)))
     (cond ((null? args)
           defs)
-         ((eq? (car args) '#!REST)
+         ((eq? (car args) #!rest)
           (add-def (cadr args) path #F))
          ((eq? (car args) '#F)
           (loop (cdr args) `(CDR ,path) defs))
@@ -491,7 +491,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   ;;   NARGS = number of <value> expressions
   ;;   Introduced by applicat.scm.
   (make-operator "#[internal-apply]"))
-(cookie-call %internal-apply cont 'NARGS procedure #!REST values)
+(cookie-call %internal-apply cont 'NARGS procedure #!rest values)
 
 
 (define-operator %internal-apply-unchecked
@@ -502,7 +502,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   ;;   Like %internal-apply, but assumes that the procedure is compiled and
   ;;   of the correct arity.
   (make-operator "#[internal-apply-unchecked]"))
-(cookie-call %internal-apply-unchecked cont 'NARGS procedure #!REST values)
+(cookie-call %internal-apply-unchecked cont 'NARGS procedure #!rest values)
 
 (define-operator %primitive-apply
   ;; (CALL ',%primitive-apply <continuation>
index 242594a456cb71bdf7b5ee88d8294a64801d6b92..664ce98c493e9df73ae6c820f38fb013a33e30d6 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: frag.scm,v 1.6 1999/01/02 06:06:43 cph Exp $
+$Id: frag.scm,v 1.7 1999/05/15 03:14:50 cph Exp $
 
 Copyright (c) 1995, 1999 Massachusetts Institute of Technology
 
@@ -695,7 +695,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
               (generate (append new-required
                                 (reverse new-args)
                                 rest-list-args
-                                (if rest? (list '#!rest new-rest-arg) '()))
+                                (if rest? (list #!rest new-rest-arg) '()))
                         (append (if rest?
                                     (list (bind-ph terminal-ph new-rest-arg))
                                     '())
index 6d89f922b11be121586d742029e673edf788f69e..fb80127de2dff19e5f42c47d767860126c2b23b2 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: inlate.scm,v 1.8 1999/01/02 06:06:43 cph Exp $
+$Id: inlate.scm,v 1.9 1999/05/15 03:14:59 cph Exp $
 
 Copyright (c) 1994-1999 Massachusetts Institute of Technology
 
@@ -86,13 +86,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
              (append req
                      (if (null? opt)
                          '()
-                         (cons '#!OPTIONAL opt))
+                         (cons #!optional opt))
                      (if (not rest)
                          '()
-                         (list '#!REST rest))
+                         (list #!rest rest))
                      (if (null? aux)
                          '()
-                         (cons '#!AUX aux))))
+                         (cons #!aux aux))))
             (new
              `(LAMBDA ,(cons (new-continuation-variable) lambda-list)
                 ,(let ((body (inlate/scode sbody #F)))
@@ -108,13 +108,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   `(LAMBDA ,(append (cons (new-continuation-variable) req)
                    (if (null? opt)
                        '()
-                       (cons '#!OPTIONAL opt))
+                       (cons #!optional opt))
                    (if (not rest)
                        '()
-                       (list '#!REST rest))
+                       (list #!rest rest))
                    (if (null? aux)
                        '()
-                       (cons '#!AUX aux)))
+                       (cons #!aux aux)))
      ,(let ((body (inlate/scode sbody)))
        (if (null? decls)
            body
index 94a79e38b96b9cd6c77a964d0ff456677c64cc56..cc8f32ebf26254ef1cdada606e00bfb3e4fab498 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: kmp.scm,v 1.2 1999/01/02 06:06:43 cph Exp $
+$Id: kmp.scm,v 1.3 1999/05/15 03:15:06 cph Exp $
 
 Copyright (c) 1995, 1999 Massachusetts Institute of Technology
 
@@ -52,7 +52,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
                     defs)))
            (cond ((null? args)
                   defs)
-                 ((eq? (car args) '#!REST)
+                 ((eq? (car args) #!rest)
                   (add-def (cadr args) path))
                  ((eq? (car args) '#F)
                   (loop (cdr args) `(CDR ,path) defs))
index 1518b9c5ff4bff48905e4e4a75b58e2247460d70..ed1049fc19e6a3a46e9f916345701e7446397275 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: simplify.scm,v 1.21 1999/01/02 06:06:43 cph Exp $
+$Id: simplify.scm,v 1.22 1999/05/15 03:14:36 cph Exp $
 
 Copyright (c) 1994-1999 Massachusetts Institute of Technology
 
@@ -264,8 +264,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
       (cond ((null? ll)
             (internal-error "Missing operand" name form))
            ((eq? name (car ll)) index)
-           ((or (eq? (car ll) '#!OPTIONAL)
-                (eq? (car ll) '#!REST))
+           ((or (eq? (car ll) #!optional)
+                (eq? (car ll) #!rest))
             -1)
            (else
             (loop (cdr ll) (+ index 1)))))))
@@ -443,7 +443,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   ;;  variables in ENV.  Currently it does not update the debugging
   ;;  info, but it should.
   (define (rename name)
-    (if (memq name '(#!aux #!rest #!optional))
+    (if (lambda-list-keyword? name)
        name
        (let ((new-name (variable/rename name)))
          (dbg-info/remember name `(LOOKUP ,new-name))
index 7efbb5236ef3ff73a690d39f91f8f591b3f1ea5f..e912d4faf1b5c55ffae3f640bad62993dc4ec24a 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: synutl.scm,v 1.3 1999/01/02 06:06:43 cph Exp $
+$Id: synutl.scm,v 1.4 1999/05/15 03:14:46 cph Exp $
 
 Copyright (c) 1994, 1999 Massachusetts Institute of Technology
 
@@ -38,7 +38,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
                 (values (reverse names)
                         `(let ((,var* ,expr))
                            (,@prefix ,@(reverse args)))))
-               ((eq? (car ll) '#!rest)
+               ((eq? (car ll) #!rest)
                 (loop '()
                       (cons (cadr ll) names)
                       (cons path args)
index 0b19ffeb7d8257d4f39b44e3bd01ddc200cfac4a..581f321c59627a9a03e0769a010e25fa148a94e6 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: utils.scm,v 1.33 1999/01/02 06:06:43 cph Exp $
+$Id: utils.scm,v 1.34 1999/05/15 03:14:54 cph Exp $
 
 Copyright (c) 1994-1999 Massachusetts Institute of Technology
 
@@ -761,23 +761,29 @@ Example use of FORM/COPY-TRANSFORMING:
 \f
 ;;;; Lambda-list utilities
 
+(define (lambda-list-keyword? object)
+  (or (eq? #!optional object)
+      (eq? #!rest object)
+      (eq? #!aux object)))
+
 (define (lambda-list->names lambda-list)
-  (delq* '(#!OPTIONAL #!REST #!AUX) lambda-list))
+  (cond ((null? lambda-list)
+        lambda-list)
+       ((lambda-list-keyword? (car lambda-list))
+        (lambda-list->names (cdr lambda-list)))
+       (else
+        (cons (car lambda-list) (lambda-list->names (cdr lambda-list))))))
 
 (define (lambda-list/count-names lambda-list)
   (let loop  ((list lambda-list) (count 0))
     (cond ((null? list)  count)
-         ((memq (car list)  '(#!OPTIONAL #!REST #!AUX))
+         ((lambda-list-keyword? (car list))
           (loop (cdr list) count))
          (else
           (loop (cdr list) (+ count 1))))))
 
 (define (hairy-lambda-list? lambda-list)
- (there-exists? lambda-list
-   (lambda (token)
-     (or (eq? token '#!OPTIONAL)
-        (eq? token '#!REST)
-        (eq? token '#!AUX)))))
+  (there-exists? lambda-list lambda-list-keyword?))
 
 (define (guarantee-simple-lambda-list lambda-list)
   (if (hairy-lambda-list? lambda-list)
@@ -788,10 +794,10 @@ Example use of FORM/COPY-TRANSFORMING:
       (internal-error "Wrong number of arguments" len args)))
 
 (define (lambda-list/applicate form lambda-list args)
-  ;; If LAMBDA-LIST is to be simplified by removing #!OPTIONAL and #!REST
+  ;; If LAMBDA-LIST is to be simplified by removing #!optional and #!rest
   ;; markers, then the ARGS must be processed to ensure the lambda
   ;; bindings are bould to the same values.  Returns a list of
-  ;; expressions. #!AUX is not allowed.  FORM is used only for error
+  ;; expressions. #!aux is not allowed.  FORM is used only for error
   ;; reporting to locate the user's source.
   (define (bad message)
     (user-error message        (form->source-irritant form)))
@@ -802,11 +808,11 @@ Example use of FORM/COPY-TRANSFORMING:
           (if (not (null? ops))
               (bad "Too many arguments"))
           (reverse! ops*))
-         ((eq? (car ll) '#!OPTIONAL)
+         ((eq? (car ll) #!optional)
           (loop (if (or (null? (cddr ll))
-                        (eq? '#!REST (caddr ll)))
+                        (eq? #!rest (caddr ll)))
                     (cddr ll)
-                    (cons '#!OPTIONAL (cddr ll)))
+                    (cons #!optional (cddr ll)))
                 (if (null? ops)
                     ops
                     (cdr ops))
@@ -814,7 +820,7 @@ Example use of FORM/COPY-TRANSFORMING:
                           `(QUOTE ,%unassigned)
                           (car ops))
                       ops*)))
-         ((eq? (car ll) '#!REST)
+         ((eq? (car ll) #!rest)
           ;; This only works before CPS conversion.
           ;; By that time, all "lexprs" should have been split.
           (reverse!
@@ -836,15 +842,15 @@ Example use of FORM/COPY-TRANSFORMING:
   (let parse ((ll lambda-list))
     (cond ((null? ll)
           (values '() '() false '()))
-         ((eq? (car ll) '#!OPTIONAL)
+         ((eq? (car ll) #!optional)
           (call-with-values
            (lambda () (parse (cdr ll)))
            (lambda (opt opt* rest aux)
              (if (not (null? opt*))
-                 (internal-error "Multiple #!OPTIONAL specifiers"
+                 (internal-error "Multiple #!optional specifiers"
                                  lambda-list))
              (values '() opt rest aux))))
-         ((eq? (car ll) '#!REST)
+         ((eq? (car ll) #!rest)
           (call-with-values
            (lambda () (parse (cdr ll)))
            (lambda (req opt rest aux)
@@ -852,9 +858,9 @@ Example use of FORM/COPY-TRANSFORMING:
                      (not (null? (cdr req)))
                      (not (null? opt))
                      rest)
-                 (internal-error "Unexpected stuff after #!REST" lambda-list))
+                 (internal-error "Unexpected stuff after #!rest" lambda-list))
              (values '() '() (car req) aux))))
-         ((eq? (car ll) '#!AUX)
+         ((eq? (car ll) #!aux)
           (call-with-values
            (lambda () (parse (cdr ll)))
            (lambda (req opt rest aux)
@@ -862,7 +868,7 @@ Example use of FORM/COPY-TRANSFORMING:
                      (not (null? opt))
                      rest
                      (not (null? aux)))
-                 (internal-error "Unexpected stuff after #!AUX" lambda-list))
+                 (internal-error "Unexpected stuff after #!aux" lambda-list))
              (values '() '() false req))))
          (else
           (call-with-values
index e2163e570843d58a10fde10e931f6dcb19f5d085..0e0c94352274cd2cef3f667ed08cc6c5ffd275c9 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: widen.scm,v 1.10 1999/01/02 06:06:43 cph Exp $
+$Id: widen.scm,v 1.11 1999/05/15 03:14:31 cph Exp $
 
 Copyright (c) 1994, 1999 Massachusetts Institute of Technology
 
@@ -360,7 +360,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
             (nodes value-nodes))
     (cond ((null? nodes)
           (continue name-map (reverse new-names)))
-         ((memq (car names) '(#!REST #!OPTIONAL #!AUX))
+         ((lambda-list-keyword? (car names))
           (loop name-map (cons (car names) new-names) (cdr names) nodes))
          ((widen/rewrite? (car nodes))
           (let* ((this (car nodes))