// 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. #include "src/tasks/task-utils.h" #include "src/tasks/cancelable-task.h" namespace v8 { namespace internal { namespace { class CancelableFuncTask final : public CancelableTask { public: CancelableFuncTask(Isolate* isolate, std::function func) : CancelableTask(isolate), func_(std::move(func)) {} CancelableFuncTask(CancelableTaskManager* manager, std::function func) : CancelableTask(manager), func_(std::move(func)) {} void RunInternal() final { func_(); } private: const std::function func_; }; class CancelableIdleFuncTask final : public CancelableIdleTask { public: CancelableIdleFuncTask(Isolate* isolate, std::function func) : CancelableIdleTask(isolate), func_(std::move(func)) {} CancelableIdleFuncTask(CancelableTaskManager* manager, std::function func) : CancelableIdleTask(manager), func_(std::move(func)) {} void RunInternal(double deadline_in_seconds) final { func_(deadline_in_seconds); } private: const std::function func_; }; } // namespace std::unique_ptr MakeCancelableTask(Isolate* isolate, std::function func) { return base::make_unique(isolate, std::move(func)); } std::unique_ptr MakeCancelableTask( CancelableTaskManager* manager, std::function func) { return base::make_unique(manager, std::move(func)); } std::unique_ptr MakeCancelableIdleTask( Isolate* isolate, std::function func) { return base::make_unique(isolate, std::move(func)); } std::unique_ptr MakeCancelableIdleTask( CancelableTaskManager* manager, std::function func) { return base::make_unique(manager, std::move(func)); } } // namespace internal } // namespace v8