1// Copyright 2021 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef INCLUDE_V8_MICROTASK_H_
6#define INCLUDE_V8_MICROTASK_H_
7
8namespace v8 {
9
10class Isolate;
11
12// --- Microtasks Callbacks ---
13using MicrotasksCompletedCallbackWithData = void (*)(Isolate*, void*);
14using MicrotaskCallback = void (*)(void* data);
15
16/**
17 * Policy for running microtasks:
18 *   - explicit: microtasks are invoked with the
19 *               Isolate::PerformMicrotaskCheckpoint() method;
20 *   - scoped: microtasks invocation is controlled by MicrotasksScope objects;
21 *   - auto: microtasks are invoked when the script call depth decrements
22 *           to zero.
23 */
24enum class MicrotasksPolicy { kExplicit, kScoped, kAuto };
25
26}  // namespace v8
27
28#endif  // INCLUDE_V8_MICROTASK_H_
29