diff --git a/basis/random/backend/authors.txt b/basis/random/backend/authors.txt new file mode 100644 index 0000000000..b4bd0e7b35 --- /dev/null +++ b/basis/random/backend/authors.txt @@ -0,0 +1 @@ +Doug Coleman \ No newline at end of file diff --git a/basis/random/backend/backend.factor b/basis/random/backend/backend.factor new file mode 100644 index 0000000000..eaed73f421 --- /dev/null +++ b/basis/random/backend/backend.factor @@ -0,0 +1,10 @@ +! Copyright (C) 2009 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: cpu.x86.features init kernel namespaces random +random.mersenne-twister random.sfmt ; +IN: random.backend + +[ + sse2? [ default-sfmt ] [ default-mersenne-twister ] if + random-generator set-global +] "bootstrap.random" add-init-hook diff --git a/basis/random/mersenne-twister/mersenne-twister.factor b/basis/random/mersenne-twister/mersenne-twister.factor index 51112ae980..0c1683a8bc 100644 --- a/basis/random/mersenne-twister/mersenne-twister.factor +++ b/basis/random/mersenne-twister/mersenne-twister.factor @@ -76,7 +76,3 @@ M: mersenne-twister random-32* ( mt -- r ) : default-mersenne-twister ( -- mersenne-twister ) [ 32 random-bits ] with-system-random ; - -[ - default-mersenne-twister random-generator set-global -] "bootstrap.random" add-init-hook diff --git a/basis/random/random.factor b/basis/random/random.factor index 197c232404..06be2778e7 100755 --- a/basis/random/random.factor +++ b/basis/random/random.factor @@ -112,4 +112,4 @@ PRIVATE> { [ os unix? ] [ "random.unix" require ] } } cond -"random.mersenne-twister" require +"random.backend" require diff --git a/basis/random/sfmt/sfmt.factor b/basis/random/sfmt/sfmt.factor index 8be330ec20..28883838ce 100644 --- a/basis/random/sfmt/sfmt.factor +++ b/basis/random/sfmt/sfmt.factor @@ -152,3 +152,6 @@ M: sfmt seed-random ( sfmt seed -- sfmt ) uint-4{ HEX: dfffffef HEX: ddfecb7f HEX: bffaffff HEX: bffffff6 } uint-4{ HEX: 1 HEX: 0 HEX: 0 HEX: 13c9e684 } ; inline + +: default-sfmt ( -- sfmt ) + [ random-32 ] with-secure-random ;