• bmeurer@chromium.org's avatar
    Introduce a RandonNumberGenerator class. Refactor the random/private_random... · eb381b94
    bmeurer@chromium.org authored
    Introduce a RandonNumberGenerator class. Refactor the random/private_random uses in Isolate/Context.
    
    The RandomNumberGenerator is a pseudorandom number generator
    with 48-bit state. It is properly seeded using either
    
    (1) the --random-seed if specified, or
    (2) the entropy_source function if configured, or
    (3) /dev/urandom if available, or
    (4) falls back to Time and TimeTicks based seeding.
    
    Each Isolate now contains a RandomNumberGenerator, which replaces
    the previous private_random_seed.
    
    Every native context still has its own random_seed. But this random
    seed is now properly initialized during bootstrapping,
    instead of on-demand initialization. This will allow us to cleanup
    and speedup the HRandom implementation quite a lot (this is delayed
    for a followup CL)!
    
    Also stop messing with the system rand()/random(), which should
    not be done from a library anyway! We probably re-seeded the
    libc rand()/random() after the application (i.e. Chrome) already
    seeded it (with better entropy than what we used).
    
    Another followup CL will replace the use of the per-isolate
    random number generator for the address randomization and
    thereby get rid of the Isolate::UncheckedCurrent() usage in
    the platform code.
    
    TEST=cctest/test-random-number-generator,cctest/test-random
    R=mstarzinger@chromium.org
    
    Review URL: https://codereview.chromium.org/23548024
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16612 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    eb381b94
Name
Last commit
Last update
..
condition-variable.cc Loading commit data...
condition-variable.h Loading commit data...
elapsed-timer.h Loading commit data...
mutex.cc Loading commit data...
mutex.h Loading commit data...
semaphore.cc Loading commit data...
semaphore.h Loading commit data...
socket.cc Loading commit data...
socket.h Loading commit data...
time.cc Loading commit data...
time.h Loading commit data...