@kungfu-tech/libnode-win32-x64 0.0.0-bootstrap.0 → 22.22.3-kf.1

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 (343) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/dist/node/include/acorn_version.h +6 -0
  4. package/dist/node/include/aliased_buffer-inl.h +244 -0
  5. package/dist/node/include/aliased_buffer.h +206 -0
  6. package/dist/node/include/aliased_struct-inl.h +54 -0
  7. package/dist/node/include/aliased_struct.h +63 -0
  8. package/dist/node/include/amaro_version.h +6 -0
  9. package/dist/node/include/async_context_frame.h +33 -0
  10. package/dist/node/include/async_wrap-inl.h +96 -0
  11. package/dist/node/include/async_wrap.h +243 -0
  12. package/dist/node/include/base_object-inl.h +335 -0
  13. package/dist/node/include/base_object.h +342 -0
  14. package/dist/node/include/base_object_types.h +74 -0
  15. package/dist/node/include/blob_serializer_deserializer-inl.h +385 -0
  16. package/dist/node/include/blob_serializer_deserializer.h +132 -0
  17. package/dist/node/include/callback_queue-inl.h +97 -0
  18. package/dist/node/include/callback_queue.h +79 -0
  19. package/dist/node/include/cares_wrap.h +447 -0
  20. package/dist/node/include/cjs_module_lexer_version.h +6 -0
  21. package/dist/node/include/cleanup_queue-inl.h +36 -0
  22. package/dist/node/include/cleanup_queue.h +79 -0
  23. package/dist/node/include/compile_cache.h +104 -0
  24. package/dist/node/include/connect_wrap.h +26 -0
  25. package/dist/node/include/connection_wrap.h +30 -0
  26. package/dist/node/include/cppgc/allocation.h +310 -0
  27. package/dist/node/include/cppgc/common.h +28 -0
  28. package/dist/node/include/cppgc/cross-thread-persistent.h +466 -0
  29. package/dist/node/include/cppgc/custom-space.h +97 -0
  30. package/dist/node/include/cppgc/default-platform.h +67 -0
  31. package/dist/node/include/cppgc/ephemeron-pair.h +30 -0
  32. package/dist/node/include/cppgc/explicit-management.h +100 -0
  33. package/dist/node/include/cppgc/garbage-collected.h +106 -0
  34. package/dist/node/include/cppgc/heap-consistency.h +309 -0
  35. package/dist/node/include/cppgc/heap-handle.h +48 -0
  36. package/dist/node/include/cppgc/heap-state.h +82 -0
  37. package/dist/node/include/cppgc/heap-statistics.h +120 -0
  38. package/dist/node/include/cppgc/heap.h +202 -0
  39. package/dist/node/include/cppgc/internal/api-constants.h +87 -0
  40. package/dist/node/include/cppgc/internal/atomic-entry-flag.h +48 -0
  41. package/dist/node/include/cppgc/internal/base-page-handle.h +45 -0
  42. package/dist/node/include/cppgc/internal/caged-heap-local-data.h +121 -0
  43. package/dist/node/include/cppgc/internal/caged-heap.h +68 -0
  44. package/dist/node/include/cppgc/internal/compiler-specific.h +38 -0
  45. package/dist/node/include/cppgc/internal/finalizer-trait.h +93 -0
  46. package/dist/node/include/cppgc/internal/gc-info.h +148 -0
  47. package/dist/node/include/cppgc/internal/logging.h +50 -0
  48. package/dist/node/include/cppgc/internal/member-storage.h +256 -0
  49. package/dist/node/include/cppgc/internal/name-trait.h +137 -0
  50. package/dist/node/include/cppgc/internal/persistent-node.h +214 -0
  51. package/dist/node/include/cppgc/internal/pointer-policies.h +243 -0
  52. package/dist/node/include/cppgc/internal/write-barrier.h +487 -0
  53. package/dist/node/include/cppgc/liveness-broker.h +78 -0
  54. package/dist/node/include/cppgc/macros.h +35 -0
  55. package/dist/node/include/cppgc/member.h +629 -0
  56. package/dist/node/include/cppgc/name-provider.h +65 -0
  57. package/dist/node/include/cppgc/object-size-trait.h +58 -0
  58. package/dist/node/include/cppgc/persistent.h +377 -0
  59. package/dist/node/include/cppgc/platform.h +163 -0
  60. package/dist/node/include/cppgc/prefinalizer.h +75 -0
  61. package/dist/node/include/cppgc/process-heap-statistics.h +36 -0
  62. package/dist/node/include/cppgc/sentinel-pointer.h +39 -0
  63. package/dist/node/include/cppgc/source-location.h +16 -0
  64. package/dist/node/include/cppgc/testing.h +106 -0
  65. package/dist/node/include/cppgc/trace-trait.h +128 -0
  66. package/dist/node/include/cppgc/type-traits.h +271 -0
  67. package/dist/node/include/cppgc/visitor.h +504 -0
  68. package/dist/node/include/crypto/crypto_aes.h +88 -0
  69. package/dist/node/include/crypto/crypto_bio.h +193 -0
  70. package/dist/node/include/crypto/crypto_cipher.h +293 -0
  71. package/dist/node/include/crypto/crypto_clienthello-inl.h +90 -0
  72. package/dist/node/include/crypto/crypto_clienthello.h +131 -0
  73. package/dist/node/include/crypto/crypto_common.h +64 -0
  74. package/dist/node/include/crypto/crypto_context.h +171 -0
  75. package/dist/node/include/crypto/crypto_dh.h +126 -0
  76. package/dist/node/include/crypto/crypto_dsa.h +52 -0
  77. package/dist/node/include/crypto/crypto_ec.h +164 -0
  78. package/dist/node/include/crypto/crypto_hash.h +91 -0
  79. package/dist/node/include/crypto/crypto_hkdf.h +61 -0
  80. package/dist/node/include/crypto/crypto_hmac.h +92 -0
  81. package/dist/node/include/crypto/crypto_keygen.h +299 -0
  82. package/dist/node/include/crypto/crypto_keys.h +392 -0
  83. package/dist/node/include/crypto/crypto_pbkdf2.h +74 -0
  84. package/dist/node/include/crypto/crypto_random.h +124 -0
  85. package/dist/node/include/crypto/crypto_rsa.h +136 -0
  86. package/dist/node/include/crypto/crypto_scrypt.h +85 -0
  87. package/dist/node/include/crypto/crypto_sig.h +165 -0
  88. package/dist/node/include/crypto/crypto_spkac.h +21 -0
  89. package/dist/node/include/crypto/crypto_timing.h +20 -0
  90. package/dist/node/include/crypto/crypto_tls.h +305 -0
  91. package/dist/node/include/crypto/crypto_util.h +725 -0
  92. package/dist/node/include/crypto/crypto_x509.h +140 -0
  93. package/dist/node/include/dataqueue/queue.h +306 -0
  94. package/dist/node/include/debug_utils-inl.h +278 -0
  95. package/dist/node/include/debug_utils.h +196 -0
  96. package/dist/node/include/diagnosticfilename-inl.h +33 -0
  97. package/dist/node/include/embedded_data.h +17 -0
  98. package/dist/node/include/encoding_binding.h +61 -0
  99. package/dist/node/include/env-inl.h +984 -0
  100. package/dist/node/include/env.h +1287 -0
  101. package/dist/node/include/env_properties.h +540 -0
  102. package/dist/node/include/handle_wrap.h +123 -0
  103. package/dist/node/include/histogram-inl.h +107 -0
  104. package/dist/node/include/histogram.h +279 -0
  105. package/dist/node/include/inspector/io_agent.h +30 -0
  106. package/dist/node/include/inspector/main_thread_interface.h +116 -0
  107. package/dist/node/include/inspector/network_agent.h +94 -0
  108. package/dist/node/include/inspector/network_inspector.h +45 -0
  109. package/dist/node/include/inspector/network_requests_buffer.h +195 -0
  110. package/dist/node/include/inspector/network_resource_manager.h +29 -0
  111. package/dist/node/include/inspector/node_json.h +24 -0
  112. package/dist/node/include/inspector/node_string.h +101 -0
  113. package/dist/node/include/inspector/protocol_helper.h +27 -0
  114. package/dist/node/include/inspector/runtime_agent.h +41 -0
  115. package/dist/node/include/inspector/target_agent.h +75 -0
  116. package/dist/node/include/inspector/tracing_agent.h +43 -0
  117. package/dist/node/include/inspector/worker_agent.h +40 -0
  118. package/dist/node/include/inspector/worker_inspector.h +124 -0
  119. package/dist/node/include/inspector_agent.h +165 -0
  120. package/dist/node/include/inspector_io.h +78 -0
  121. package/dist/node/include/inspector_profiler.h +149 -0
  122. package/dist/node/include/inspector_socket.h +60 -0
  123. package/dist/node/include/inspector_socket_server.h +110 -0
  124. package/dist/node/include/js_native_api.h +607 -0
  125. package/dist/node/include/js_native_api_types.h +226 -0
  126. package/dist/node/include/js_native_api_v8.h +485 -0
  127. package/dist/node/include/js_native_api_v8_internals.h +45 -0
  128. package/dist/node/include/js_stream.h +52 -0
  129. package/dist/node/include/json_utils.h +172 -0
  130. package/dist/node/include/large_pages/node_large_page.h +34 -0
  131. package/dist/node/include/libplatform/libplatform-export.h +29 -0
  132. package/dist/node/include/libplatform/libplatform.h +112 -0
  133. package/dist/node/include/libplatform/v8-tracing.h +333 -0
  134. package/dist/node/include/memory_tracker-inl.h +359 -0
  135. package/dist/node/include/memory_tracker.h +289 -0
  136. package/dist/node/include/module_wrap.h +216 -0
  137. package/dist/node/include/node.h +1593 -0
  138. package/dist/node/include/node_api.h +265 -0
  139. package/dist/node/include/node_api_internals.h +48 -0
  140. package/dist/node/include/node_api_types.h +56 -0
  141. package/dist/node/include/node_binding.h +161 -0
  142. package/dist/node/include/node_blob.h +159 -0
  143. package/dist/node/include/node_bob-inl.h +36 -0
  144. package/dist/node/include/node_bob.h +107 -0
  145. package/dist/node/include/node_buffer.h +92 -0
  146. package/dist/node/include/node_builtins.h +220 -0
  147. package/dist/node/include/node_config_file.h +46 -0
  148. package/dist/node/include/node_constants.h +82 -0
  149. package/dist/node/include/node_context_data.h +168 -0
  150. package/dist/node/include/node_contextify.h +204 -0
  151. package/dist/node/include/node_crypto.h +56 -0
  152. package/dist/node/include/node_debug.h +30 -0
  153. package/dist/node/include/node_dir.h +52 -0
  154. package/dist/node/include/node_dotenv.h +45 -0
  155. package/dist/node/include/node_errors.h +380 -0
  156. package/dist/node/include/node_exit_code.h +54 -0
  157. package/dist/node/include/node_external_reference.h +165 -0
  158. package/dist/node/include/node_file-inl.h +406 -0
  159. package/dist/node/include/node_file.h +537 -0
  160. package/dist/node/include/node_http2.h +1177 -0
  161. package/dist/node/include/node_http2_state.h +159 -0
  162. package/dist/node/include/node_http_common-inl.h +202 -0
  163. package/dist/node/include/node_http_common.h +535 -0
  164. package/dist/node/include/node_i18n.h +132 -0
  165. package/dist/node/include/node_internals.h +483 -0
  166. package/dist/node/include/node_main_instance.h +67 -0
  167. package/dist/node/include/node_mem-inl.h +113 -0
  168. package/dist/node/include/node_mem.h +45 -0
  169. package/dist/node/include/node_messaging.h +389 -0
  170. package/dist/node/include/node_metadata.h +164 -0
  171. package/dist/node/include/node_modules.h +91 -0
  172. package/dist/node/include/node_mutex.h +323 -0
  173. package/dist/node/include/node_object_wrap.h +132 -0
  174. package/dist/node/include/node_options-inl.h +490 -0
  175. package/dist/node/include/node_options.h +615 -0
  176. package/dist/node/include/node_perf.h +166 -0
  177. package/dist/node/include/node_perf_common.h +102 -0
  178. package/dist/node/include/node_platform.h +238 -0
  179. package/dist/node/include/node_process-inl.h +26 -0
  180. package/dist/node/include/node_process.h +112 -0
  181. package/dist/node/include/node_realm-inl.h +151 -0
  182. package/dist/node/include/node_realm.h +183 -0
  183. package/dist/node/include/node_report.h +43 -0
  184. package/dist/node/include/node_revert.h +82 -0
  185. package/dist/node/include/node_root_certs.h +3520 -0
  186. package/dist/node/include/node_sea.h +74 -0
  187. package/dist/node/include/node_shadow_realm.h +46 -0
  188. package/dist/node/include/node_snapshot_builder.h +57 -0
  189. package/dist/node/include/node_snapshotable.h +174 -0
  190. package/dist/node/include/node_sockaddr-inl.h +257 -0
  191. package/dist/node/include/node_sockaddr.h +394 -0
  192. package/dist/node/include/node_sqlite.h +270 -0
  193. package/dist/node/include/node_stat_watcher.h +73 -0
  194. package/dist/node/include/node_task_runner.h +92 -0
  195. package/dist/node/include/node_threadsafe_cow-inl.h +54 -0
  196. package/dist/node/include/node_threadsafe_cow.h +105 -0
  197. package/dist/node/include/node_union_bytes.h +81 -0
  198. package/dist/node/include/node_url.h +96 -0
  199. package/dist/node/include/node_v8.h +77 -0
  200. package/dist/node/include/node_v8_platform-inl.h +185 -0
  201. package/dist/node/include/node_version.h +110 -0
  202. package/dist/node/include/node_wasi.h +184 -0
  203. package/dist/node/include/node_wasm_web_api.h +55 -0
  204. package/dist/node/include/node_watchdog.h +154 -0
  205. package/dist/node/include/node_webstorage.h +60 -0
  206. package/dist/node/include/node_worker.h +158 -0
  207. package/dist/node/include/path.h +33 -0
  208. package/dist/node/include/permission/addon_permission.h +31 -0
  209. package/dist/node/include/permission/child_process_permission.h +31 -0
  210. package/dist/node/include/permission/fs_permission.h +167 -0
  211. package/dist/node/include/permission/inspector_permission.h +31 -0
  212. package/dist/node/include/permission/permission.h +138 -0
  213. package/dist/node/include/permission/permission_base.h +65 -0
  214. package/dist/node/include/permission/wasi_permission.h +31 -0
  215. package/dist/node/include/permission/worker_permission.h +31 -0
  216. package/dist/node/include/pipe_wrap.h +80 -0
  217. package/dist/node/include/quic/application.h +159 -0
  218. package/dist/node/include/quic/bindingdata.h +272 -0
  219. package/dist/node/include/quic/cid.h +127 -0
  220. package/dist/node/include/quic/data.h +148 -0
  221. package/dist/node/include/quic/defs.h +245 -0
  222. package/dist/node/include/quic/endpoint.h +458 -0
  223. package/dist/node/include/quic/http3.h +15 -0
  224. package/dist/node/include/quic/logstream.h +81 -0
  225. package/dist/node/include/quic/packet.h +152 -0
  226. package/dist/node/include/quic/preferredaddress.h +72 -0
  227. package/dist/node/include/quic/session.h +443 -0
  228. package/dist/node/include/quic/sessionticket.h +108 -0
  229. package/dist/node/include/quic/streams.h +232 -0
  230. package/dist/node/include/quic/tlscontext.h +227 -0
  231. package/dist/node/include/quic/tokens.h +256 -0
  232. package/dist/node/include/quic/transportparams.h +165 -0
  233. package/dist/node/include/req_wrap-inl.h +171 -0
  234. package/dist/node/include/req_wrap.h +77 -0
  235. package/dist/node/include/spawn_sync.h +243 -0
  236. package/dist/node/include/stream_base-inl.h +173 -0
  237. package/dist/node/include/stream_base.h +478 -0
  238. package/dist/node/include/stream_pipe.h +76 -0
  239. package/dist/node/include/stream_wrap.h +132 -0
  240. package/dist/node/include/string_bytes.h +113 -0
  241. package/dist/node/include/string_decoder-inl.h +31 -0
  242. package/dist/node/include/string_decoder.h +49 -0
  243. package/dist/node/include/tcp_wrap.h +105 -0
  244. package/dist/node/include/threadpoolwork-inl.h +70 -0
  245. package/dist/node/include/timer_wrap-inl.h +32 -0
  246. package/dist/node/include/timer_wrap.h +85 -0
  247. package/dist/node/include/timers.h +70 -0
  248. package/dist/node/include/tracing/agent.h +195 -0
  249. package/dist/node/include/tracing/node_trace_buffer.h +83 -0
  250. package/dist/node/include/tracing/node_trace_writer.h +75 -0
  251. package/dist/node/include/tracing/trace_event.h +722 -0
  252. package/dist/node/include/tracing/trace_event_common.h +1109 -0
  253. package/dist/node/include/tracing/traced_value.h +129 -0
  254. package/dist/node/include/tty_wrap.h +65 -0
  255. package/dist/node/include/udp_wrap.h +230 -0
  256. package/dist/node/include/undici_version.h +6 -0
  257. package/dist/node/include/util-inl.h +700 -0
  258. package/dist/node/include/util.h +1021 -0
  259. package/dist/node/include/uv/aix.h +32 -0
  260. package/dist/node/include/uv/bsd.h +34 -0
  261. package/dist/node/include/uv/darwin.h +61 -0
  262. package/dist/node/include/uv/errno.h +483 -0
  263. package/dist/node/include/uv/linux.h +34 -0
  264. package/dist/node/include/uv/os390.h +33 -0
  265. package/dist/node/include/uv/posix.h +31 -0
  266. package/dist/node/include/uv/sunos.h +44 -0
  267. package/dist/node/include/uv/threadpool.h +37 -0
  268. package/dist/node/include/uv/tree.h +521 -0
  269. package/dist/node/include/uv/unix.h +512 -0
  270. package/dist/node/include/uv/version.h +43 -0
  271. package/dist/node/include/uv/win.h +698 -0
  272. package/dist/node/include/uv.h +1990 -0
  273. package/dist/node/include/v8-array-buffer.h +525 -0
  274. package/dist/node/include/v8-callbacks.h +462 -0
  275. package/dist/node/include/v8-container.h +183 -0
  276. package/dist/node/include/v8-context.h +485 -0
  277. package/dist/node/include/v8-cppgc.h +245 -0
  278. package/dist/node/include/v8-data.h +80 -0
  279. package/dist/node/include/v8-date.h +48 -0
  280. package/dist/node/include/v8-debug.h +168 -0
  281. package/dist/node/include/v8-embedder-heap.h +82 -0
  282. package/dist/node/include/v8-embedder-state-scope.h +52 -0
  283. package/dist/node/include/v8-exception.h +223 -0
  284. package/dist/node/include/v8-extension.h +62 -0
  285. package/dist/node/include/v8-external.h +37 -0
  286. package/dist/node/include/v8-fast-api-calls.h +984 -0
  287. package/dist/node/include/v8-forward.h +82 -0
  288. package/dist/node/include/v8-function-callback.h +607 -0
  289. package/dist/node/include/v8-function.h +140 -0
  290. package/dist/node/include/v8-handle-base.h +137 -0
  291. package/dist/node/include/v8-initialization.h +289 -0
  292. package/dist/node/include/v8-inspector-protocol.h +13 -0
  293. package/dist/node/include/v8-inspector.h +419 -0
  294. package/dist/node/include/v8-internal.h +1397 -0
  295. package/dist/node/include/v8-isolate.h +1767 -0
  296. package/dist/node/include/v8-json.h +47 -0
  297. package/dist/node/include/v8-local-handle.h +758 -0
  298. package/dist/node/include/v8-locker.h +138 -0
  299. package/dist/node/include/v8-maybe.h +160 -0
  300. package/dist/node/include/v8-memory-span.h +198 -0
  301. package/dist/node/include/v8-message.h +233 -0
  302. package/dist/node/include/v8-metrics.h +264 -0
  303. package/dist/node/include/v8-microtask-queue.h +157 -0
  304. package/dist/node/include/v8-microtask.h +28 -0
  305. package/dist/node/include/v8-object.h +824 -0
  306. package/dist/node/include/v8-persistent-handle.h +582 -0
  307. package/dist/node/include/v8-platform.h +1358 -0
  308. package/dist/node/include/v8-primitive-object.h +118 -0
  309. package/dist/node/include/v8-primitive.h +877 -0
  310. package/dist/node/include/v8-profiler.h +1302 -0
  311. package/dist/node/include/v8-promise.h +174 -0
  312. package/dist/node/include/v8-proxy.h +50 -0
  313. package/dist/node/include/v8-regexp.h +106 -0
  314. package/dist/node/include/v8-script.h +904 -0
  315. package/dist/node/include/v8-snapshot.h +266 -0
  316. package/dist/node/include/v8-source-location.h +92 -0
  317. package/dist/node/include/v8-statistics.h +238 -0
  318. package/dist/node/include/v8-template.h +1297 -0
  319. package/dist/node/include/v8-traced-handle.h +432 -0
  320. package/dist/node/include/v8-typed-array.h +390 -0
  321. package/dist/node/include/v8-unwinder-state.h +31 -0
  322. package/dist/node/include/v8-unwinder.h +132 -0
  323. package/dist/node/include/v8-util.h +665 -0
  324. package/dist/node/include/v8-value-serializer-version.h +24 -0
  325. package/dist/node/include/v8-value-serializer.h +316 -0
  326. package/dist/node/include/v8-value.h +655 -0
  327. package/dist/node/include/v8-version-string.h +38 -0
  328. package/dist/node/include/v8-version.h +20 -0
  329. package/dist/node/include/v8-wasm-trap-handler-posix.h +31 -0
  330. package/dist/node/include/v8-wasm-trap-handler-win.h +28 -0
  331. package/dist/node/include/v8-wasm.h +201 -0
  332. package/dist/node/include/v8-weak-callback-info.h +80 -0
  333. package/dist/node/include/v8.h +88 -0
  334. package/dist/node/include/v8config.h +981 -0
  335. package/dist/node/include/zlib_version.h +6 -0
  336. package/dist/node/libnode.dll +0 -0
  337. package/dist/node/libnode.lib +0 -0
  338. package/dist/node/libnodebuildinfo.json +10 -0
  339. package/dist/node/link_node.lib +0 -0
  340. package/dist/node/link_node.node +0 -0
  341. package/index.js +5 -0
  342. package/libnode.release.json +8 -0
  343. package/package.json +29 -1
@@ -0,0 +1,266 @@
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_SNAPSHOT_H_
6
+ #define INCLUDE_V8_SNAPSHOT_H_
7
+
8
+ #include "v8-internal.h" // NOLINT(build/include_directory)
9
+ #include "v8-isolate.h" // NOLINT(build/include_directory)
10
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
11
+ #include "v8config.h" // NOLINT(build/include_directory)
12
+
13
+ namespace v8 {
14
+
15
+ class Object;
16
+
17
+ namespace internal {
18
+ class SnapshotCreatorImpl;
19
+ } // namespace internal
20
+
21
+ class V8_EXPORT StartupData {
22
+ public:
23
+ /**
24
+ * Whether the data created can be rehashed and and the hash seed can be
25
+ * recomputed when deserialized.
26
+ * Only valid for StartupData returned by SnapshotCreator::CreateBlob().
27
+ */
28
+ bool CanBeRehashed() const;
29
+ /**
30
+ * Allows embedders to verify whether the data is valid for the current
31
+ * V8 instance.
32
+ */
33
+ bool IsValid() const;
34
+
35
+ const char* data;
36
+ int raw_size;
37
+ };
38
+
39
+ /**
40
+ * Callback and supporting data used in SnapshotCreator to implement embedder
41
+ * logic to serialize internal fields of v8::Objects.
42
+ * Internal fields that directly reference V8 objects are serialized without
43
+ * calling this callback. Internal fields that contain aligned pointers are
44
+ * serialized by this callback if it returns non-zero result. Otherwise it is
45
+ * serialized verbatim.
46
+ */
47
+ struct SerializeInternalFieldsCallback {
48
+ using CallbackFunction = StartupData (*)(Local<Object> holder, int index,
49
+ void* data);
50
+ SerializeInternalFieldsCallback(CallbackFunction function = nullptr,
51
+ void* data_arg = nullptr)
52
+ : callback(function), data(data_arg) {}
53
+ CallbackFunction callback;
54
+ void* data;
55
+ };
56
+
57
+ /**
58
+ * Similar to SerializeInternalFieldsCallback, but works with the embedder data
59
+ * in a v8::Context.
60
+ */
61
+ struct SerializeContextDataCallback {
62
+ using CallbackFunction = StartupData (*)(Local<Context> holder, int index,
63
+ void* data);
64
+ SerializeContextDataCallback(CallbackFunction function = nullptr,
65
+ void* data_arg = nullptr)
66
+ : callback(function), data(data_arg) {}
67
+ CallbackFunction callback;
68
+ void* data;
69
+ };
70
+
71
+ /**
72
+ * Callback and supporting data used to implement embedder logic to deserialize
73
+ * internal fields of v8::Objects.
74
+ */
75
+ struct DeserializeInternalFieldsCallback {
76
+ using CallbackFunction = void (*)(Local<Object> holder, int index,
77
+ StartupData payload, void* data);
78
+ DeserializeInternalFieldsCallback(CallbackFunction function = nullptr,
79
+ void* data_arg = nullptr)
80
+ : callback(function), data(data_arg) {}
81
+
82
+ CallbackFunction callback;
83
+ void* data;
84
+ };
85
+
86
+ /**
87
+ * Similar to DeserializeInternalFieldsCallback, but works with the embedder
88
+ * data in a v8::Context.
89
+ */
90
+ struct DeserializeContextDataCallback {
91
+ using CallbackFunction = void (*)(Local<Context> holder, int index,
92
+ StartupData payload, void* data);
93
+ DeserializeContextDataCallback(CallbackFunction function = nullptr,
94
+ void* data_arg = nullptr)
95
+ : callback(function), data(data_arg) {}
96
+ CallbackFunction callback;
97
+ void* data;
98
+ };
99
+
100
+ /**
101
+ * Helper class to create a snapshot data blob.
102
+ *
103
+ * The Isolate used by a SnapshotCreator is owned by it, and will be entered
104
+ * and exited by the constructor and destructor, respectively; The destructor
105
+ * will also destroy the Isolate. Experimental language features, including
106
+ * those available by default, are not available while creating a snapshot.
107
+ */
108
+ class V8_EXPORT SnapshotCreator {
109
+ public:
110
+ enum class FunctionCodeHandling { kClear, kKeep };
111
+
112
+ /**
113
+ * Initialize and enter an isolate, and set it up for serialization.
114
+ * The isolate is either created from scratch or from an existing snapshot.
115
+ * The caller keeps ownership of the argument snapshot.
116
+ * \param existing_blob existing snapshot from which to create this one.
117
+ * \param external_references a null-terminated array of external references
118
+ * that must be equivalent to CreateParams::external_references.
119
+ * \param owns_isolate whether this SnapshotCreator should call
120
+ * v8::Isolate::Dispose() during its destructor.
121
+ */
122
+ V8_DEPRECATE_SOON("Use the version that passes CreateParams instead.")
123
+ explicit SnapshotCreator(Isolate* isolate,
124
+ const intptr_t* external_references = nullptr,
125
+ const StartupData* existing_blob = nullptr,
126
+ bool owns_isolate = true);
127
+
128
+ /**
129
+ * Create and enter an isolate, and set it up for serialization.
130
+ * The isolate is either created from scratch or from an existing snapshot.
131
+ * The caller keeps ownership of the argument snapshot.
132
+ * \param existing_blob existing snapshot from which to create this one.
133
+ * \param external_references a null-terminated array of external references
134
+ * that must be equivalent to CreateParams::external_references.
135
+ */
136
+ V8_DEPRECATE_SOON("Use the version that passes CreateParams instead.")
137
+ explicit SnapshotCreator(const intptr_t* external_references = nullptr,
138
+ const StartupData* existing_blob = nullptr);
139
+
140
+ /**
141
+ * Creates an Isolate for serialization and enters it. The creator fully owns
142
+ * the Isolate and will invoke `v8::Isolate::Dispose()` during destruction.
143
+ *
144
+ * \param params The parameters to initialize the Isolate for. Details:
145
+ * - `params.external_references` are expected to be a
146
+ * null-terminated array of external references.
147
+ * - `params.existing_blob` is an optional snapshot blob from
148
+ * which can be used to initialize the new blob.
149
+ */
150
+ explicit SnapshotCreator(const v8::Isolate::CreateParams& params);
151
+
152
+ /**
153
+ * Initializes an Isolate for serialization and enters it. The creator does
154
+ * not own the Isolate but merely initialize it properly.
155
+ *
156
+ * \param isolate The isolate that was allocated by `Isolate::Allocate()~.
157
+ * \param params The parameters to initialize the Isolate for. Details:
158
+ * - `params.external_references` are expected to be a
159
+ * null-terminated array of external references.
160
+ * - `params.existing_blob` is an optional snapshot blob from
161
+ * which can be used to initialize the new blob.
162
+ */
163
+ SnapshotCreator(v8::Isolate* isolate,
164
+ const v8::Isolate::CreateParams& params);
165
+
166
+ /**
167
+ * Destroy the snapshot creator, and exit and dispose of the Isolate
168
+ * associated with it.
169
+ */
170
+ ~SnapshotCreator();
171
+
172
+ /**
173
+ * \returns the isolate prepared by the snapshot creator.
174
+ */
175
+ Isolate* GetIsolate();
176
+
177
+ /**
178
+ * Set the default context to be included in the snapshot blob.
179
+ * The snapshot will not contain the global proxy, and we expect one or a
180
+ * global object template to create one, to be provided upon deserialization.
181
+ *
182
+ * \param internal_fields_serializer An optional callback used to serialize
183
+ * internal pointer fields set by
184
+ * v8::Object::SetAlignedPointerInInternalField().
185
+ *
186
+ * \param context_data_serializer An optional callback used to serialize
187
+ * context embedder data set by
188
+ * v8::Context::SetAlignedPointerInEmbedderData().
189
+ *
190
+ */
191
+ void SetDefaultContext(
192
+ Local<Context> context,
193
+ SerializeInternalFieldsCallback internal_fields_serializer =
194
+ SerializeInternalFieldsCallback(),
195
+ SerializeContextDataCallback context_data_serializer =
196
+ SerializeContextDataCallback());
197
+
198
+ /**
199
+ * Add additional context to be included in the snapshot blob.
200
+ * The snapshot will include the global proxy.
201
+ *
202
+ * \param internal_fields_serializer Similar to internal_fields_serializer
203
+ * in SetDefaultContext() but only applies to the context being added.
204
+ *
205
+ * \param context_data_serializer Similar to context_data_serializer
206
+ * in SetDefaultContext() but only applies to the context being added.
207
+ */
208
+ size_t AddContext(Local<Context> context,
209
+ SerializeInternalFieldsCallback internal_fields_serializer =
210
+ SerializeInternalFieldsCallback(),
211
+ SerializeContextDataCallback context_data_serializer =
212
+ SerializeContextDataCallback());
213
+
214
+ /**
215
+ * Attach arbitrary V8::Data to the context snapshot, which can be retrieved
216
+ * via Context::GetDataFromSnapshotOnce after deserialization. This data does
217
+ * not survive when a new snapshot is created from an existing snapshot.
218
+ * \returns the index for retrieval.
219
+ */
220
+ template <class T>
221
+ V8_INLINE size_t AddData(Local<Context> context, Local<T> object);
222
+
223
+ /**
224
+ * Attach arbitrary V8::Data to the isolate snapshot, which can be retrieved
225
+ * via Isolate::GetDataFromSnapshotOnce after deserialization. This data does
226
+ * not survive when a new snapshot is created from an existing snapshot.
227
+ * \returns the index for retrieval.
228
+ */
229
+ template <class T>
230
+ V8_INLINE size_t AddData(Local<T> object);
231
+
232
+ /**
233
+ * Created a snapshot data blob.
234
+ * This must not be called from within a handle scope.
235
+ * \param function_code_handling whether to include compiled function code
236
+ * in the snapshot.
237
+ * \returns { nullptr, 0 } on failure, and a startup snapshot on success. The
238
+ * caller acquires ownership of the data array in the return value.
239
+ */
240
+ StartupData CreateBlob(FunctionCodeHandling function_code_handling);
241
+
242
+ // Disallow copying and assigning.
243
+ SnapshotCreator(const SnapshotCreator&) = delete;
244
+ void operator=(const SnapshotCreator&) = delete;
245
+
246
+ private:
247
+ size_t AddData(Local<Context> context, internal::Address object);
248
+ size_t AddData(internal::Address object);
249
+
250
+ internal::SnapshotCreatorImpl* impl_;
251
+ friend class internal::SnapshotCreatorImpl;
252
+ };
253
+
254
+ template <class T>
255
+ size_t SnapshotCreator::AddData(Local<Context> context, Local<T> object) {
256
+ return AddData(context, internal::ValueHelper::ValueAsAddress(*object));
257
+ }
258
+
259
+ template <class T>
260
+ size_t SnapshotCreator::AddData(Local<T> object) {
261
+ return AddData(internal::ValueHelper::ValueAsAddress(*object));
262
+ }
263
+
264
+ } // namespace v8
265
+
266
+ #endif // INCLUDE_V8_SNAPSHOT_H_
@@ -0,0 +1,92 @@
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 INCLUDE_SOURCE_LOCATION_H_
6
+ #define INCLUDE_SOURCE_LOCATION_H_
7
+
8
+ #include <cstddef>
9
+ #include <string>
10
+
11
+ #include "v8config.h" // NOLINT(build/include_directory)
12
+
13
+ #if defined(__has_builtin)
14
+ #define V8_SUPPORTS_SOURCE_LOCATION \
15
+ (__has_builtin(__builtin_FUNCTION) && __has_builtin(__builtin_FILE) && \
16
+ __has_builtin(__builtin_LINE)) // NOLINT
17
+ #elif defined(V8_CC_GNU) && __GNUC__ >= 7
18
+ #define V8_SUPPORTS_SOURCE_LOCATION 1
19
+ #elif defined(V8_CC_INTEL) && __ICC >= 1800
20
+ #define V8_SUPPORTS_SOURCE_LOCATION 1
21
+ #else
22
+ #define V8_SUPPORTS_SOURCE_LOCATION 0
23
+ #endif
24
+
25
+ namespace v8 {
26
+
27
+ /**
28
+ * Encapsulates source location information. Mimics C++20's
29
+ * `std::source_location`.
30
+ */
31
+ class V8_EXPORT SourceLocation final {
32
+ public:
33
+ /**
34
+ * Construct source location information corresponding to the location of the
35
+ * call site.
36
+ */
37
+ #if V8_SUPPORTS_SOURCE_LOCATION
38
+ static constexpr SourceLocation Current(
39
+ const char* function = __builtin_FUNCTION(),
40
+ const char* file = __builtin_FILE(), size_t line = __builtin_LINE()) {
41
+ return SourceLocation(function, file, line);
42
+ }
43
+ #else
44
+ static constexpr SourceLocation Current() { return SourceLocation(); }
45
+ #endif // V8_SUPPORTS_SOURCE_LOCATION
46
+
47
+ /**
48
+ * Constructs unspecified source location information.
49
+ */
50
+ constexpr SourceLocation() = default;
51
+
52
+ /**
53
+ * Returns the name of the function associated with the position represented
54
+ * by this object, if any.
55
+ *
56
+ * \returns the function name as cstring.
57
+ */
58
+ constexpr const char* Function() const { return function_; }
59
+
60
+ /**
61
+ * Returns the name of the current source file represented by this object.
62
+ *
63
+ * \returns the file name as cstring.
64
+ */
65
+ constexpr const char* FileName() const { return file_; }
66
+
67
+ /**
68
+ * Returns the line number represented by this object.
69
+ *
70
+ * \returns the line number.
71
+ */
72
+ constexpr size_t Line() const { return line_; }
73
+
74
+ /**
75
+ * Returns a human-readable string representing this object.
76
+ *
77
+ * \returns a human-readable string representing source location information.
78
+ */
79
+ std::string ToString() const;
80
+
81
+ private:
82
+ constexpr SourceLocation(const char* function, const char* file, size_t line)
83
+ : function_(function), file_(file), line_(line) {}
84
+
85
+ const char* function_ = nullptr;
86
+ const char* file_ = nullptr;
87
+ size_t line_ = 0u;
88
+ };
89
+
90
+ } // namespace v8
91
+
92
+ #endif // INCLUDE_SOURCE_LOCATION_H_
@@ -0,0 +1,238 @@
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_STATISTICS_H_
6
+ #define INCLUDE_V8_STATISTICS_H_
7
+
8
+ #include <stddef.h>
9
+ #include <stdint.h>
10
+
11
+ #include <memory>
12
+ #include <utility>
13
+ #include <vector>
14
+
15
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
16
+ #include "v8-memory-span.h" // NOLINT(build/include_directory)
17
+ #include "v8-promise.h" // NOLINT(build/include_directory)
18
+ #include "v8config.h" // NOLINT(build/include_directory)
19
+
20
+ namespace v8 {
21
+
22
+ class Context;
23
+ class Isolate;
24
+
25
+ namespace internal {
26
+ class ReadOnlyHeap;
27
+ } // namespace internal
28
+
29
+ /**
30
+ * Controls how the default MeasureMemoryDelegate reports the result of
31
+ * the memory measurement to JS. With kSummary only the total size is reported.
32
+ * With kDetailed the result includes the size of each native context.
33
+ */
34
+ enum class MeasureMemoryMode { kSummary, kDetailed };
35
+
36
+ /**
37
+ * Controls how promptly a memory measurement request is executed.
38
+ * By default the measurement is folded with the next scheduled GC which may
39
+ * happen after a while and is forced after some timeout.
40
+ * The kEager mode starts incremental GC right away and is useful for testing.
41
+ * The kLazy mode does not force GC.
42
+ */
43
+ enum class MeasureMemoryExecution { kDefault, kEager, kLazy };
44
+
45
+ /**
46
+ * The delegate is used in Isolate::MeasureMemory API.
47
+ *
48
+ * It specifies the contexts that need to be measured and gets called when
49
+ * the measurement is completed to report the results.
50
+ *
51
+ * Both MeasurementComplete() callbacks will be invoked on completion.
52
+ * Each implementation of this class should hence implement only one of them,
53
+ * and leave the other empty.
54
+ */
55
+ class V8_EXPORT MeasureMemoryDelegate {
56
+ public:
57
+ virtual ~MeasureMemoryDelegate() = default;
58
+
59
+ /**
60
+ * Returns true if the size of the given context needs to be measured.
61
+ */
62
+ virtual bool ShouldMeasure(Local<Context> context) = 0;
63
+
64
+ /** Holds the result of a memory measurement request. */
65
+ struct Result {
66
+ /**
67
+ * Two spans of equal length: the first includes each context for which
68
+ * ShouldMeasure returned true and that was not garbage collected while
69
+ * the memory measurement was in progress; the second includes the size
70
+ * of the respective context.
71
+ */
72
+ const MemorySpan<const Local<Context>>& contexts;
73
+ const MemorySpan<const size_t>& sizes_in_bytes;
74
+
75
+ /**
76
+ * Total size of objects that were not attributed to any context (i.e. are
77
+ * likely shared objects).
78
+ */
79
+ size_t unattributed_size_in_bytes;
80
+
81
+ /** Total size of generated code for Wasm (shared across contexts). */
82
+ size_t wasm_code_size_in_bytes;
83
+
84
+ /** Total size of Wasm metadata (except code; shared across contexts). */
85
+ size_t wasm_metadata_size_in_bytes;
86
+ };
87
+
88
+ /**
89
+ * This function is called when memory measurement finishes.
90
+ *
91
+ * \param result the result of the measurement.
92
+ */
93
+ virtual void MeasurementComplete(Result result) {}
94
+
95
+ /**
96
+ * Returns a default delegate that resolves the given promise when
97
+ * the memory measurement completes.
98
+ *
99
+ * \param isolate the current isolate
100
+ * \param context the current context
101
+ * \param promise_resolver the promise resolver that is given the
102
+ * result of the memory measurement.
103
+ * \param mode the detail level of the result.
104
+ */
105
+ static std::unique_ptr<MeasureMemoryDelegate> Default(
106
+ Isolate* isolate, Local<Context> context,
107
+ Local<Promise::Resolver> promise_resolver, MeasureMemoryMode mode);
108
+ };
109
+
110
+ /**
111
+ * Collection of shared per-process V8 memory information.
112
+ *
113
+ * Instances of this class can be passed to
114
+ * v8::V8::GetSharedMemoryStatistics to get shared memory statistics from V8.
115
+ */
116
+ class V8_EXPORT SharedMemoryStatistics {
117
+ public:
118
+ SharedMemoryStatistics();
119
+ size_t read_only_space_size() { return read_only_space_size_; }
120
+ size_t read_only_space_used_size() { return read_only_space_used_size_; }
121
+ size_t read_only_space_physical_size() {
122
+ return read_only_space_physical_size_;
123
+ }
124
+
125
+ private:
126
+ size_t read_only_space_size_;
127
+ size_t read_only_space_used_size_;
128
+ size_t read_only_space_physical_size_;
129
+
130
+ friend class V8;
131
+ friend class internal::ReadOnlyHeap;
132
+ };
133
+
134
+ /**
135
+ * Collection of V8 heap information.
136
+ *
137
+ * Instances of this class can be passed to v8::Isolate::GetHeapStatistics to
138
+ * get heap statistics from V8.
139
+ */
140
+ class V8_EXPORT HeapStatistics {
141
+ public:
142
+ HeapStatistics();
143
+ size_t total_heap_size() { return total_heap_size_; }
144
+ size_t total_heap_size_executable() { return total_heap_size_executable_; }
145
+ size_t total_physical_size() { return total_physical_size_; }
146
+ size_t total_available_size() { return total_available_size_; }
147
+ size_t total_global_handles_size() { return total_global_handles_size_; }
148
+ size_t used_global_handles_size() { return used_global_handles_size_; }
149
+ size_t used_heap_size() { return used_heap_size_; }
150
+ size_t heap_size_limit() { return heap_size_limit_; }
151
+ size_t malloced_memory() { return malloced_memory_; }
152
+ size_t external_memory() { return external_memory_; }
153
+ size_t peak_malloced_memory() { return peak_malloced_memory_; }
154
+ size_t number_of_native_contexts() { return number_of_native_contexts_; }
155
+ size_t number_of_detached_contexts() { return number_of_detached_contexts_; }
156
+
157
+ /**
158
+ * Returns a 0/1 boolean, which signifies whether the V8 overwrite heap
159
+ * garbage with a bit pattern.
160
+ */
161
+ size_t does_zap_garbage() { return does_zap_garbage_; }
162
+
163
+ private:
164
+ size_t total_heap_size_;
165
+ size_t total_heap_size_executable_;
166
+ size_t total_physical_size_;
167
+ size_t total_available_size_;
168
+ size_t used_heap_size_;
169
+ size_t heap_size_limit_;
170
+ size_t malloced_memory_;
171
+ size_t external_memory_;
172
+ size_t peak_malloced_memory_;
173
+ bool does_zap_garbage_;
174
+ size_t number_of_native_contexts_;
175
+ size_t number_of_detached_contexts_;
176
+ size_t total_global_handles_size_;
177
+ size_t used_global_handles_size_;
178
+
179
+ friend class V8;
180
+ friend class Isolate;
181
+ };
182
+
183
+ class V8_EXPORT HeapSpaceStatistics {
184
+ public:
185
+ HeapSpaceStatistics();
186
+ const char* space_name() { return space_name_; }
187
+ size_t space_size() { return space_size_; }
188
+ size_t space_used_size() { return space_used_size_; }
189
+ size_t space_available_size() { return space_available_size_; }
190
+ size_t physical_space_size() { return physical_space_size_; }
191
+
192
+ private:
193
+ const char* space_name_;
194
+ size_t space_size_;
195
+ size_t space_used_size_;
196
+ size_t space_available_size_;
197
+ size_t physical_space_size_;
198
+
199
+ friend class Isolate;
200
+ };
201
+
202
+ class V8_EXPORT HeapObjectStatistics {
203
+ public:
204
+ HeapObjectStatistics();
205
+ const char* object_type() { return object_type_; }
206
+ const char* object_sub_type() { return object_sub_type_; }
207
+ size_t object_count() { return object_count_; }
208
+ size_t object_size() { return object_size_; }
209
+
210
+ private:
211
+ const char* object_type_;
212
+ const char* object_sub_type_;
213
+ size_t object_count_;
214
+ size_t object_size_;
215
+
216
+ friend class Isolate;
217
+ };
218
+
219
+ class V8_EXPORT HeapCodeStatistics {
220
+ public:
221
+ HeapCodeStatistics();
222
+ size_t code_and_metadata_size() { return code_and_metadata_size_; }
223
+ size_t bytecode_and_metadata_size() { return bytecode_and_metadata_size_; }
224
+ size_t external_script_source_size() { return external_script_source_size_; }
225
+ size_t cpu_profiler_metadata_size() { return cpu_profiler_metadata_size_; }
226
+
227
+ private:
228
+ size_t code_and_metadata_size_;
229
+ size_t bytecode_and_metadata_size_;
230
+ size_t external_script_source_size_;
231
+ size_t cpu_profiler_metadata_size_;
232
+
233
+ friend class Isolate;
234
+ };
235
+
236
+ } // namespace v8
237
+
238
+ #endif // INCLUDE_V8_STATISTICS_H_