mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-09 07:00:23 +02:00
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.
This commit is contained in:
parent
ac4d09b164
commit
8f9b968329
3 changed files with 9 additions and 16 deletions
|
@ -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 '())))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue