From 2e1562ca8d545f3dc91995869b1cc1b230ad3cbb Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Tue, 2 Aug 2022 10:27:24 -0700 Subject: [PATCH] effects: short-circuit versions of a few words --- core/effects/effects.factor | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/core/effects/effects.factor b/core/effects/effects.factor index f14f5cfecb..8d622bf8cf 100644 --- a/core/effects/effects.factor +++ b/core/effects/effects.factor @@ -27,7 +27,7 @@ TUPLE: effect [ out>> length ] [ in>> length ] bi - ; inline : variable-effect? ( effect -- ? ) - [ in-var>> ] [ out-var>> ] bi or ; + dup in-var>> [ drop t ] [ out-var>> ] if ; : bivariable-effect? ( effect -- ? ) [ in-var>> ] [ out-var>> ] bi = not ; @@ -44,10 +44,11 @@ TUPLE: effect } cond 2nip ; inline : effect= ( effect1 effect2 -- ? ) - [ [ in>> length ] same? ] - [ [ out>> length ] same? ] - [ [ terminated?>> ] same? ] - 2tri and and ; + 2dup [ in>> length ] same? [ + 2dup [ out>> length ] same? [ + [ terminated?>> ] same? + ] [ 2drop f ] if + ] [ 2drop f ] if ; GENERIC: effect>string ( obj -- str ) M: string effect>string ; @@ -105,13 +106,7 @@ M: word stack-effect M: deferred stack-effect call-next-method ( -- * ) or ; M: effect clone - { - [ in>> clone ] - [ out>> clone ] - [ terminated?>> ] - [ in-var>> ] - [ out-var>> ] - } cleave effect boa ; + (clone) [ clone ] change-in [ clone ] change-out ; : stack-height ( word -- n ) stack-effect effect-height ; inline -- 2.34.1