]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/tools/gc-decode/gc-decode-tests.factor
use reject instead of [ ... not ] filter.
[factor.git] / extra / tools / gc-decode / gc-decode-tests.factor
index c5e7fa10c565a25049d057a8f141a9535f483bd2..556c8b277af020838d58baab2da7ba11d099d3c9 100644 (file)
@@ -1,9 +1,9 @@
 USING: accessors arrays assocs bit-arrays classes.struct combinators
 combinators.short-circuit compiler compiler.cfg.debugger
 compiler.cfg.instructions compiler.cfg.stack-frame compiler.cfg.utilities
-compiler.codegen.gc-maps generic kernel math namespaces random sequences
-sequences.generalizations slots.syntax tools.gc-decode tools.test vm vocabs
-words compiler.cfg.linearization ;
+compiler.codegen.gc-maps compiler.units fry generic grouping kernel math
+namespaces random sequences sequences.generalizations slots.syntax
+tools.gc-decode tools.test vm vocabs words compiler.cfg.linearization ;
 QUALIFIED: cpu.x86.features.private
 QUALIFIED: crypto.aes.utils
 QUALIFIED: effects
@@ -24,14 +24,6 @@ IN: tools.gc-decode.tests
 { ?{ t t t t t t t t } } [ B{ 255 } byte-array>bit-array ] unit-test
 
 ! scrub-bits
-{ t } [
-    \ effects:<effect> word>gc-info scrub-bits
-    {
-        ?{ t t t f t t t t } ! 64-bit
-        ?{ t t t f f f f f t t t t } ! 32-bit
-    } member?
-] unit-test
-
 {
     { }
 } [
@@ -60,12 +52,10 @@ IN: tools.gc-decode.tests
     [ f ] [ {
         [ [ scrub-d>> length ] map supremum ]
         [ [ scrub-r>> length ] map supremum ]
-        [ [ check-d>> length ] map supremum ]
-        [ [ check-r>> length ] map supremum ]
         [ [ gc-root-offsets ] map largest-spill-slot ]
         [ [ derived-root-offsets ] map [ keys ] map largest-spill-slot ]
         [ length ]
-    } cleave 7 narray ] if-empty ;
+    } cleave 5 narray ] if-empty ;
 
 ! Like word>gc-info but uses the compiler
 : word>gc-info-expected ( word -- seq/f )
@@ -81,8 +71,8 @@ IN: tools.gc-decode.tests
     { [ generic? ] [ primitive? ] [ inline? ] [ no-compile? ] } 1|| not ;
 
 { { } } [
-    all-words [ normal? ] filter 20 sample
-    [ [ word>gc-info-expected ] [ word>gc-info ] bi same-gc-info? not ] filter
+    all-words [ normal? ] filter 50 sample
+    [ [ word>gc-info-expected ] [ word>gc-info ] bi same-gc-info? ] reject
 ] unit-test
 
 : base-pointer-groups-expected ( word -- seq )
@@ -121,3 +111,18 @@ IN: tools.gc-decode.tests
     \ cpu.x86.features.private:(sse-version)
     [ word>gc-info-expected ] [ word>gc-info ] bi same-gc-info?
 ] unit-test
+
+! Ensure deterministic gc map generation.
+: recompile-word>gc-info ( word -- gc-info )
+    [ 1array compile ] keep word>gc-info ;
+
+: deterministic-gc-info? ( word -- ? )
+    20 swap '[
+        _ recompile-word>gc-info struct-slot-values
+        dup last 0 = [ drop f ] when
+    ] replicate all-equal? ;
+
+
+{ t } [
+    \ opencl:cl-queue-kernel deterministic-gc-info?
+] unit-test