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 8 namespace v8 { 9 10 class Isolate; 11 12 // --- Microtasks Callbacks --- 13 using MicrotasksCompletedCallbackWithData = void (*)(Isolate*, void*); 14 using 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 */ 24 enum class MicrotasksPolicy { kExplicit, kScoped, kAuto }; 25 26 } // namespace v8 27 28 #endif // INCLUDE_V8_MICROTASK_H_ 29