From 77b5aaa62c4fb7a2336e90146f5b8ae993619f1f Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Fri, 6 Sep 2013 13:50:00 -0700 Subject: [PATCH] generic.math: eliminate a redundant fixnum check, separate out the fixnum dispatch hack. --- core/generic/math/math.factor | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/core/generic/math/math.factor b/core/generic/math/math.factor index 67701f2fb9..2065498324 100644 --- a/core/generic/math/math.factor +++ b/core/generic/math/math.factor @@ -97,6 +97,14 @@ SYMBOL: generic-word [ [ { ratio complex } ] dip make-math-method-table tuple-dispatch ] 2bi tuple swap 2array prefix tag-dispatch ; inline +: fixnum-dispatch ( word quot -- word quot' ) + [ dup fixnum bootstrap-word dup math-method ] + [ + dup length 3 - cut unclip + [ length 2 - ] [ nth ] bi prefix append + ] bi* + [ if ] 2curry [ 2dup both-fixnums? ] prepend ; + PRIVATE> SINGLETON: math-combination @@ -106,18 +114,14 @@ M: math-combination make-default-method M: math-combination perform-combination drop dup generic-word [ - dup - [ fixnum bootstrap-word dup math-method ] - [ - [ over ] [ - dup math-class? [ - [ dup ] [ math-method ] with with math-dispatch-step - ] [ - drop object-method - ] if - ] with math-dispatch-step - ] bi - [ if ] 2curry [ 2dup both-fixnums? ] prepend + dup [ over ] [ + dup math-class? [ + [ dup ] [ math-method ] with with math-dispatch-step + ] [ + drop object-method + ] if + ] with math-dispatch-step + fixnum-dispatch define ] with-variable ;