diff options
author | kosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-11-30 20:32:42 +0000 |
---|---|---|
committer | kosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-11-30 20:32:42 +0000 |
commit | 86af9bba63814b20e2cc7f59791b2d975268da78 (patch) | |
tree | 80e6318c379ff4f5b6bdc9e7c9983005cf427309 /random.c | |
parent | 99c05fb38e8dc6d96a59c074de7b9aa39b1df31e (diff) |
* random.c (InitVM_Random): move Random::DEFAULT initialization
bits to Init_Random_default.
* random.c (Init_Random_default): renamed from Init_Rndom2.
* random.c (Init_RandomSeedCore): renamed from Init_Random.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'random.c')
-rw-r--r-- | random.c | 19 |
1 files changed, 12 insertions, 7 deletions
@@ -1496,9 +1496,10 @@ rb_memhash(const void *ptr, long len) #endif } -/* Initialize Ruby internal seeds */ +/* Initialize Ruby internal seeds. This function is called at very early stage + * of Ruby startup. Thus, you can't use Ruby's object. */ void -Init_RandomSeed(void) +Init_RandomSeedCore(void) { /* Don't reuse this MT for Random::DEFAULT. Random::DEFAULT::seed shouldn't @@ -1530,14 +1531,20 @@ init_randomseed(struct MT *mt) } /* construct Random::DEFAULT bits */ -static void -Init_RandomSeed2(void) +static VALUE +Init_Random_default(void) { rb_random_t *r = &default_rand; struct MT *mt = &r->mt; + VALUE v; r->seed = init_randomseed(mt); rb_global_variable(&r->seed); + + v = TypedData_Wrap_Struct(rb_cRandom, &random_data_type, r); + rb_gc_register_mark_object(v); + + return v; } void @@ -1575,7 +1582,6 @@ rb_reset_random_seed(void) void InitVM_Random(void) { - Init_RandomSeed2(); rb_define_global_function("srand", rb_f_srand, -1); rb_define_global_function("rand", rb_f_rand, -1); @@ -1593,9 +1599,8 @@ InitVM_Random(void) rb_define_method(rb_cRandom, "==", random_equal, 1); { - VALUE rand_default = TypedData_Wrap_Struct(rb_cRandom, &random_data_type, &default_rand); - rb_gc_register_mark_object(rand_default); /* Direct access to Ruby's Pseudorandom number generator (PRNG). */ + VALUE rand_default = Init_Random_default(); rb_define_const(rb_cRandom, "DEFAULT", rand_default); } |