From: Doug Coleman Date: Fri, 16 Sep 2022 22:31:04 +0000 (-0400) Subject: kernel: move recusrive-hashcode to math and add test X-Git-Tag: 0.99~1083 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=f9a93e9993c77fde573b6bd7f9923f9d57382ff3;hp=0a4cd2fb2dc47eaffe03ff6b1b601d84fd789230 kernel: move recusrive-hashcode to math and add test kernel reload fails on DEFER: - being undefined we should add a unit test that does something like: `load-all [ reload ] each` or for core: `core-vocabs [ dup . flush reload ] each` --- diff --git a/core/kernel/kernel-tests.factor b/core/kernel/kernel-tests.factor index d8ce2094e6..79f4aac263 100644 --- a/core/kernel/kernel-tests.factor +++ b/core/kernel/kernel-tests.factor @@ -207,3 +207,5 @@ IN: kernel.tests { 2 3 4 1 } [ 1 2 3 4 roll ] unit-test { 1 2 3 4 } [ 2 3 4 1 -roll ] unit-test + +{ } [ "kernel" reload ] long-unit-test \ No newline at end of file diff --git a/core/kernel/kernel.factor b/core/kernel/kernel.factor index ce9c8381cb..e5389f401f 100644 --- a/core/kernel/kernel.factor +++ b/core/kernel/kernel.factor @@ -1,6 +1,5 @@ ! Copyright (C) 2004, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -IN: math DEFER: <= DEFER: - ! for bootstrap USE: slots.private USE: kernel.private USE: math.private @@ -307,9 +306,6 @@ M: f hashcode* 2drop 31337 ; inline : hashcode ( obj -- code ) 3 swap hashcode* ; inline -: recursive-hashcode ( n obj quot -- code ) - pick 0 <= [ 3drop 0 ] [ [ 1 - ] 2dip call ] if ; inline - GENERIC: equal? ( obj1 obj2 -- ? ) M: object equal? 2drop f ; inline diff --git a/core/math/math.factor b/core/math/math.factor index c88f274141..869d0aa133 100644 --- a/core/math/math.factor +++ b/core/math/math.factor @@ -131,6 +131,9 @@ GENERIC: (log2) ( x -- n ) foldable PRIVATE> +: recursive-hashcode ( n obj quot -- code ) + pick 0 <= [ 3drop 0 ] [ [ 1 - ] 2dip call ] if ; inline + ERROR: log2-expects-positive x ; : log2 ( x -- n )