From eda9535ce6fc5be3f64a95b6e3bae51834b53737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Tue, 17 Mar 2015 15:47:06 +0000 Subject: [PATCH] compiler.tree.propagation.call-effect: changing back call-effect-unsafe?, changing it made all images to large for some reason --- .../propagation/call-effect/call-effect-tests.factor | 6 ++++++ .../tree/propagation/call-effect/call-effect.factor | 10 ++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/basis/compiler/tree/propagation/call-effect/call-effect-tests.factor b/basis/compiler/tree/propagation/call-effect/call-effect-tests.factor index 6b4816d19f..a49f95171e 100644 --- a/basis/compiler/tree/propagation/call-effect/call-effect-tests.factor +++ b/basis/compiler/tree/propagation/call-effect/call-effect-tests.factor @@ -16,6 +16,12 @@ IN: compiler.tree.propagation.call-effect.tests 100 [ sq ] ( a -- b ) call-effect-slow>quot call ] unit-test +! call-effect-unsafe? +{ f t } [ + [ ] ( m -- ) call-effect-unsafe? + [ ] ( x -- x ) call-effect-unsafe? +] unit-test + [ t ] [ \ + ( a b -- c ) execute-effect-unsafe? ] unit-test [ t ] [ \ + ( a b c -- d e ) execute-effect-unsafe? ] unit-test [ f ] [ \ + ( a b c -- d ) execute-effect-unsafe? ] unit-test diff --git a/basis/compiler/tree/propagation/call-effect/call-effect.factor b/basis/compiler/tree/propagation/call-effect/call-effect.factor index 860a65f9de..04083e76ff 100644 --- a/basis/compiler/tree/propagation/call-effect/call-effect.factor +++ b/basis/compiler/tree/propagation/call-effect/call-effect.factor @@ -57,9 +57,6 @@ M: quotation cached-effect dup cached-effect-valid? [ cached-effect>> ] [ [ safe-infer dup ] keep save-effect ] if ; -: call-effect-unsafe? ( cached-effect effect -- ? ) - over +unknown+ eq? [ 2drop f ] [ effect<= ] if ; - : call-effect-slow>quot ( effect -- quot ) [ \ call-effect def>> curry ] [ add-effect-input ] bi '[ _ _ call-effect-unsafe ] ; @@ -70,8 +67,13 @@ M: quotation cached-effect \ call-effect-slow t "no-compile" set-word-prop +: call-effect-unsafe? ( quot effect -- ? ) + [ cached-effect ] dip + over +unknown+ eq? + [ 2drop f ] [ [ { effect } declare ] dip effect<= ] if ; inline + : call-effect-fast ( quot effect inline-cache -- ) - 2over [ cached-effect ] dip call-effect-unsafe? + 2over call-effect-unsafe? [ [ nip update-inline-cache ] [ drop call-effect-unsafe ] 3bi ] [ drop call-effect-slow ] if ; inline