diff options
Diffstat (limited to 'deps/v8/src/runtime/runtime-maths.cc')
-rw-r--r-- | deps/v8/src/runtime/runtime-maths.cc | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/deps/v8/src/runtime/runtime-maths.cc b/deps/v8/src/runtime/runtime-maths.cc deleted file mode 100644 index 7695c14657..0000000000 --- a/deps/v8/src/runtime/runtime-maths.cc +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "src/runtime/runtime-utils.h" - -#include "src/arguments.h" -#include "src/base/utils/random-number-generator.h" -#include "src/bootstrapper.h" -#include "src/counters.h" -#include "src/double.h" -#include "src/objects-inl.h" - -namespace v8 { -namespace internal { - -RUNTIME_FUNCTION(Runtime_GenerateRandomNumbers) { - HandleScope scope(isolate); - DCHECK_EQ(0, args.length()); - - Handle<Context> native_context = isolate->native_context(); - DCHECK_EQ(0, native_context->math_random_index()->value()); - - static const int kCacheSize = 64; - static const int kState0Offset = kCacheSize - 1; - static const int kState1Offset = kState0Offset - 1; - // The index is decremented before used to access the cache. - static const int kInitialIndex = kState1Offset; - - Handle<FixedDoubleArray> cache; - uint64_t state0 = 0; - uint64_t state1 = 0; - if (native_context->math_random_cache()->IsFixedDoubleArray()) { - cache = Handle<FixedDoubleArray>( - FixedDoubleArray::cast(native_context->math_random_cache()), isolate); - state0 = double_to_uint64(cache->get_scalar(kState0Offset)); - state1 = double_to_uint64(cache->get_scalar(kState1Offset)); - } else { - cache = Handle<FixedDoubleArray>::cast( - isolate->factory()->NewFixedDoubleArray(kCacheSize, TENURED)); - native_context->set_math_random_cache(*cache); - // Initialize state if not yet initialized. If a fixed random seed was - // requested, use it to reset our state the first time a script asks for - // random numbers in this context. This ensures the script sees a consistent - // sequence. - if (FLAG_random_seed != 0) { - state0 = FLAG_random_seed; - state1 = FLAG_random_seed; - } else { - while (state0 == 0 || state1 == 0) { - isolate->random_number_generator()->NextBytes(&state0, sizeof(state0)); - isolate->random_number_generator()->NextBytes(&state1, sizeof(state1)); - } - } - } - - DisallowHeapAllocation no_gc; - FixedDoubleArray* raw_cache = *cache; - // Create random numbers. - for (int i = 0; i < kInitialIndex; i++) { - // Generate random numbers using xorshift128+. - base::RandomNumberGenerator::XorShift128(&state0, &state1); - raw_cache->set(i, base::RandomNumberGenerator::ToDouble(state0, state1)); - } - - // Persist current state. - raw_cache->set(kState0Offset, uint64_to_double(state0)); - raw_cache->set(kState1Offset, uint64_to_double(state1)); - return Smi::FromInt(kInitialIndex); -} -} // namespace internal -} // namespace v8 |