(make-predicate-dispatcher name arity simple-handler-set))
(define (standard-predicate-dispatcher name arity)
- (make-predicate-dispatcher name arity cached-most-specific-handler-set))
+ (make-predicate-dispatcher name arity most-specific-handler-set))
(define (chaining-predicate-dispatcher name arity)
+ (make-predicate-dispatcher name arity chaining-handler-set))
+
+(define (cached-standard-predicate-dispatcher name arity)
+ (make-predicate-dispatcher name arity cached-most-specific-handler-set))
+
+(define (cached-chaining-predicate-dispatcher name arity)
(make-predicate-dispatcher name arity cached-chaining-handler-set))
\f
(define-record-type <metadata>
(files "predicate-dispatch")
(parent (runtime))
(export ()
+ cached-chaining-predicate-dispatcher
+ cached-standard-predicate-dispatcher
chaining-predicate-dispatcher
define-predicate-dispatch-default-handler
define-predicate-dispatch-handler
(add-boot-init!
(lambda ()
(set! compile-item
- (standard-predicate-dispatcher 'compile-item 1))
+ (cached-standard-predicate-dispatcher 'compile-item 1))
(set! compile-expr-item
- (standard-predicate-dispatcher 'compile-expr-item 1))
+ (cached-standard-predicate-dispatcher 'compile-expr-item 1))
(run-deferred-boot-actions 'define-item-compiler)))
(define (define-item-compiler predicate compiler #!optional expr-compiler)
(get-subexpressions expression)))))
(set! compute-substitution
- (standard-predicate-dispatcher 'compute-substitution 2))
+ (cached-standard-predicate-dispatcher 'compute-substitution 2))
(define-predicate-dispatch-default-handler compute-substitution
(lambda (expression mark-safe!)
(get-subexpressions expression)))))
(set! alpha-substitute
- (standard-predicate-dispatcher 'alpha-substitute 2))
+ (cached-standard-predicate-dispatcher 'alpha-substitute 2))
(define-predicate-dispatch-default-handler alpha-substitute
(lambda (substitution expression)
(ctx-start-col ctx)))
\f
(define %write-xml
- (standard-predicate-dispatcher '%write-xml 2))
+ (cached-standard-predicate-dispatcher '%write-xml 2))
(define-predicate-dispatch-handler %write-xml (list xml-document? ctx?)
(lambda (document ctx)