@kungfu-tech/libnode-win32-x64 22.22.3-kf.0 → 22.22.3-kf.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/dist/node/include/acorn_version.h +6 -0
  2. package/dist/node/include/aliased_buffer-inl.h +244 -0
  3. package/dist/node/include/aliased_buffer.h +206 -0
  4. package/dist/node/include/aliased_struct-inl.h +54 -0
  5. package/dist/node/include/aliased_struct.h +63 -0
  6. package/dist/node/include/amaro_version.h +6 -0
  7. package/dist/node/include/async_context_frame.h +33 -0
  8. package/dist/node/include/async_wrap-inl.h +96 -0
  9. package/dist/node/include/async_wrap.h +243 -0
  10. package/dist/node/include/base_object-inl.h +335 -0
  11. package/dist/node/include/base_object.h +342 -0
  12. package/dist/node/include/base_object_types.h +74 -0
  13. package/dist/node/include/blob_serializer_deserializer-inl.h +385 -0
  14. package/dist/node/include/blob_serializer_deserializer.h +132 -0
  15. package/dist/node/include/callback_queue-inl.h +97 -0
  16. package/dist/node/include/callback_queue.h +79 -0
  17. package/dist/node/include/cares_wrap.h +447 -0
  18. package/dist/node/include/cjs_module_lexer_version.h +6 -0
  19. package/dist/node/include/cleanup_queue-inl.h +36 -0
  20. package/dist/node/include/cleanup_queue.h +79 -0
  21. package/dist/node/include/compile_cache.h +104 -0
  22. package/dist/node/include/connect_wrap.h +26 -0
  23. package/dist/node/include/connection_wrap.h +30 -0
  24. package/dist/node/include/cppgc/allocation.h +310 -0
  25. package/dist/node/include/cppgc/common.h +28 -0
  26. package/dist/node/include/cppgc/cross-thread-persistent.h +466 -0
  27. package/dist/node/include/cppgc/custom-space.h +97 -0
  28. package/dist/node/include/cppgc/default-platform.h +67 -0
  29. package/dist/node/include/cppgc/ephemeron-pair.h +30 -0
  30. package/dist/node/include/cppgc/explicit-management.h +100 -0
  31. package/dist/node/include/cppgc/garbage-collected.h +106 -0
  32. package/dist/node/include/cppgc/heap-consistency.h +309 -0
  33. package/dist/node/include/cppgc/heap-handle.h +48 -0
  34. package/dist/node/include/cppgc/heap-state.h +82 -0
  35. package/dist/node/include/cppgc/heap-statistics.h +120 -0
  36. package/dist/node/include/cppgc/heap.h +202 -0
  37. package/dist/node/include/cppgc/internal/api-constants.h +87 -0
  38. package/dist/node/include/cppgc/internal/atomic-entry-flag.h +48 -0
  39. package/dist/node/include/cppgc/internal/base-page-handle.h +45 -0
  40. package/dist/node/include/cppgc/internal/caged-heap-local-data.h +121 -0
  41. package/dist/node/include/cppgc/internal/caged-heap.h +68 -0
  42. package/dist/node/include/cppgc/internal/compiler-specific.h +38 -0
  43. package/dist/node/include/cppgc/internal/finalizer-trait.h +93 -0
  44. package/dist/node/include/cppgc/internal/gc-info.h +148 -0
  45. package/dist/node/include/cppgc/internal/logging.h +50 -0
  46. package/dist/node/include/cppgc/internal/member-storage.h +256 -0
  47. package/dist/node/include/cppgc/internal/name-trait.h +137 -0
  48. package/dist/node/include/cppgc/internal/persistent-node.h +214 -0
  49. package/dist/node/include/cppgc/internal/pointer-policies.h +243 -0
  50. package/dist/node/include/cppgc/internal/write-barrier.h +487 -0
  51. package/dist/node/include/cppgc/liveness-broker.h +78 -0
  52. package/dist/node/include/cppgc/macros.h +35 -0
  53. package/dist/node/include/cppgc/member.h +629 -0
  54. package/dist/node/include/cppgc/name-provider.h +65 -0
  55. package/dist/node/include/cppgc/object-size-trait.h +58 -0
  56. package/dist/node/include/cppgc/persistent.h +377 -0
  57. package/dist/node/include/cppgc/platform.h +163 -0
  58. package/dist/node/include/cppgc/prefinalizer.h +75 -0
  59. package/dist/node/include/cppgc/process-heap-statistics.h +36 -0
  60. package/dist/node/include/cppgc/sentinel-pointer.h +39 -0
  61. package/dist/node/include/cppgc/source-location.h +16 -0
  62. package/dist/node/include/cppgc/testing.h +106 -0
  63. package/dist/node/include/cppgc/trace-trait.h +128 -0
  64. package/dist/node/include/cppgc/type-traits.h +271 -0
  65. package/dist/node/include/cppgc/visitor.h +504 -0
  66. package/dist/node/include/crypto/crypto_aes.h +88 -0
  67. package/dist/node/include/crypto/crypto_bio.h +193 -0
  68. package/dist/node/include/crypto/crypto_cipher.h +293 -0
  69. package/dist/node/include/crypto/crypto_clienthello-inl.h +90 -0
  70. package/dist/node/include/crypto/crypto_clienthello.h +131 -0
  71. package/dist/node/include/crypto/crypto_common.h +64 -0
  72. package/dist/node/include/crypto/crypto_context.h +171 -0
  73. package/dist/node/include/crypto/crypto_dh.h +126 -0
  74. package/dist/node/include/crypto/crypto_dsa.h +52 -0
  75. package/dist/node/include/crypto/crypto_ec.h +164 -0
  76. package/dist/node/include/crypto/crypto_hash.h +91 -0
  77. package/dist/node/include/crypto/crypto_hkdf.h +61 -0
  78. package/dist/node/include/crypto/crypto_hmac.h +92 -0
  79. package/dist/node/include/crypto/crypto_keygen.h +299 -0
  80. package/dist/node/include/crypto/crypto_keys.h +392 -0
  81. package/dist/node/include/crypto/crypto_pbkdf2.h +74 -0
  82. package/dist/node/include/crypto/crypto_random.h +124 -0
  83. package/dist/node/include/crypto/crypto_rsa.h +136 -0
  84. package/dist/node/include/crypto/crypto_scrypt.h +85 -0
  85. package/dist/node/include/crypto/crypto_sig.h +165 -0
  86. package/dist/node/include/crypto/crypto_spkac.h +21 -0
  87. package/dist/node/include/crypto/crypto_timing.h +20 -0
  88. package/dist/node/include/crypto/crypto_tls.h +305 -0
  89. package/dist/node/include/crypto/crypto_util.h +725 -0
  90. package/dist/node/include/crypto/crypto_x509.h +140 -0
  91. package/dist/node/include/dataqueue/queue.h +306 -0
  92. package/dist/node/include/debug_utils-inl.h +278 -0
  93. package/dist/node/include/debug_utils.h +196 -0
  94. package/dist/node/include/diagnosticfilename-inl.h +33 -0
  95. package/dist/node/include/embedded_data.h +17 -0
  96. package/dist/node/include/encoding_binding.h +61 -0
  97. package/dist/node/include/env-inl.h +984 -0
  98. package/dist/node/include/env.h +1287 -0
  99. package/dist/node/include/env_properties.h +540 -0
  100. package/dist/node/include/handle_wrap.h +123 -0
  101. package/dist/node/include/histogram-inl.h +107 -0
  102. package/dist/node/include/histogram.h +279 -0
  103. package/dist/node/include/inspector/io_agent.h +30 -0
  104. package/dist/node/include/inspector/main_thread_interface.h +116 -0
  105. package/dist/node/include/inspector/network_agent.h +94 -0
  106. package/dist/node/include/inspector/network_inspector.h +45 -0
  107. package/dist/node/include/inspector/network_requests_buffer.h +195 -0
  108. package/dist/node/include/inspector/network_resource_manager.h +29 -0
  109. package/dist/node/include/inspector/node_json.h +24 -0
  110. package/dist/node/include/inspector/node_string.h +101 -0
  111. package/dist/node/include/inspector/protocol_helper.h +27 -0
  112. package/dist/node/include/inspector/runtime_agent.h +41 -0
  113. package/dist/node/include/inspector/target_agent.h +75 -0
  114. package/dist/node/include/inspector/tracing_agent.h +43 -0
  115. package/dist/node/include/inspector/worker_agent.h +40 -0
  116. package/dist/node/include/inspector/worker_inspector.h +124 -0
  117. package/dist/node/include/inspector_agent.h +165 -0
  118. package/dist/node/include/inspector_io.h +78 -0
  119. package/dist/node/include/inspector_profiler.h +149 -0
  120. package/dist/node/include/inspector_socket.h +60 -0
  121. package/dist/node/include/inspector_socket_server.h +110 -0
  122. package/dist/node/include/js_native_api.h +607 -0
  123. package/dist/node/include/js_native_api_types.h +226 -0
  124. package/dist/node/include/js_native_api_v8.h +485 -0
  125. package/dist/node/include/js_native_api_v8_internals.h +45 -0
  126. package/dist/node/include/js_stream.h +52 -0
  127. package/dist/node/include/json_utils.h +172 -0
  128. package/dist/node/include/large_pages/node_large_page.h +34 -0
  129. package/dist/node/include/libplatform/libplatform-export.h +29 -0
  130. package/dist/node/include/libplatform/libplatform.h +112 -0
  131. package/dist/node/include/libplatform/v8-tracing.h +333 -0
  132. package/dist/node/include/memory_tracker-inl.h +359 -0
  133. package/dist/node/include/memory_tracker.h +289 -0
  134. package/dist/node/include/module_wrap.h +216 -0
  135. package/dist/node/include/node.h +1593 -0
  136. package/dist/node/include/node_api.h +265 -0
  137. package/dist/node/include/node_api_internals.h +48 -0
  138. package/dist/node/include/node_api_types.h +56 -0
  139. package/dist/node/include/node_binding.h +161 -0
  140. package/dist/node/include/node_blob.h +159 -0
  141. package/dist/node/include/node_bob-inl.h +36 -0
  142. package/dist/node/include/node_bob.h +107 -0
  143. package/dist/node/include/node_buffer.h +92 -0
  144. package/dist/node/include/node_builtins.h +220 -0
  145. package/dist/node/include/node_config_file.h +46 -0
  146. package/dist/node/include/node_constants.h +82 -0
  147. package/dist/node/include/node_context_data.h +168 -0
  148. package/dist/node/include/node_contextify.h +204 -0
  149. package/dist/node/include/node_crypto.h +56 -0
  150. package/dist/node/include/node_debug.h +30 -0
  151. package/dist/node/include/node_dir.h +52 -0
  152. package/dist/node/include/node_dotenv.h +45 -0
  153. package/dist/node/include/node_errors.h +380 -0
  154. package/dist/node/include/node_exit_code.h +54 -0
  155. package/dist/node/include/node_external_reference.h +165 -0
  156. package/dist/node/include/node_file-inl.h +406 -0
  157. package/dist/node/include/node_file.h +537 -0
  158. package/dist/node/include/node_http2.h +1177 -0
  159. package/dist/node/include/node_http2_state.h +159 -0
  160. package/dist/node/include/node_http_common-inl.h +202 -0
  161. package/dist/node/include/node_http_common.h +535 -0
  162. package/dist/node/include/node_i18n.h +132 -0
  163. package/dist/node/include/node_internals.h +483 -0
  164. package/dist/node/include/node_main_instance.h +67 -0
  165. package/dist/node/include/node_mem-inl.h +113 -0
  166. package/dist/node/include/node_mem.h +45 -0
  167. package/dist/node/include/node_messaging.h +389 -0
  168. package/dist/node/include/node_metadata.h +164 -0
  169. package/dist/node/include/node_modules.h +91 -0
  170. package/dist/node/include/node_mutex.h +323 -0
  171. package/dist/node/include/node_object_wrap.h +132 -0
  172. package/dist/node/include/node_options-inl.h +490 -0
  173. package/dist/node/include/node_options.h +615 -0
  174. package/dist/node/include/node_perf.h +166 -0
  175. package/dist/node/include/node_perf_common.h +102 -0
  176. package/dist/node/include/node_platform.h +238 -0
  177. package/dist/node/include/node_process-inl.h +26 -0
  178. package/dist/node/include/node_process.h +112 -0
  179. package/dist/node/include/node_realm-inl.h +151 -0
  180. package/dist/node/include/node_realm.h +183 -0
  181. package/dist/node/include/node_report.h +43 -0
  182. package/dist/node/include/node_revert.h +82 -0
  183. package/dist/node/include/node_root_certs.h +3520 -0
  184. package/dist/node/include/node_sea.h +74 -0
  185. package/dist/node/include/node_shadow_realm.h +46 -0
  186. package/dist/node/include/node_snapshot_builder.h +57 -0
  187. package/dist/node/include/node_snapshotable.h +174 -0
  188. package/dist/node/include/node_sockaddr-inl.h +257 -0
  189. package/dist/node/include/node_sockaddr.h +394 -0
  190. package/dist/node/include/node_sqlite.h +270 -0
  191. package/dist/node/include/node_stat_watcher.h +73 -0
  192. package/dist/node/include/node_task_runner.h +92 -0
  193. package/dist/node/include/node_threadsafe_cow-inl.h +54 -0
  194. package/dist/node/include/node_threadsafe_cow.h +105 -0
  195. package/dist/node/include/node_union_bytes.h +81 -0
  196. package/dist/node/include/node_url.h +96 -0
  197. package/dist/node/include/node_v8.h +77 -0
  198. package/dist/node/include/node_v8_platform-inl.h +185 -0
  199. package/dist/node/include/node_version.h +110 -0
  200. package/dist/node/include/node_wasi.h +184 -0
  201. package/dist/node/include/node_wasm_web_api.h +55 -0
  202. package/dist/node/include/node_watchdog.h +154 -0
  203. package/dist/node/include/node_webstorage.h +60 -0
  204. package/dist/node/include/node_worker.h +158 -0
  205. package/dist/node/include/path.h +33 -0
  206. package/dist/node/include/permission/addon_permission.h +31 -0
  207. package/dist/node/include/permission/child_process_permission.h +31 -0
  208. package/dist/node/include/permission/fs_permission.h +167 -0
  209. package/dist/node/include/permission/inspector_permission.h +31 -0
  210. package/dist/node/include/permission/permission.h +138 -0
  211. package/dist/node/include/permission/permission_base.h +65 -0
  212. package/dist/node/include/permission/wasi_permission.h +31 -0
  213. package/dist/node/include/permission/worker_permission.h +31 -0
  214. package/dist/node/include/pipe_wrap.h +80 -0
  215. package/dist/node/include/quic/application.h +159 -0
  216. package/dist/node/include/quic/bindingdata.h +272 -0
  217. package/dist/node/include/quic/cid.h +127 -0
  218. package/dist/node/include/quic/data.h +148 -0
  219. package/dist/node/include/quic/defs.h +245 -0
  220. package/dist/node/include/quic/endpoint.h +458 -0
  221. package/dist/node/include/quic/http3.h +15 -0
  222. package/dist/node/include/quic/logstream.h +81 -0
  223. package/dist/node/include/quic/packet.h +152 -0
  224. package/dist/node/include/quic/preferredaddress.h +72 -0
  225. package/dist/node/include/quic/session.h +443 -0
  226. package/dist/node/include/quic/sessionticket.h +108 -0
  227. package/dist/node/include/quic/streams.h +232 -0
  228. package/dist/node/include/quic/tlscontext.h +227 -0
  229. package/dist/node/include/quic/tokens.h +256 -0
  230. package/dist/node/include/quic/transportparams.h +165 -0
  231. package/dist/node/include/req_wrap-inl.h +171 -0
  232. package/dist/node/include/req_wrap.h +77 -0
  233. package/dist/node/include/spawn_sync.h +243 -0
  234. package/dist/node/include/stream_base-inl.h +173 -0
  235. package/dist/node/include/stream_base.h +478 -0
  236. package/dist/node/include/stream_pipe.h +76 -0
  237. package/dist/node/include/stream_wrap.h +132 -0
  238. package/dist/node/include/string_bytes.h +113 -0
  239. package/dist/node/include/string_decoder-inl.h +31 -0
  240. package/dist/node/include/string_decoder.h +49 -0
  241. package/dist/node/include/tcp_wrap.h +105 -0
  242. package/dist/node/include/threadpoolwork-inl.h +70 -0
  243. package/dist/node/include/timer_wrap-inl.h +32 -0
  244. package/dist/node/include/timer_wrap.h +85 -0
  245. package/dist/node/include/timers.h +70 -0
  246. package/dist/node/include/tracing/agent.h +195 -0
  247. package/dist/node/include/tracing/node_trace_buffer.h +83 -0
  248. package/dist/node/include/tracing/node_trace_writer.h +75 -0
  249. package/dist/node/include/tracing/trace_event.h +722 -0
  250. package/dist/node/include/tracing/trace_event_common.h +1109 -0
  251. package/dist/node/include/tracing/traced_value.h +129 -0
  252. package/dist/node/include/tty_wrap.h +65 -0
  253. package/dist/node/include/udp_wrap.h +230 -0
  254. package/dist/node/include/undici_version.h +6 -0
  255. package/dist/node/include/util-inl.h +700 -0
  256. package/dist/node/include/util.h +1021 -0
  257. package/dist/node/include/uv/aix.h +32 -0
  258. package/dist/node/include/uv/bsd.h +34 -0
  259. package/dist/node/include/uv/darwin.h +61 -0
  260. package/dist/node/include/uv/errno.h +483 -0
  261. package/dist/node/include/uv/linux.h +34 -0
  262. package/dist/node/include/uv/os390.h +33 -0
  263. package/dist/node/include/uv/posix.h +31 -0
  264. package/dist/node/include/uv/sunos.h +44 -0
  265. package/dist/node/include/uv/threadpool.h +37 -0
  266. package/dist/node/include/uv/tree.h +521 -0
  267. package/dist/node/include/uv/unix.h +512 -0
  268. package/dist/node/include/uv/version.h +43 -0
  269. package/dist/node/include/uv/win.h +698 -0
  270. package/dist/node/include/uv.h +1990 -0
  271. package/dist/node/include/v8-array-buffer.h +525 -0
  272. package/dist/node/include/v8-callbacks.h +462 -0
  273. package/dist/node/include/v8-container.h +183 -0
  274. package/dist/node/include/v8-context.h +485 -0
  275. package/dist/node/include/v8-cppgc.h +245 -0
  276. package/dist/node/include/v8-data.h +80 -0
  277. package/dist/node/include/v8-date.h +48 -0
  278. package/dist/node/include/v8-debug.h +168 -0
  279. package/dist/node/include/v8-embedder-heap.h +82 -0
  280. package/dist/node/include/v8-embedder-state-scope.h +52 -0
  281. package/dist/node/include/v8-exception.h +223 -0
  282. package/dist/node/include/v8-extension.h +62 -0
  283. package/dist/node/include/v8-external.h +37 -0
  284. package/dist/node/include/v8-fast-api-calls.h +984 -0
  285. package/dist/node/include/v8-forward.h +82 -0
  286. package/dist/node/include/v8-function-callback.h +607 -0
  287. package/dist/node/include/v8-function.h +140 -0
  288. package/dist/node/include/v8-handle-base.h +137 -0
  289. package/dist/node/include/v8-initialization.h +289 -0
  290. package/dist/node/include/v8-inspector-protocol.h +13 -0
  291. package/dist/node/include/v8-inspector.h +419 -0
  292. package/dist/node/include/v8-internal.h +1397 -0
  293. package/dist/node/include/v8-isolate.h +1767 -0
  294. package/dist/node/include/v8-json.h +47 -0
  295. package/dist/node/include/v8-local-handle.h +758 -0
  296. package/dist/node/include/v8-locker.h +138 -0
  297. package/dist/node/include/v8-maybe.h +160 -0
  298. package/dist/node/include/v8-memory-span.h +198 -0
  299. package/dist/node/include/v8-message.h +233 -0
  300. package/dist/node/include/v8-metrics.h +264 -0
  301. package/dist/node/include/v8-microtask-queue.h +157 -0
  302. package/dist/node/include/v8-microtask.h +28 -0
  303. package/dist/node/include/v8-object.h +824 -0
  304. package/dist/node/include/v8-persistent-handle.h +582 -0
  305. package/dist/node/include/v8-platform.h +1358 -0
  306. package/dist/node/include/v8-primitive-object.h +118 -0
  307. package/dist/node/include/v8-primitive.h +877 -0
  308. package/dist/node/include/v8-profiler.h +1302 -0
  309. package/dist/node/include/v8-promise.h +174 -0
  310. package/dist/node/include/v8-proxy.h +50 -0
  311. package/dist/node/include/v8-regexp.h +106 -0
  312. package/dist/node/include/v8-script.h +904 -0
  313. package/dist/node/include/v8-snapshot.h +266 -0
  314. package/dist/node/include/v8-source-location.h +92 -0
  315. package/dist/node/include/v8-statistics.h +238 -0
  316. package/dist/node/include/v8-template.h +1297 -0
  317. package/dist/node/include/v8-traced-handle.h +432 -0
  318. package/dist/node/include/v8-typed-array.h +390 -0
  319. package/dist/node/include/v8-unwinder-state.h +31 -0
  320. package/dist/node/include/v8-unwinder.h +132 -0
  321. package/dist/node/include/v8-util.h +665 -0
  322. package/dist/node/include/v8-value-serializer-version.h +24 -0
  323. package/dist/node/include/v8-value-serializer.h +316 -0
  324. package/dist/node/include/v8-value.h +655 -0
  325. package/dist/node/include/v8-version-string.h +38 -0
  326. package/dist/node/include/v8-version.h +20 -0
  327. package/dist/node/include/v8-wasm-trap-handler-posix.h +31 -0
  328. package/dist/node/include/v8-wasm-trap-handler-win.h +28 -0
  329. package/dist/node/include/v8-wasm.h +201 -0
  330. package/dist/node/include/v8-weak-callback-info.h +80 -0
  331. package/dist/node/include/v8.h +88 -0
  332. package/dist/node/include/v8config.h +981 -0
  333. package/dist/node/include/zlib_version.h +6 -0
  334. package/dist/node/libnode.dll +0 -0
  335. package/dist/node/libnode.lib +0 -0
  336. package/dist/node/libnodebuildinfo.json +10 -0
  337. package/dist/node/link_node.lib +0 -0
  338. package/dist/node/link_node.node +0 -0
  339. package/ensure-libnode-aliases.js +41 -0
  340. package/index.js +2 -0
  341. package/libnode.release.json +2 -2
  342. package/package.json +2 -1
@@ -0,0 +1,233 @@
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_MESSAGE_H_
6
+ #define INCLUDE_V8_MESSAGE_H_
7
+
8
+ #include <stdio.h>
9
+
10
+ #include <iosfwd>
11
+
12
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
13
+ #include "v8-maybe.h" // NOLINT(build/include_directory)
14
+ #include "v8-primitive.h" // NOLINT(build/include_directory)
15
+ #include "v8config.h" // NOLINT(build/include_directory)
16
+
17
+ namespace v8 {
18
+
19
+ class Integer;
20
+ class PrimitiveArray;
21
+ class StackTrace;
22
+ class String;
23
+ class Value;
24
+
25
+ /**
26
+ * The optional attributes of ScriptOrigin.
27
+ */
28
+ class ScriptOriginOptions {
29
+ public:
30
+ V8_INLINE ScriptOriginOptions(bool is_shared_cross_origin = false,
31
+ bool is_opaque = false, bool is_wasm = false,
32
+ bool is_module = false)
33
+ : flags_((is_shared_cross_origin ? kIsSharedCrossOrigin : 0) |
34
+ (is_wasm ? kIsWasm : 0) | (is_opaque ? kIsOpaque : 0) |
35
+ (is_module ? kIsModule : 0)) {}
36
+ V8_INLINE ScriptOriginOptions(int flags)
37
+ : flags_(flags &
38
+ (kIsSharedCrossOrigin | kIsOpaque | kIsWasm | kIsModule)) {}
39
+
40
+ bool IsSharedCrossOrigin() const {
41
+ return (flags_ & kIsSharedCrossOrigin) != 0;
42
+ }
43
+ bool IsOpaque() const { return (flags_ & kIsOpaque) != 0; }
44
+ bool IsWasm() const { return (flags_ & kIsWasm) != 0; }
45
+ bool IsModule() const { return (flags_ & kIsModule) != 0; }
46
+
47
+ int Flags() const { return flags_; }
48
+
49
+ private:
50
+ enum {
51
+ kIsSharedCrossOrigin = 1,
52
+ kIsOpaque = 1 << 1,
53
+ kIsWasm = 1 << 2,
54
+ kIsModule = 1 << 3
55
+ };
56
+ const int flags_;
57
+ };
58
+
59
+ /**
60
+ * The origin, within a file, of a script.
61
+ */
62
+ class V8_EXPORT ScriptOrigin {
63
+ public:
64
+ V8_DEPRECATE_SOON("Use constructor without the isolate.")
65
+ V8_INLINE ScriptOrigin(Isolate* isolate, Local<Value> resource_name,
66
+ int resource_line_offset = 0,
67
+ int resource_column_offset = 0,
68
+ bool resource_is_shared_cross_origin = false,
69
+ int script_id = -1,
70
+ Local<Value> source_map_url = Local<Value>(),
71
+ bool resource_is_opaque = false, bool is_wasm = false,
72
+ bool is_module = false,
73
+ Local<Data> host_defined_options = Local<Data>())
74
+ : resource_name_(resource_name),
75
+ resource_line_offset_(resource_line_offset),
76
+ resource_column_offset_(resource_column_offset),
77
+ options_(resource_is_shared_cross_origin, resource_is_opaque, is_wasm,
78
+ is_module),
79
+ script_id_(script_id),
80
+ source_map_url_(source_map_url),
81
+ host_defined_options_(host_defined_options) {
82
+ VerifyHostDefinedOptions();
83
+ }
84
+
85
+ V8_INLINE ScriptOrigin(Local<Value> resource_name,
86
+ int resource_line_offset = 0,
87
+ int resource_column_offset = 0,
88
+ bool resource_is_shared_cross_origin = false,
89
+ int script_id = -1,
90
+ Local<Value> source_map_url = Local<Value>(),
91
+ bool resource_is_opaque = false, bool is_wasm = false,
92
+ bool is_module = false,
93
+ Local<Data> host_defined_options = Local<Data>())
94
+ : resource_name_(resource_name),
95
+ resource_line_offset_(resource_line_offset),
96
+ resource_column_offset_(resource_column_offset),
97
+ options_(resource_is_shared_cross_origin, resource_is_opaque, is_wasm,
98
+ is_module),
99
+ script_id_(script_id),
100
+ source_map_url_(source_map_url),
101
+ host_defined_options_(host_defined_options) {
102
+ VerifyHostDefinedOptions();
103
+ }
104
+
105
+ V8_INLINE Local<Value> ResourceName() const;
106
+ V8_INLINE int LineOffset() const;
107
+ V8_INLINE int ColumnOffset() const;
108
+ V8_INLINE int ScriptId() const;
109
+ V8_INLINE Local<Value> SourceMapUrl() const;
110
+ V8_INLINE Local<Data> GetHostDefinedOptions() const;
111
+ V8_INLINE ScriptOriginOptions Options() const { return options_; }
112
+
113
+ private:
114
+ void VerifyHostDefinedOptions() const;
115
+ Local<Value> resource_name_;
116
+ int resource_line_offset_;
117
+ int resource_column_offset_;
118
+ ScriptOriginOptions options_;
119
+ int script_id_;
120
+ Local<Value> source_map_url_;
121
+ Local<Data> host_defined_options_;
122
+ };
123
+
124
+ /**
125
+ * An error message.
126
+ */
127
+ class V8_EXPORT Message {
128
+ public:
129
+ Local<String> Get() const;
130
+
131
+ /**
132
+ * Return the isolate to which the Message belongs.
133
+ */
134
+ Isolate* GetIsolate() const;
135
+
136
+ V8_WARN_UNUSED_RESULT MaybeLocal<String> GetSource(
137
+ Local<Context> context) const;
138
+ V8_WARN_UNUSED_RESULT MaybeLocal<String> GetSourceLine(
139
+ Local<Context> context) const;
140
+
141
+ /**
142
+ * Returns the origin for the script from where the function causing the
143
+ * error originates.
144
+ */
145
+ ScriptOrigin GetScriptOrigin() const;
146
+
147
+ /**
148
+ * Returns the resource name for the script from where the function causing
149
+ * the error originates.
150
+ */
151
+ Local<Value> GetScriptResourceName() const;
152
+
153
+ /**
154
+ * Exception stack trace. By default stack traces are not captured for
155
+ * uncaught exceptions. SetCaptureStackTraceForUncaughtExceptions allows
156
+ * to change this option.
157
+ */
158
+ Local<StackTrace> GetStackTrace() const;
159
+
160
+ /**
161
+ * Returns the number, 1-based, of the line where the error occurred.
162
+ */
163
+ V8_WARN_UNUSED_RESULT Maybe<int> GetLineNumber(Local<Context> context) const;
164
+
165
+ /**
166
+ * Returns the index within the script of the first character where
167
+ * the error occurred.
168
+ */
169
+ int GetStartPosition() const;
170
+
171
+ /**
172
+ * Returns the index within the script of the last character where
173
+ * the error occurred.
174
+ */
175
+ int GetEndPosition() const;
176
+
177
+ /**
178
+ * Returns the Wasm function index where the error occurred. Returns -1 if
179
+ * message is not from a Wasm script.
180
+ */
181
+ int GetWasmFunctionIndex() const;
182
+
183
+ /**
184
+ * Returns the error level of the message.
185
+ */
186
+ int ErrorLevel() const;
187
+
188
+ /**
189
+ * Returns the index within the line of the first character where
190
+ * the error occurred.
191
+ */
192
+ int GetStartColumn() const;
193
+ V8_WARN_UNUSED_RESULT Maybe<int> GetStartColumn(Local<Context> context) const;
194
+
195
+ /**
196
+ * Returns the index within the line of the last character where
197
+ * the error occurred.
198
+ */
199
+ int GetEndColumn() const;
200
+ V8_WARN_UNUSED_RESULT Maybe<int> GetEndColumn(Local<Context> context) const;
201
+
202
+ /**
203
+ * Passes on the value set by the embedder when it fed the script from which
204
+ * this Message was generated to V8.
205
+ */
206
+ bool IsSharedCrossOrigin() const;
207
+ bool IsOpaque() const;
208
+
209
+ static void PrintCurrentStackTrace(Isolate* isolate, std::ostream& out);
210
+
211
+ static const int kNoLineNumberInfo = 0;
212
+ static const int kNoColumnInfo = 0;
213
+ static const int kNoScriptIdInfo = 0;
214
+ static const int kNoWasmFunctionIndexInfo = -1;
215
+ };
216
+
217
+ Local<Value> ScriptOrigin::ResourceName() const { return resource_name_; }
218
+
219
+ Local<Data> ScriptOrigin::GetHostDefinedOptions() const {
220
+ return host_defined_options_;
221
+ }
222
+
223
+ int ScriptOrigin::LineOffset() const { return resource_line_offset_; }
224
+
225
+ int ScriptOrigin::ColumnOffset() const { return resource_column_offset_; }
226
+
227
+ int ScriptOrigin::ScriptId() const { return script_id_; }
228
+
229
+ Local<Value> ScriptOrigin::SourceMapUrl() const { return source_map_url_; }
230
+
231
+ } // namespace v8
232
+
233
+ #endif // INCLUDE_V8_MESSAGE_H_
@@ -0,0 +1,264 @@
1
+ // Copyright 2020 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 V8_METRICS_H_
6
+ #define V8_METRICS_H_
7
+
8
+ #include <stddef.h>
9
+ #include <stdint.h>
10
+
11
+ #include <vector>
12
+
13
+ #include "v8-internal.h" // NOLINT(build/include_directory)
14
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
15
+ #include "v8config.h" // NOLINT(build/include_directory)
16
+
17
+ namespace v8 {
18
+
19
+ class Context;
20
+ class Isolate;
21
+
22
+ namespace metrics {
23
+
24
+ struct GarbageCollectionPhases {
25
+ int64_t total_wall_clock_duration_in_us = -1;
26
+ int64_t compact_wall_clock_duration_in_us = -1;
27
+ int64_t mark_wall_clock_duration_in_us = -1;
28
+ int64_t sweep_wall_clock_duration_in_us = -1;
29
+ int64_t weak_wall_clock_duration_in_us = -1;
30
+ };
31
+
32
+ struct GarbageCollectionSizes {
33
+ int64_t bytes_before = -1;
34
+ int64_t bytes_after = -1;
35
+ int64_t bytes_freed = -1;
36
+ };
37
+
38
+ struct GarbageCollectionFullCycle {
39
+ int reason = -1;
40
+ GarbageCollectionPhases total;
41
+ GarbageCollectionPhases total_cpp;
42
+ GarbageCollectionPhases main_thread;
43
+ GarbageCollectionPhases main_thread_cpp;
44
+ GarbageCollectionPhases main_thread_atomic;
45
+ GarbageCollectionPhases main_thread_atomic_cpp;
46
+ GarbageCollectionPhases main_thread_incremental;
47
+ GarbageCollectionPhases main_thread_incremental_cpp;
48
+ GarbageCollectionSizes objects;
49
+ GarbageCollectionSizes objects_cpp;
50
+ GarbageCollectionSizes memory;
51
+ GarbageCollectionSizes memory_cpp;
52
+ double collection_rate_in_percent = -1.0;
53
+ double collection_rate_cpp_in_percent = -1.0;
54
+ double efficiency_in_bytes_per_us = -1.0;
55
+ double efficiency_cpp_in_bytes_per_us = -1.0;
56
+ double main_thread_efficiency_in_bytes_per_us = -1.0;
57
+ double main_thread_efficiency_cpp_in_bytes_per_us = -1.0;
58
+ int64_t incremental_marking_start_stop_wall_clock_duration_in_us = -1;
59
+ };
60
+
61
+ struct GarbageCollectionFullMainThreadIncrementalMark {
62
+ int64_t wall_clock_duration_in_us = -1;
63
+ int64_t cpp_wall_clock_duration_in_us = -1;
64
+ };
65
+
66
+ struct GarbageCollectionFullMainThreadIncrementalSweep {
67
+ int64_t wall_clock_duration_in_us = -1;
68
+ int64_t cpp_wall_clock_duration_in_us = -1;
69
+ };
70
+
71
+ template <typename EventType>
72
+ struct GarbageCollectionBatchedEvents {
73
+ std::vector<EventType> events;
74
+ };
75
+
76
+ using GarbageCollectionFullMainThreadBatchedIncrementalMark =
77
+ GarbageCollectionBatchedEvents<
78
+ GarbageCollectionFullMainThreadIncrementalMark>;
79
+ using GarbageCollectionFullMainThreadBatchedIncrementalSweep =
80
+ GarbageCollectionBatchedEvents<
81
+ GarbageCollectionFullMainThreadIncrementalSweep>;
82
+
83
+ struct GarbageCollectionYoungCycle {
84
+ int reason = -1;
85
+ int64_t total_wall_clock_duration_in_us = -1;
86
+ int64_t main_thread_wall_clock_duration_in_us = -1;
87
+ double collection_rate_in_percent = -1.0;
88
+ double efficiency_in_bytes_per_us = -1.0;
89
+ double main_thread_efficiency_in_bytes_per_us = -1.0;
90
+ #if defined(CPPGC_YOUNG_GENERATION)
91
+ GarbageCollectionPhases total_cpp;
92
+ GarbageCollectionSizes objects_cpp;
93
+ GarbageCollectionSizes memory_cpp;
94
+ double collection_rate_cpp_in_percent = -1.0;
95
+ double efficiency_cpp_in_bytes_per_us = -1.0;
96
+ double main_thread_efficiency_cpp_in_bytes_per_us = -1.0;
97
+ #endif // defined(CPPGC_YOUNG_GENERATION)
98
+ };
99
+
100
+ struct WasmModuleDecoded {
101
+ WasmModuleDecoded() = default;
102
+ WasmModuleDecoded(bool async, bool streamed, bool success,
103
+ size_t module_size_in_bytes, size_t function_count,
104
+ int64_t wall_clock_duration_in_us)
105
+ : async(async),
106
+ streamed(streamed),
107
+ success(success),
108
+ module_size_in_bytes(module_size_in_bytes),
109
+ function_count(function_count),
110
+ wall_clock_duration_in_us(wall_clock_duration_in_us) {}
111
+
112
+ bool async = false;
113
+ bool streamed = false;
114
+ bool success = false;
115
+ size_t module_size_in_bytes = 0;
116
+ size_t function_count = 0;
117
+ int64_t wall_clock_duration_in_us = -1;
118
+ };
119
+
120
+ struct WasmModuleCompiled {
121
+ WasmModuleCompiled() = default;
122
+
123
+ WasmModuleCompiled(bool async, bool streamed, bool cached, bool deserialized,
124
+ bool lazy, bool success, size_t code_size_in_bytes,
125
+ size_t liftoff_bailout_count,
126
+ int64_t wall_clock_duration_in_us)
127
+ : async(async),
128
+ streamed(streamed),
129
+ cached(cached),
130
+ deserialized(deserialized),
131
+ lazy(lazy),
132
+ success(success),
133
+ code_size_in_bytes(code_size_in_bytes),
134
+ liftoff_bailout_count(liftoff_bailout_count),
135
+ wall_clock_duration_in_us(wall_clock_duration_in_us) {}
136
+
137
+ bool async = false;
138
+ bool streamed = false;
139
+ bool cached = false;
140
+ bool deserialized = false;
141
+ bool lazy = false;
142
+ bool success = false;
143
+ size_t code_size_in_bytes = 0;
144
+ size_t liftoff_bailout_count = 0;
145
+ int64_t wall_clock_duration_in_us = -1;
146
+ };
147
+
148
+ struct WasmModuleInstantiated {
149
+ bool async = false;
150
+ bool success = false;
151
+ size_t imported_function_count = 0;
152
+ int64_t wall_clock_duration_in_us = -1;
153
+ };
154
+
155
+ struct WasmModulesPerIsolate {
156
+ size_t count = 0;
157
+ };
158
+
159
+ /**
160
+ * This class serves as a base class for recording event-based metrics in V8.
161
+ * There a two kinds of metrics, those which are expected to be thread-safe and
162
+ * whose implementation is required to fulfill this requirement and those whose
163
+ * implementation does not have that requirement and only needs to be
164
+ * executable on the main thread. If such an event is triggered from a
165
+ * background thread, it will be delayed and executed by the foreground task
166
+ * runner.
167
+ *
168
+ * The embedder is expected to call v8::Isolate::SetMetricsRecorder()
169
+ * providing its implementation and have the virtual methods overwritten
170
+ * for the events it cares about.
171
+ */
172
+ class V8_EXPORT Recorder {
173
+ public:
174
+ // A unique identifier for a context in this Isolate.
175
+ // It is guaranteed to not be reused throughout the lifetime of the Isolate.
176
+ class ContextId {
177
+ public:
178
+ ContextId() : id_(kEmptyId) {}
179
+
180
+ bool IsEmpty() const { return id_ == kEmptyId; }
181
+ static const ContextId Empty() { return ContextId{kEmptyId}; }
182
+
183
+ bool operator==(const ContextId& other) const { return id_ == other.id_; }
184
+ bool operator!=(const ContextId& other) const { return id_ != other.id_; }
185
+
186
+ private:
187
+ friend class ::v8::Context;
188
+ friend class ::v8::internal::Isolate;
189
+
190
+ explicit ContextId(uintptr_t id) : id_(id) {}
191
+
192
+ static constexpr uintptr_t kEmptyId = 0;
193
+ uintptr_t id_;
194
+ };
195
+
196
+ virtual ~Recorder() = default;
197
+
198
+ // Main thread events. Those are only triggered on the main thread, and hence
199
+ // can access the context.
200
+ #define ADD_MAIN_THREAD_EVENT(E) \
201
+ virtual void AddMainThreadEvent(const E&, ContextId) {}
202
+ ADD_MAIN_THREAD_EVENT(GarbageCollectionFullCycle)
203
+ ADD_MAIN_THREAD_EVENT(GarbageCollectionFullMainThreadIncrementalMark)
204
+ ADD_MAIN_THREAD_EVENT(GarbageCollectionFullMainThreadBatchedIncrementalMark)
205
+ ADD_MAIN_THREAD_EVENT(GarbageCollectionFullMainThreadIncrementalSweep)
206
+ ADD_MAIN_THREAD_EVENT(GarbageCollectionFullMainThreadBatchedIncrementalSweep)
207
+ ADD_MAIN_THREAD_EVENT(GarbageCollectionYoungCycle)
208
+ ADD_MAIN_THREAD_EVENT(WasmModuleDecoded)
209
+ ADD_MAIN_THREAD_EVENT(WasmModuleCompiled)
210
+ ADD_MAIN_THREAD_EVENT(WasmModuleInstantiated)
211
+ #undef ADD_MAIN_THREAD_EVENT
212
+
213
+ // Thread-safe events are not allowed to access the context and therefore do
214
+ // not carry a context ID with them. These IDs can be generated using
215
+ // Recorder::GetContextId() and the ID will be valid throughout the lifetime
216
+ // of the isolate. It is not guaranteed that the ID will still resolve to
217
+ // a valid context using Recorder::GetContext() at the time the metric is
218
+ // recorded. In this case, an empty handle will be returned.
219
+ #define ADD_THREAD_SAFE_EVENT(E) \
220
+ virtual void AddThreadSafeEvent(const E&) {}
221
+ ADD_THREAD_SAFE_EVENT(WasmModulesPerIsolate)
222
+ #undef ADD_THREAD_SAFE_EVENT
223
+
224
+ virtual void NotifyIsolateDisposal() {}
225
+
226
+ // Return the context with the given id or an empty handle if the context
227
+ // was already garbage collected.
228
+ static MaybeLocal<Context> GetContext(Isolate* isolate, ContextId id);
229
+ // Return the unique id corresponding to the given context.
230
+ static ContextId GetContextId(Local<Context> context);
231
+ };
232
+
233
+ /**
234
+ * Experimental API intended for the LongTasks UKM (crbug.com/1173527).
235
+ * The Reset() method should be called at the start of a potential
236
+ * long task. The Get() method returns durations of V8 work that
237
+ * happened during the task.
238
+ *
239
+ * This API is experimental and may be removed/changed in the future.
240
+ */
241
+ struct V8_EXPORT LongTaskStats {
242
+ /**
243
+ * Resets durations of V8 work for the new task.
244
+ */
245
+ V8_INLINE static void Reset(Isolate* isolate) {
246
+ v8::internal::Internals::IncrementLongTasksStatsCounter(isolate);
247
+ }
248
+
249
+ /**
250
+ * Returns durations of V8 work that happened since the last Reset().
251
+ */
252
+ static LongTaskStats Get(Isolate* isolate);
253
+
254
+ int64_t gc_full_atomic_wall_clock_duration_us = 0;
255
+ int64_t gc_full_incremental_wall_clock_duration_us = 0;
256
+ int64_t gc_young_wall_clock_duration_us = 0;
257
+ // Only collected with --slow-histograms
258
+ int64_t v8_execute_us = 0;
259
+ };
260
+
261
+ } // namespace metrics
262
+ } // namespace v8
263
+
264
+ #endif // V8_METRICS_H_
@@ -0,0 +1,157 @@
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_MICROTASKS_QUEUE_H_
6
+ #define INCLUDE_V8_MICROTASKS_QUEUE_H_
7
+
8
+ #include <stddef.h>
9
+
10
+ #include <memory>
11
+
12
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
13
+ #include "v8-microtask.h" // NOLINT(build/include_directory)
14
+ #include "v8config.h" // NOLINT(build/include_directory)
15
+
16
+ namespace v8 {
17
+
18
+ class Function;
19
+
20
+ namespace internal {
21
+ class Isolate;
22
+ class MicrotaskQueue;
23
+ } // namespace internal
24
+
25
+ /**
26
+ * Represents the microtask queue, where microtasks are stored and processed.
27
+ * https://html.spec.whatwg.org/multipage/webappapis.html#microtask-queue
28
+ * https://html.spec.whatwg.org/multipage/webappapis.html#enqueuejob(queuename,-job,-arguments)
29
+ * https://html.spec.whatwg.org/multipage/webappapis.html#perform-a-microtask-checkpoint
30
+ *
31
+ * A MicrotaskQueue instance may be associated to multiple Contexts by passing
32
+ * it to Context::New(), and they can be detached by Context::DetachGlobal().
33
+ * The embedder must keep the MicrotaskQueue instance alive until all associated
34
+ * Contexts are gone or detached.
35
+ *
36
+ * Use the same instance of MicrotaskQueue for all Contexts that may access each
37
+ * other synchronously. E.g. for Web embedding, use the same instance for all
38
+ * origins that share the same URL scheme and eTLD+1.
39
+ */
40
+ class V8_EXPORT MicrotaskQueue {
41
+ public:
42
+ /**
43
+ * Creates an empty MicrotaskQueue instance.
44
+ */
45
+ static std::unique_ptr<MicrotaskQueue> New(
46
+ Isolate* isolate, MicrotasksPolicy policy = MicrotasksPolicy::kAuto);
47
+
48
+ virtual ~MicrotaskQueue() = default;
49
+
50
+ /**
51
+ * Enqueues the callback to the queue.
52
+ */
53
+ virtual void EnqueueMicrotask(Isolate* isolate,
54
+ Local<Function> microtask) = 0;
55
+
56
+ /**
57
+ * Enqueues the callback to the queue.
58
+ */
59
+ virtual void EnqueueMicrotask(v8::Isolate* isolate,
60
+ MicrotaskCallback callback,
61
+ void* data = nullptr) = 0;
62
+
63
+ /**
64
+ * Adds a callback to notify the embedder after microtasks were run. The
65
+ * callback is triggered by explicit RunMicrotasks call or automatic
66
+ * microtasks execution (see Isolate::SetMicrotasksPolicy).
67
+ *
68
+ * Callback will trigger even if microtasks were attempted to run,
69
+ * but the microtasks queue was empty and no single microtask was actually
70
+ * executed.
71
+ *
72
+ * Executing scripts inside the callback will not re-trigger microtasks and
73
+ * the callback.
74
+ */
75
+ virtual void AddMicrotasksCompletedCallback(
76
+ MicrotasksCompletedCallbackWithData callback, void* data = nullptr) = 0;
77
+
78
+ /**
79
+ * Removes callback that was installed by AddMicrotasksCompletedCallback.
80
+ */
81
+ virtual void RemoveMicrotasksCompletedCallback(
82
+ MicrotasksCompletedCallbackWithData callback, void* data = nullptr) = 0;
83
+
84
+ /**
85
+ * Runs microtasks if no microtask is running on this MicrotaskQueue instance.
86
+ */
87
+ virtual void PerformCheckpoint(Isolate* isolate) = 0;
88
+
89
+ /**
90
+ * Returns true if a microtask is running on this MicrotaskQueue instance.
91
+ */
92
+ virtual bool IsRunningMicrotasks() const = 0;
93
+
94
+ /**
95
+ * Returns the current depth of nested MicrotasksScope that has
96
+ * kRunMicrotasks.
97
+ */
98
+ virtual int GetMicrotasksScopeDepth() const = 0;
99
+
100
+ MicrotaskQueue(const MicrotaskQueue&) = delete;
101
+ MicrotaskQueue& operator=(const MicrotaskQueue&) = delete;
102
+
103
+ private:
104
+ friend class internal::MicrotaskQueue;
105
+ MicrotaskQueue() = default;
106
+ };
107
+
108
+ /**
109
+ * This scope is used to control microtasks when MicrotasksPolicy::kScoped
110
+ * is used on Isolate. In this mode every non-primitive call to V8 should be
111
+ * done inside some MicrotasksScope.
112
+ * Microtasks are executed when topmost MicrotasksScope marked as kRunMicrotasks
113
+ * exits.
114
+ * kDoNotRunMicrotasks should be used to annotate calls not intended to trigger
115
+ * microtasks.
116
+ */
117
+ class V8_EXPORT V8_NODISCARD MicrotasksScope {
118
+ public:
119
+ enum Type { kRunMicrotasks, kDoNotRunMicrotasks };
120
+
121
+ V8_DEPRECATE_SOON(
122
+ "May be incorrect if context was created with non-default microtask "
123
+ "queue")
124
+ MicrotasksScope(Isolate* isolate, Type type);
125
+
126
+ MicrotasksScope(Local<Context> context, Type type);
127
+ MicrotasksScope(Isolate* isolate, MicrotaskQueue* microtask_queue, Type type);
128
+ ~MicrotasksScope();
129
+
130
+ /**
131
+ * Runs microtasks if no kRunMicrotasks scope is currently active.
132
+ */
133
+ static void PerformCheckpoint(Isolate* isolate);
134
+
135
+ /**
136
+ * Returns current depth of nested kRunMicrotasks scopes.
137
+ */
138
+ static int GetCurrentDepth(Isolate* isolate);
139
+
140
+ /**
141
+ * Returns true while microtasks are being executed.
142
+ */
143
+ static bool IsRunningMicrotasks(Isolate* isolate);
144
+
145
+ // Prevent copying.
146
+ MicrotasksScope(const MicrotasksScope&) = delete;
147
+ MicrotasksScope& operator=(const MicrotasksScope&) = delete;
148
+
149
+ private:
150
+ internal::Isolate* const i_isolate_;
151
+ internal::MicrotaskQueue* const microtask_queue_;
152
+ bool run_;
153
+ };
154
+
155
+ } // namespace v8
156
+
157
+ #endif // INCLUDE_V8_MICROTASKS_QUEUE_H_
@@ -0,0 +1,28 @@
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_