diff --git a/core/inference/class/class-tests.factor b/core/inference/class/class-tests.factor index ac64b53070..a2bd2453f4 100755 --- a/core/inference/class/class-tests.factor +++ b/core/inference/class/class-tests.factor @@ -349,6 +349,27 @@ cell-bits 32 = [ ] { mod fixnum-mod } inlined? ] unit-test +[ t ] [ + [ + { integer } declare [ 256 rem ] map + ] { mod fixnum-mod rem } inlined? +] unit-test + +[ t ] [ + [ 1000 [ 1+ ] map ] { 1+ fixnum+ } inlined? +] unit-test + +[ t ] [ + [ + { integer } declare + dup 0 >= [ + 615949 * 797807 + 20 2^ mod dup 19 2^ - + ] [ dup ] if + ] { * + shift mod fixnum-mod fixnum* fixnum+ fixnum- } inlined? +] unit-test + +! Later + ! [ t ] [ ! [ ! { integer } declare [ 256 mod ] map @@ -360,12 +381,3 @@ cell-bits 32 = [ ! { integer } declare [ 0 >= ] map ! ] { >= fixnum>= } inlined? ! ] unit-test - -[ t ] [ - [ - { integer } declare - dup 0 >= [ - 615949 * 797807 + 20 2^ mod dup 19 2^ - - ] [ dup ] if - ] { * + shift mod fixnum-mod fixnum* fixnum+ fixnum- } inlined? -] unit-test diff --git a/core/inference/class/class.factor b/core/inference/class/class.factor index 033d2cce7a..1c0f5a46e1 100755 --- a/core/inference/class/class.factor +++ b/core/inference/class/class.factor @@ -260,18 +260,14 @@ DEFER: (infer-classes) : merge-classes ( nodes node -- ) >r (merge-classes) r> set-classes ; -: (merge-intervals) ( nodes quot -- seq ) - >r - [ node-input-intervals ] map - f pad-all flip - r> map ; inline - : set-intervals ( seq node -- ) node-out-d [ set-value-interval* ] 2reverse-each ; : merge-intervals ( nodes node -- ) - >r [ dup first [ interval-union ] reduce ] - (merge-intervals) r> set-intervals ; + >r + [ node-input-intervals ] map f pad-all flip + [ dup first [ interval-union ] reduce ] map + r> set-intervals ; : annotate-merge ( nodes #merge/#entry -- ) [ merge-classes ] [ merge-intervals ] 2bi ;