summaryrefslogtreecommitdiff
path: root/module/language/ecmascript/compile-ghil.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-06-09 23:42:05 +0200
committerAndy Wingo <wingo@pobox.com>2009-06-09 23:42:05 +0200
commit8f9b968329797a6a228bb18f5dddfa7444c97ff5 (patch)
tree0d52c98e9e92dc065f8ab2ced6117b22bbba6fec /module/language/ecmascript/compile-ghil.scm
parentac4d09b1647f84453175aabcf8fde7807a3b5cf9 (diff)
downloadguile-8f9b968329797a6a228bb18f5dddfa7444c97ff5.tar.gz
some attempts to solve the ecmascript stack overflow problem
* module/language/ecmascript/compile-ghil.scm (comp): Just use pmatch, not ormatch. Now with syncase running over everything, it doesn't matter. * module/ice-9/boot-9.scm (false-if-exception): Avoid saving stacks inside false-if-exception. There's probably a more general solution to this, though. Fixes getting bogus backtraces sometimes. * module/Makefile.am (ECMASCRIPT_LANG_SOURCES): Reorder things so that spec comes last.
Diffstat (limited to 'module/language/ecmascript/compile-ghil.scm')
-rw-r--r--module/language/ecmascript/compile-ghil.scm13
1 files changed, 1 insertions, 12 deletions
diff --git a/module/language/ecmascript/compile-ghil.scm b/module/language/ecmascript/compile-ghil.scm
index 92d71ec16..6e4779120 100644
--- a/module/language/ecmascript/compile-ghil.scm
+++ b/module/language/ecmascript/compile-ghil.scm
@@ -50,17 +50,6 @@
(and (not (null? props))
props))))
-;; The purpose, you ask? To avoid non-tail recursion when expanding a
-;; long pmatch sequence.
-(define-macro (ormatch x . clauses)
- (let ((X (gensym)))
- `(let ((,X ,x))
- (or ,@(map (lambda (c)
- (if (eq? (car c) 'else)
- `(begin . ,(cdr c))
- `(pmatch ,X ,c (else #f))))
- clauses)))))
-
(define (comp x e)
(let ((l (location x)))
(define (let1 what proc)
@@ -74,7 +63,7 @@
(-> (bind vars (list what)
(-> (begin (list (proc (car vars))
(-> (ref (car vars)))))))))))
- (ormatch x
+ (pmatch x
(null
;; FIXME, null doesn't have much relation to EOL...
(-> (quote '())))