// Copyright 2018 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. #ifndef V8_D8_D8_PLATFORMS_H_ #define V8_D8_D8_PLATFORMS_H_ #include <cstdint> #include <memory> namespace v8 { class Isolate; class Platform; // Returns a predictable v8::Platform implementation. // Worker threads are disabled, idle tasks are disallowed, and the time reported // by {MonotonicallyIncreasingTime} is deterministic. std::unique_ptr<Platform> MakePredictablePlatform( std::unique_ptr<Platform> platform); // Returns a v8::Platform implementation which randomly delays tasks (both // foreground and background) for stress-testing different interleavings. // If {random_seed} is 0, a random seed is chosen. std::unique_ptr<Platform> MakeDelayedTasksPlatform( std::unique_ptr<Platform> platform, int64_t random_seed); // We use the task queue of {kProcessGlobalPredictablePlatformWorkerTaskQueue} // for worker tasks of the {PredictablePlatform}. At the moment, {nullptr} is a // valid value for the isolate. If this ever changes, we either have to allocate // a core isolate, or refactor the implementation of worker tasks in the // {PredictablePlatform}. constexpr Isolate* kProcessGlobalPredictablePlatformWorkerTaskQueue = …; } // namespace v8 #endif // V8_D8_D8_PLATFORMS_H_