:methods (lambda (invoke)
(funcall invoke val)
(emit-inst codegen (make-if-inst (format nil "~A > ~A" acc val)
- (make-set-inst acc val) nil))))
+ (make-set-inst acc val)))))
(define-aggregating-method-combination :max ((acc val) :codegen codegen)
:first-method (lambda (invoke)
:methods (lambda (invoke)
(funcall invoke val)
(emit-inst codegen (make-if-inst (format nil "~A < ~A" acc val)
- (make-set-inst acc val) nil))))
+ (make-set-inst acc val)))))
(define-aggregating-method-combination :and ((ret) :codegen codegen)
:around (lambda (body)
:methods (lambda (invoke)
(funcall invoke ret)
(emit-inst codegen (make-if-inst (format nil "!~A" ret)
- (make-break-inst) nil))))
+ (make-break-inst)))))
(define-aggregating-method-combination :or ((ret) :codegen codegen)
:around (lambda (body)
(make-do-while-inst (codegen-pop-block codegen) 0)))
:methods (lambda (invoke)
(funcall invoke ret)
- (emit-inst codegen (make-if-inst ret (make-break-inst) nil))))
+ (emit-inst codegen (make-if-inst ret (make-break-inst)))))
;;;--------------------------------------------------------------------------
;;; A customizable aggregating method combination.