~ chicken-core (chicken-5) 523cdeae141e59d7afe9d6fabeebafc135513f52
commit 523cdeae141e59d7afe9d6fabeebafc135513f52 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Tue Mar 29 12:40:35 2011 -0400 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Tue Mar 29 12:40:35 2011 -0400 only assume if enforcing diff --git a/scrutinizer.scm b/scrutinizer.scm index 24d5b6e4..d43d3ac6 100755 --- a/scrutinizer.scm +++ b/scrutinizer.scm @@ -63,6 +63,7 @@ ; ##compiler#declared-type -> BOOL ; ##compiler#predicate -> TYPESPEC ; ##compiler#specializations -> (SPECIALIZATION ...) +; ##compiler#enforce-argument-types -> BOOL ; ; specialization specifiers: ; @@ -713,6 +714,7 @@ (iota len))) (fn (car args)) (pn (procedure-name fn)) + (enforces (and pn (##sys#get pn '##compiler#enforce-argument-types))) (pt (and pn (##sys#get pn '##compiler#predicate)))) (let ((r (call-result n args e loc params))) (invalidate-blist) @@ -728,13 +730,13 @@ (set! blist (alist-cons (cons var (car ctags)) pt blist))) (a - ;;XXX do this only if declared "enforce-argument-types" - (let ((ar (cond ((get db var 'assigned) '*) - ((eq? '* argr) (cdr a)) - (else argr)))) - (d "assuming: ~a -> ~a (flow: ~a)" var ar (car flow)) - (set! blist - (alist-cons (cons var (car flow)) ar blist)))))))) + (when enforces + (let ((ar (cond ((get db var 'assigned) '*) + ((eq? '* argr) (cdr a)) + (else argr)))) + (d "assuming: ~a -> ~a (flow: ~a)" var ar (car flow)) + (set! blist + (alist-cons (cons var (car flow)) ar blist))))))))) subs (cons fn (procedure-argument-types fn (sub1 len)))) r)))Trap