#| -*-Scheme-*-
-$Id: opncod.scm,v 4.58 1993/01/12 10:44:20 cph Exp $
+$Id: opncod.scm,v 4.59 1993/02/02 06:02:46 jawilson Exp $
Copyright (c) 1988-1993 Massachusetts Institute of Technology
(let ((error-cfg
(if (combination/reduction? combination)
(let ((scfg
- (generate-primitive primitive-name '() false false)))
+ (generate-primitive primitive-name (length expressions)
+ '() false false)))
(make-scfg (cfg-entry-node scfg) '()))
(with-values
(lambda ()
(lambda (label setup cleanup)
(scfg-append!
(generate-primitive primitive-name
+ (length expressions)
expressions
setup
label)
(let ((scfg
(scfg*scfg->scfg!
(generate-primitive primitive-name
+ (length expressions)
expressions
setup
label)
(loop (cdr checks))
error-cfg)))))))
-(define (generate-primitive name argument-expressions
+(define (generate-primitive name nargs argument-expressions
continuation-setup continuation-label)
(scfg*scfg->scfg!
(if continuation-label
(let ((primitive (make-primitive-procedure name true)))
((or (special-primitive-handler primitive)
rtl:make-invocation:primitive)
- (1+ (length argument-expressions))
+ (1+ nargs)
continuation-label
primitive))))
\f
(define (generic-default generic-op combination expressions predicate? finish)
(lambda ()
(if (combination/reduction? combination)
- (let ((scfg (generate-primitive generic-op '() false false)))
+ (let ((scfg (generate-primitive generic-op (length expressions) '() false false)))
(make-scfg (cfg-entry-node scfg) '()))
(with-values
(lambda ()
(generate-continuation-entry (combination/context combination)))
(lambda (label setup cleanup)
(scfg-append!
- (generate-primitive generic-op expressions setup label)
+ (generate-primitive generic-op (length expressions) expressions setup label)
cleanup
(if predicate?
(finish (rtl:make-true-test (rtl:make-fetch register:value)))