@encharm/cws 4.4.1 → 4.5.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.
- package/binding.gyp +1 -1
- package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node137.node +0 -0
- package/dist/bindings/cws_linux_arm64_node115.node +0 -0
- package/dist/bindings/cws_linux_arm64_node127.node +0 -0
- package/dist/bindings/cws_linux_x64_node115.node +0 -0
- package/dist/bindings/cws_linux_x64_node127.node +0 -0
- package/dist/bindings/cws_linux_x64_node137.node +0 -0
- package/dist/bindings/cws_win32_x64_node108.node +0 -0
- package/dist/bindings/cws_win32_x64_node115.node +0 -0
- package/dist/bindings/cws_win32_x64_node127.node +0 -0
- package/dist/bindings/cws_win32_x64_node83.node +0 -0
- package/dist/bindings/cws_win32_x64_node93.node +0 -0
- package/package.json +1 -1
- package/src/Addon.h +13 -23
- package/src/Socket.h +0 -1
- package/src/headers/22/acorn_version.h +6 -0
- package/src/headers/22/aliased_buffer-inl.h +243 -0
- package/src/headers/22/aliased_buffer.h +206 -0
- package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
- package/src/headers/{18 → 22}/async_wrap.h +65 -59
- package/src/headers/{18 → 22}/base_object-inl.h +57 -117
- package/src/headers/{18 → 22}/base_object.h +58 -30
- package/src/headers/22/base_object_types.h +74 -0
- package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
- package/src/headers/22/blob_serializer_deserializer.h +132 -0
- package/src/headers/{16 → 22}/callback_queue.h +1 -0
- package/src/headers/{16 → 22}/cares_wrap.h +27 -20
- package/src/headers/22/cjs_module_lexer_version.h +6 -0
- package/src/headers/22/cleanup_queue-inl.h +62 -0
- package/src/headers/22/cleanup_queue.h +85 -0
- package/src/headers/22/compile_cache.h +104 -0
- package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
- package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
- package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
- package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
- package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
- package/src/headers/22/crypto/ncrypto.h +752 -0
- package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
- package/src/headers/{18 → 22}/debug_utils.h +25 -19
- package/src/headers/22/encoding_binding.h +59 -0
- package/src/headers/{14 → 22}/env-inl.h +276 -409
- package/src/headers/22/env.h +1266 -0
- package/src/headers/22/env_properties.h +497 -0
- package/src/headers/{18 → 22}/handle_wrap.h +2 -0
- package/src/headers/{18 → 22}/histogram.h +88 -48
- package/src/headers/{16 → 22}/inspector_agent.h +17 -1
- package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
- package/src/headers/22/js_native_api.h +619 -0
- package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
- package/src/headers/22/js_native_api_v8.h +485 -0
- package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
- package/src/headers/22/json_parser.h +40 -0
- package/src/headers/{16 → 22}/json_utils.h +19 -8
- package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
- package/src/headers/{14 → 22}/memory_tracker.h +13 -8
- package/src/headers/{16 → 22}/module_wrap.h +49 -19
- package/src/headers/22/ncrypto/ncrypto.h +752 -0
- package/src/headers/{18 → 22}/node.h +465 -68
- package/src/headers/{18 → 22}/node_api.h +66 -81
- package/src/headers/{18 → 22}/node_api_internals.h +8 -4
- package/src/headers/{18 → 22}/node_api_types.h +5 -0
- package/src/headers/22/node_binding.h +154 -0
- package/src/headers/{18 → 22}/node_blob.h +46 -78
- package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
- package/src/headers/{18 → 22}/node_bob.h +2 -6
- package/src/headers/{18 → 22}/node_buffer.h +1 -1
- package/src/headers/22/node_builtins.h +220 -0
- package/src/headers/{18 → 22}/node_constants.h +3 -5
- package/src/headers/22/node_context_data.h +168 -0
- package/src/headers/22/node_contextify.h +199 -0
- package/src/headers/{16 → 22}/node_crypto.h +1 -2
- package/src/headers/22/node_dotenv.h +45 -0
- package/src/headers/{18 → 22}/node_errors.h +86 -27
- package/src/headers/22/node_exit_code.h +54 -0
- package/src/headers/22/node_external_reference.h +249 -0
- package/src/headers/{18 → 22}/node_file-inl.h +127 -30
- package/src/headers/{16 → 22}/node_file.h +122 -11
- package/src/headers/{18 → 22}/node_http2.h +28 -11
- package/src/headers/{16 → 22}/node_http2_state.h +34 -25
- package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
- package/src/headers/{18 → 22}/node_http_common.h +56 -55
- package/src/headers/{16 → 22}/node_i18n.h +5 -18
- package/src/headers/{18 → 22}/node_internals.h +121 -59
- package/src/headers/{18 → 22}/node_main_instance.h +4 -31
- package/src/headers/{18 → 22}/node_messaging.h +27 -10
- package/src/headers/{18 → 22}/node_metadata.h +23 -1
- package/src/headers/{18 → 22}/node_options-inl.h +24 -11
- package/src/headers/{18 → 22}/node_options.h +124 -39
- package/src/headers/{18 → 22}/node_perf.h +0 -2
- package/src/headers/{18 → 22}/node_perf_common.h +20 -9
- package/src/headers/{18 → 22}/node_platform.h +11 -5
- package/src/headers/{18 → 22}/node_process.h +26 -14
- package/src/headers/22/node_realm-inl.h +145 -0
- package/src/headers/22/node_realm.h +184 -0
- package/src/headers/{16 → 22}/node_report.h +13 -17
- package/src/headers/{16 → 22}/node_revert.h +3 -3
- package/src/headers/{16 → 22}/node_root_certs.h +902 -461
- package/src/headers/22/node_sea.h +64 -0
- package/src/headers/22/node_shadow_realm.h +46 -0
- package/src/headers/22/node_snapshot_builder.h +57 -0
- package/src/headers/22/node_snapshotable.h +174 -0
- package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
- package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
- package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
- package/src/headers/22/node_threadsafe_cow.h +105 -0
- package/src/headers/22/node_union_bytes.h +81 -0
- package/src/headers/22/node_url.h +96 -0
- package/src/headers/22/node_v8.h +77 -0
- package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
- package/src/headers/{16 → 22}/node_version.h +21 -9
- package/src/headers/22/node_wasi.h +185 -0
- package/src/headers/{14 → 22}/node_watchdog.h +2 -0
- package/src/headers/{18 → 22}/node_worker.h +7 -2
- package/src/headers/22/permission/child_process_permission.h +31 -0
- package/src/headers/22/permission/fs_permission.h +167 -0
- package/src/headers/22/permission/inspector_permission.h +31 -0
- package/src/headers/22/permission/permission.h +99 -0
- package/src/headers/22/permission/permission_base.h +60 -0
- package/src/headers/22/permission/wasi_permission.h +31 -0
- package/src/headers/22/permission/worker_permission.h +31 -0
- package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
- package/src/headers/{14 → 22}/spawn_sync.h +3 -3
- package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
- package/src/headers/{18 → 22}/stream_base.h +35 -16
- package/src/headers/{18 → 22}/stream_pipe.h +3 -4
- package/src/headers/{16 → 22}/stream_wrap.h +2 -1
- package/src/headers/{18 → 22}/string_bytes.h +5 -14
- package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
- package/src/headers/{16 → 22}/string_decoder.h +0 -1
- package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
- package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
- package/src/headers/22/timers.h +76 -0
- package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
- package/src/headers/{16 → 22}/udp_wrap.h +8 -5
- package/src/headers/22/undici_version.h +6 -0
- package/src/headers/{18 → 22}/util-inl.h +97 -127
- package/src/headers/{18 → 22}/util.h +293 -106
- package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
- package/src/headers/24/acorn_version.h +6 -0
- package/src/headers/24/addon_permission.h +31 -0
- package/src/headers/{16/tracing → 24}/agent.h +1 -1
- package/src/headers/24/aliased_buffer-inl.h +244 -0
- package/src/headers/24/aliased_buffer.h +206 -0
- package/src/headers/24/amaro_version.h +6 -0
- package/src/headers/24/application.h +165 -0
- package/src/headers/24/async_context_frame.h +33 -0
- package/src/headers/{14 → 24}/async_wrap-inl.h +8 -6
- package/src/headers/{16 → 24}/async_wrap.h +86 -88
- package/src/headers/{16 → 24}/base_object-inl.h +75 -119
- package/src/headers/{16 → 24}/base_object.h +84 -40
- package/src/headers/24/base_object_types.h +74 -0
- package/src/headers/24/bindingdata.h +272 -0
- package/src/headers/24/blob_serializer_deserializer-inl.h +385 -0
- package/src/headers/24/blob_serializer_deserializer.h +132 -0
- package/src/headers/{18 → 24}/callback_queue.h +1 -0
- package/src/headers/{18 → 24}/cares_wrap.h +68 -144
- package/src/headers/24/child_process_permission.h +31 -0
- package/src/headers/24/cid.h +127 -0
- package/src/headers/24/cjs_module_lexer_version.h +6 -0
- package/src/headers/24/cleanup_queue-inl.h +36 -0
- package/src/headers/24/cleanup_queue.h +79 -0
- package/src/headers/24/compile_cache.h +113 -0
- package/src/headers/24/cppgc_helpers-inl.h +65 -0
- package/src/headers/24/cppgc_helpers.h +162 -0
- package/src/headers/24/crypto/crypto_aes.h +97 -0
- package/src/headers/24/crypto/crypto_argon2.h +86 -0
- package/src/headers/{16 → 24}/crypto/crypto_bio.h +8 -9
- package/src/headers/24/crypto/crypto_chacha20_poly1305.h +64 -0
- package/src/headers/{18 → 24}/crypto/crypto_cipher.h +48 -58
- package/src/headers/{16 → 24}/crypto/crypto_clienthello-inl.h +2 -2
- package/src/headers/{16 → 24}/crypto/crypto_clienthello.h +1 -1
- package/src/headers/24/crypto/crypto_common.h +48 -0
- package/src/headers/{16 → 24}/crypto/crypto_context.h +46 -22
- package/src/headers/{18 → 24}/crypto/crypto_dh.h +27 -57
- package/src/headers/{18 → 24}/crypto/crypto_dsa.h +7 -34
- package/src/headers/{18 → 24}/crypto/crypto_ec.h +42 -49
- package/src/headers/{18 → 24}/crypto/crypto_hash.h +11 -11
- package/src/headers/{18 → 24}/crypto/crypto_hkdf.h +10 -14
- package/src/headers/{18 → 24}/crypto/crypto_hmac.h +11 -13
- package/src/headers/24/crypto/crypto_kem.h +113 -0
- package/src/headers/{18 → 24}/crypto/crypto_keygen.h +59 -74
- package/src/headers/{16 → 24}/crypto/crypto_keys.h +134 -154
- package/src/headers/24/crypto/crypto_ml_dsa.h +21 -0
- package/src/headers/{18 → 24}/crypto/crypto_pbkdf2.h +9 -11
- package/src/headers/{18 → 24}/crypto/crypto_random.h +28 -34
- package/src/headers/{18 → 24}/crypto/crypto_rsa.h +30 -35
- package/src/headers/{18 → 24}/crypto/crypto_scrypt.h +8 -10
- package/src/headers/{18 → 24}/crypto/crypto_sig.h +36 -48
- package/src/headers/{16 → 24}/crypto/crypto_tls.h +35 -18
- package/src/headers/{16 → 24}/crypto/crypto_util.h +183 -321
- package/src/headers/24/crypto/crypto_x509.h +140 -0
- package/src/headers/24/data.h +148 -0
- package/src/headers/{14 → 24}/debug_utils-inl.h +17 -8
- package/src/headers/{16 → 24}/debug_utils.h +31 -22
- package/src/headers/24/defs.h +254 -0
- package/src/headers/24/embedded_data.h +17 -0
- package/src/headers/24/encoding_binding.h +60 -0
- package/src/headers/24/endpoint.h +421 -0
- package/src/headers/{16 → 24}/env-inl.h +198 -540
- package/src/headers/24/env.h +1257 -0
- package/src/headers/24/env_properties.h +561 -0
- package/src/headers/24/fs_permission.h +167 -0
- package/src/headers/{16 → 24}/handle_wrap.h +4 -2
- package/src/headers/{16 → 24}/histogram-inl.h +34 -15
- package/src/headers/24/histogram.h +279 -0
- package/src/headers/24/http3.h +44 -0
- package/src/headers/{18 → 24}/inspector_agent.h +23 -2
- package/src/headers/24/inspector_permission.h +31 -0
- package/src/headers/{18 → 24}/inspector_profiler.h +15 -15
- package/src/headers/24/io_agent.h +30 -0
- package/src/headers/{18 → 24}/js_native_api.h +74 -30
- package/src/headers/{16 → 24}/js_native_api_types.h +61 -10
- package/src/headers/{18 → 24}/js_native_api_v8.h +205 -160
- package/src/headers/{16 → 24}/js_native_api_v8_internals.h +12 -6
- package/src/headers/24/json_parser.h +40 -0
- package/src/headers/{18 → 24}/json_utils.h +19 -8
- package/src/headers/24/logstream.h +81 -0
- package/src/headers/24/main_thread_interface.h +116 -0
- package/src/headers/{16 → 24}/memory_tracker-inl.h +115 -17
- package/src/headers/{16 → 24}/memory_tracker.h +58 -9
- package/src/headers/24/module_wrap.h +229 -0
- package/src/headers/24/ncrypto.h +1625 -0
- package/src/headers/24/network_agent.h +118 -0
- package/src/headers/24/network_inspector.h +45 -0
- package/src/headers/24/network_resource_manager.h +29 -0
- package/src/headers/{16 → 24}/node.h +560 -72
- package/src/headers/24/node_api.h +269 -0
- package/src/headers/24/node_api_internals.h +46 -0
- package/src/headers/{16 → 24}/node_api_types.h +13 -11
- package/src/headers/24/node_binding.h +163 -0
- package/src/headers/{16 → 24}/node_blob.h +46 -78
- package/src/headers/{16 → 24}/node_bob-inl.h +1 -2
- package/src/headers/{16 → 24}/node_bob.h +2 -6
- package/src/headers/{14 → 24}/node_buffer.h +1 -1
- package/src/headers/24/node_builtins.h +223 -0
- package/src/headers/24/node_config_file.h +65 -0
- package/src/headers/{14 → 24}/node_constants.h +3 -5
- package/src/headers/24/node_context_data.h +168 -0
- package/src/headers/24/node_contextify.h +261 -0
- package/src/headers/{18 → 24}/node_crypto.h +7 -2
- package/src/headers/24/node_debug.h +25 -0
- package/src/headers/24/node_dotenv.h +45 -0
- package/src/headers/{16 → 24}/node_errors.h +146 -32
- package/src/headers/24/node_exit_code.h +54 -0
- package/src/headers/{18 → 24}/node_external_reference.h +44 -22
- package/src/headers/{16 → 24}/node_file-inl.h +156 -50
- package/src/headers/{18 → 24}/node_file.h +129 -15
- package/src/headers/{16 → 24}/node_http2.h +53 -18
- package/src/headers/{14 → 24}/node_http2_state.h +35 -25
- package/src/headers/{16 → 24}/node_http_common-inl.h +8 -10
- package/src/headers/{16 → 24}/node_http_common.h +63 -59
- package/src/headers/{18 → 24}/node_i18n.h +5 -18
- package/src/headers/{16 → 24}/node_internals.h +131 -76
- package/src/headers/24/node_json.h +24 -0
- package/src/headers/24/node_large_page.h +34 -0
- package/src/headers/24/node_locks.h +180 -0
- package/src/headers/{14 → 24}/node_main_instance.h +15 -44
- package/src/headers/{16 → 24}/node_mem-inl.h +7 -7
- package/src/headers/{16 → 24}/node_messaging.h +27 -11
- package/src/headers/{16 → 24}/node_metadata.h +44 -2
- package/src/headers/24/node_modules.h +93 -0
- package/src/headers/{16 → 24}/node_options-inl.h +93 -46
- package/src/headers/{16 → 24}/node_options.h +251 -63
- package/src/headers/{16 → 24}/node_perf.h +6 -25
- package/src/headers/{16 → 24}/node_perf_common.h +23 -10
- package/src/headers/24/node_platform.h +286 -0
- package/src/headers/24/node_process.h +111 -0
- package/src/headers/24/node_realm-inl.h +153 -0
- package/src/headers/24/node_realm.h +236 -0
- package/src/headers/{18 → 24}/node_report.h +13 -17
- package/src/headers/{18 → 24}/node_revert.h +3 -3
- package/src/headers/{18 → 24}/node_root_certs.h +1010 -710
- package/src/headers/24/node_sea.h +74 -0
- package/src/headers/24/node_shadow_realm.h +46 -0
- package/src/headers/24/node_snapshot_builder.h +57 -0
- package/src/headers/24/node_snapshotable.h +174 -0
- package/src/headers/{16 → 24}/node_sockaddr-inl.h +11 -20
- package/src/headers/{16 → 24}/node_sockaddr.h +9 -20
- package/src/headers/24/node_sqlite.h +270 -0
- package/src/headers/{18 → 24}/node_stat_watcher.h +2 -1
- package/src/headers/24/node_string.h +101 -0
- package/src/headers/24/node_task_runner.h +92 -0
- package/src/headers/24/node_threadsafe_cow-inl.h +54 -0
- package/src/headers/24/node_threadsafe_cow.h +105 -0
- package/src/headers/24/node_union_bytes.h +81 -0
- package/src/headers/24/node_url.h +101 -0
- package/src/headers/24/node_url_pattern.h +118 -0
- package/src/headers/24/node_v8.h +77 -0
- package/src/headers/{18 → 24}/node_v8_platform-inl.h +22 -31
- package/src/headers/{18 → 24}/node_version.h +18 -6
- package/src/headers/24/node_wasi.h +185 -0
- package/src/headers/24/node_wasm_web_api.h +55 -0
- package/src/headers/{18 → 24}/node_watchdog.h +2 -0
- package/src/headers/24/node_webstorage.h +60 -0
- package/src/headers/{16 → 24}/node_worker.h +24 -10
- package/src/headers/24/packet.h +155 -0
- package/src/headers/24/path.h +33 -0
- package/src/headers/24/permission/addon_permission.h +31 -0
- package/src/headers/24/permission/child_process_permission.h +31 -0
- package/src/headers/24/permission/fs_permission.h +167 -0
- package/src/headers/24/permission/inspector_permission.h +31 -0
- package/src/headers/24/permission/permission.h +100 -0
- package/src/headers/24/permission/permission_base.h +65 -0
- package/src/headers/24/permission/wasi_permission.h +31 -0
- package/src/headers/24/permission/worker_permission.h +31 -0
- package/src/headers/24/permission.h +100 -0
- package/src/headers/24/permission_base.h +65 -0
- package/src/headers/24/preferredaddress.h +72 -0
- package/src/headers/24/protocol_helper.h +27 -0
- package/src/headers/24/queue.h +306 -0
- package/src/headers/{18 → 24}/req_wrap-inl.h +12 -6
- package/src/headers/{16 → 24}/req_wrap.h +3 -1
- package/src/headers/24/runtime_agent.h +41 -0
- package/src/headers/24/session.h +528 -0
- package/src/headers/24/sessionticket.h +108 -0
- package/src/headers/{18 → 24}/spawn_sync.h +9 -8
- package/src/headers/{16 → 24}/stream_base-inl.h +3 -133
- package/src/headers/{16 → 24}/stream_base.h +43 -19
- package/src/headers/{16 → 24}/stream_pipe.h +7 -4
- package/src/headers/{18 → 24}/stream_wrap.h +2 -3
- package/src/headers/24/streams.h +370 -0
- package/src/headers/{16 → 24}/string_bytes.h +8 -21
- package/src/headers/{18 → 24}/string_decoder-inl.h +0 -6
- package/src/headers/{18 → 24}/string_decoder.h +0 -1
- package/src/headers/24/target_agent.h +75 -0
- package/src/headers/{16 → 24}/tcp_wrap.h +3 -1
- package/src/headers/{14 → 24}/threadpoolwork-inl.h +14 -1
- package/src/headers/24/timer_wrap-inl.h +32 -0
- package/src/headers/{16 → 24}/timer_wrap.h +7 -4
- package/src/headers/24/timers.h +75 -0
- package/src/headers/24/tlscontext.h +228 -0
- package/src/headers/24/tokens.h +256 -0
- package/src/headers/{14/tracing → 24}/trace_event.h +7 -5
- package/src/headers/24/traced_value.h +129 -0
- package/src/headers/24/tracing_agent.h +43 -0
- package/src/headers/24/transportparams.h +166 -0
- package/src/headers/{16 → 24}/tty_wrap.h +0 -1
- package/src/headers/{18 → 24}/udp_wrap.h +8 -5
- package/src/headers/24/undici_version.h +6 -0
- package/src/headers/{16 → 24}/util-inl.h +267 -131
- package/src/headers/{16 → 24}/util.h +338 -146
- package/src/headers/24/v8-external-memory-accounter.h +60 -0
- package/src/headers/24/v8-fast-api-calls.h +819 -0
- package/src/headers/24/v8-inspector.h +426 -0
- package/src/headers/24/wasi_permission.h +31 -0
- package/src/headers/24/worker_agent.h +40 -0
- package/src/headers/24/worker_inspector.h +124 -0
- package/src/headers/24/worker_permission.h +31 -0
- package/src/headers/24/zlib_version.h +6 -0
- package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
- package/dist/bindings/cws_darwin_x64_node83.node +0 -0
- package/dist/bindings/cws_darwin_x64_node93.node +0 -0
- package/dist/bindings/cws_linux_arm64_node83.node +0 -0
- package/dist/bindings/cws_linux_arm64_node93.node +0 -0
- package/dist/bindings/cws_linux_x64_node83.node +0 -0
- package/dist/bindings/cws_linux_x64_node93.node +0 -0
- package/src/headers/14/aliased_buffer.h +0 -263
- package/src/headers/14/allocated_buffer-inl.h +0 -110
- package/src/headers/14/allocated_buffer.h +0 -73
- package/src/headers/14/async_wrap.h +0 -230
- package/src/headers/14/base64.h +0 -183
- package/src/headers/14/base_object-inl.h +0 -371
- package/src/headers/14/base_object.h +0 -281
- package/src/headers/14/callback_queue-inl.h +0 -97
- package/src/headers/14/callback_queue.h +0 -78
- package/src/headers/14/debug_utils.h +0 -181
- package/src/headers/14/env.h +0 -1388
- package/src/headers/14/handle_wrap.h +0 -117
- package/src/headers/14/histogram-inl.h +0 -83
- package/src/headers/14/histogram.h +0 -98
- package/src/headers/14/inspector_agent.h +0 -149
- package/src/headers/14/inspector_profiler.h +0 -137
- package/src/headers/14/js_native_api.h +0 -544
- package/src/headers/14/js_native_api_types.h +0 -143
- package/src/headers/14/js_native_api_v8.h +0 -301
- package/src/headers/14/js_native_api_v8_internals.h +0 -38
- package/src/headers/14/json_utils.h +0 -161
- package/src/headers/14/memory_tracker-inl.h +0 -355
- package/src/headers/14/module_wrap.h +0 -99
- package/src/headers/14/node.h +0 -1032
- package/src/headers/14/node_api.h +0 -255
- package/src/headers/14/node_api_types.h +0 -44
- package/src/headers/14/node_binding.h +0 -99
- package/src/headers/14/node_context_data.h +0 -44
- package/src/headers/14/node_contextify.h +0 -161
- package/src/headers/14/node_crypto.h +0 -865
- package/src/headers/14/node_crypto_bio.h +0 -195
- package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
- package/src/headers/14/node_crypto_clienthello.h +0 -132
- package/src/headers/14/node_crypto_common.h +0 -138
- package/src/headers/14/node_crypto_groups.h +0 -415
- package/src/headers/14/node_dtrace.h +0 -86
- package/src/headers/14/node_errors.h +0 -214
- package/src/headers/14/node_file-inl.h +0 -306
- package/src/headers/14/node_file.h +0 -417
- package/src/headers/14/node_http2.h +0 -1191
- package/src/headers/14/node_http_common-inl.h +0 -194
- package/src/headers/14/node_http_common.h +0 -529
- package/src/headers/14/node_i18n.h +0 -144
- package/src/headers/14/node_internals.h +0 -405
- package/src/headers/14/node_mem.h +0 -45
- package/src/headers/14/node_messaging.h +0 -303
- package/src/headers/14/node_metadata.h +0 -109
- package/src/headers/14/node_mutex.h +0 -247
- package/src/headers/14/node_native_module.h +0 -101
- package/src/headers/14/node_native_module_env.h +0 -66
- package/src/headers/14/node_options-inl.h +0 -451
- package/src/headers/14/node_options.h +0 -481
- package/src/headers/14/node_perf.h +0 -181
- package/src/headers/14/node_perf_common.h +0 -97
- package/src/headers/14/node_platform.h +0 -189
- package/src/headers/14/node_process.h +0 -40
- package/src/headers/14/node_report.h +0 -47
- package/src/headers/14/node_revert.h +0 -72
- package/src/headers/14/node_root_certs.h +0 -3458
- package/src/headers/14/node_sockaddr-inl.h +0 -170
- package/src/headers/14/node_sockaddr.h +0 -123
- package/src/headers/14/node_stat_watcher.h +0 -70
- package/src/headers/14/node_union_bytes.h +0 -103
- package/src/headers/14/node_url.h +0 -188
- package/src/headers/14/node_version.h +0 -98
- package/src/headers/14/node_wasi.h +0 -108
- package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/14/node_win32_etw_provider.h +0 -99
- package/src/headers/14/node_worker.h +0 -141
- package/src/headers/14/pipe_wrap.h +0 -78
- package/src/headers/14/req_wrap-inl.h +0 -170
- package/src/headers/14/req_wrap.h +0 -77
- package/src/headers/14/stream_base-inl.h +0 -275
- package/src/headers/14/stream_base.h +0 -434
- package/src/headers/14/stream_pipe.h +0 -73
- package/src/headers/14/stream_wrap.h +0 -130
- package/src/headers/14/string_bytes.h +0 -129
- package/src/headers/14/string_decoder.h +0 -50
- package/src/headers/14/string_search.h +0 -638
- package/src/headers/14/tcp_wrap.h +0 -101
- package/src/headers/14/tls_wrap.h +0 -222
- package/src/headers/14/tracing/agent.h +0 -195
- package/src/headers/14/tracing/traced_value.h +0 -70
- package/src/headers/14/tty_wrap.h +0 -64
- package/src/headers/14/udp_wrap.h +0 -227
- package/src/headers/14/util-inl.h +0 -566
- package/src/headers/14/util.h +0 -804
- package/src/headers/14/v8abbr.h +0 -124
- package/src/headers/16/aliased_buffer.h +0 -315
- package/src/headers/16/allocated_buffer-inl.h +0 -110
- package/src/headers/16/allocated_buffer.h +0 -73
- package/src/headers/16/async_wrap-inl.h +0 -94
- package/src/headers/16/base64-inl.h +0 -189
- package/src/headers/16/base64.h +0 -69
- package/src/headers/16/crypto/crypto_aes.h +0 -89
- package/src/headers/16/crypto/crypto_cipher.h +0 -286
- package/src/headers/16/crypto/crypto_common.h +0 -187
- package/src/headers/16/crypto/crypto_dh.h +0 -157
- package/src/headers/16/crypto/crypto_dsa.h +0 -76
- package/src/headers/16/crypto/crypto_ec.h +0 -169
- package/src/headers/16/crypto/crypto_groups.h +0 -415
- package/src/headers/16/crypto/crypto_hash.h +0 -89
- package/src/headers/16/crypto/crypto_hkdf.h +0 -66
- package/src/headers/16/crypto/crypto_hmac.h +0 -94
- package/src/headers/16/crypto/crypto_keygen.h +0 -301
- package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
- package/src/headers/16/crypto/crypto_random.h +0 -130
- package/src/headers/16/crypto/crypto_rsa.h +0 -141
- package/src/headers/16/crypto/crypto_scrypt.h +0 -87
- package/src/headers/16/crypto/crypto_sig.h +0 -167
- package/src/headers/16/crypto/crypto_spkac.h +0 -20
- package/src/headers/16/crypto/crypto_timing.h +0 -20
- package/src/headers/16/crypto/crypto_x509.h +0 -141
- package/src/headers/16/env.h +0 -1629
- package/src/headers/16/histogram.h +0 -216
- package/src/headers/16/js_native_api.h +0 -561
- package/src/headers/16/js_native_api_v8.h +0 -451
- package/src/headers/16/node.d +0 -315
- package/src/headers/16/node.stp +0 -146
- package/src/headers/16/node_api.h +0 -275
- package/src/headers/16/node_api_internals.h +0 -30
- package/src/headers/16/node_binding.h +0 -99
- package/src/headers/16/node_buffer.h +0 -92
- package/src/headers/16/node_constants.h +0 -84
- package/src/headers/16/node_context_data.h +0 -44
- package/src/headers/16/node_contextify.h +0 -196
- package/src/headers/16/node_dtrace.h +0 -86
- package/src/headers/16/node_external_reference.h +0 -129
- package/src/headers/16/node_main_instance.h +0 -103
- package/src/headers/16/node_native_module.h +0 -101
- package/src/headers/16/node_native_module_env.h +0 -68
- package/src/headers/16/node_platform.h +0 -192
- package/src/headers/16/node_process.h +0 -43
- package/src/headers/16/node_provider.d +0 -80
- package/src/headers/16/node_snapshotable.h +0 -137
- package/src/headers/16/node_union_bytes.h +0 -103
- package/src/headers/16/node_url.h +0 -205
- package/src/headers/16/node_v8.h +0 -41
- package/src/headers/16/node_v8_platform-inl.h +0 -194
- package/src/headers/16/node_wasi.h +0 -108
- package/src/headers/16/node_watchdog.h +0 -152
- package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
- package/src/headers/16/node_win32_etw_provider.h +0 -99
- package/src/headers/16/spawn_sync.h +0 -242
- package/src/headers/16/string_decoder-inl.h +0 -37
- package/src/headers/16/string_search.h +0 -638
- package/src/headers/16/threadpoolwork-inl.h +0 -57
- package/src/headers/16/tracing/node_trace_buffer.h +0 -83
- package/src/headers/16/tracing/node_trace_writer.h +0 -75
- package/src/headers/16/tracing/trace_event.h +0 -720
- package/src/headers/16/tracing/traced_value.h +0 -70
- package/src/headers/16/v8abbr.h +0 -123
- package/src/headers/16/v8ustack.d +0 -695
- package/src/headers/18/aliased_buffer.h +0 -315
- package/src/headers/18/aliased_struct-inl.h +0 -54
- package/src/headers/18/aliased_struct.h +0 -63
- package/src/headers/18/base64-inl.h +0 -189
- package/src/headers/18/base64.h +0 -69
- package/src/headers/18/connect_wrap.h +0 -26
- package/src/headers/18/connection_wrap.h +0 -30
- package/src/headers/18/crypto/crypto_aes.h +0 -89
- package/src/headers/18/crypto/crypto_bio.h +0 -194
- package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
- package/src/headers/18/crypto/crypto_common.h +0 -151
- package/src/headers/18/crypto/crypto_groups.h +0 -415
- package/src/headers/18/crypto/crypto_x509.h +0 -143
- package/src/headers/18/debug_utils-inl.h +0 -223
- package/src/headers/18/diagnosticfilename-inl.h +0 -33
- package/src/headers/18/env-inl.h +0 -1308
- package/src/headers/18/env.h +0 -1667
- package/src/headers/18/inspector_io.h +0 -78
- package/src/headers/18/inspector_socket.h +0 -60
- package/src/headers/18/inspector_socket_server.h +0 -110
- package/src/headers/18/js_stream.h +0 -52
- package/src/headers/18/memory_tracker.h +0 -284
- package/src/headers/18/module_wrap.h +0 -116
- package/src/headers/18/node_binding.h +0 -99
- package/src/headers/18/node_context_data.h +0 -44
- package/src/headers/18/node_contextify.h +0 -196
- package/src/headers/18/node_dir.h +0 -52
- package/src/headers/18/node_dtrace.h +0 -86
- package/src/headers/18/node_http2_state.h +0 -149
- package/src/headers/18/node_mem-inl.h +0 -112
- package/src/headers/18/node_native_module.h +0 -109
- package/src/headers/18/node_native_module_env.h +0 -71
- package/src/headers/18/node_object_wrap.h +0 -132
- package/src/headers/18/node_snapshot_builder.h +0 -43
- package/src/headers/18/node_snapshotable.h +0 -130
- package/src/headers/18/node_union_bytes.h +0 -103
- package/src/headers/18/node_url.h +0 -205
- package/src/headers/18/node_v8.h +0 -41
- package/src/headers/18/node_wasi.h +0 -108
- package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
- package/src/headers/18/node_win32_etw_provider.h +0 -99
- package/src/headers/18/string_search.h +0 -638
- package/src/headers/18/tracing/node_trace_buffer.h +0 -83
- package/src/headers/18/tracing/node_trace_writer.h +0 -75
- package/src/headers/18/tracing/trace_event_common.h +0 -1109
- package/src/headers/18/tracing/traced_value.h +0 -70
- package/src/headers/18/v8abbr.h +0 -123
- /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
- /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
- /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
- /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
- /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
- /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
- /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
- /package/src/headers/{14 → 22}/inspector_io.h +0 -0
- /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
- /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
- /package/src/headers/{14 → 22}/js_stream.h +0 -0
- /package/src/headers/{14 → 22}/node_dir.h +0 -0
- /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
- /package/src/headers/{16 → 22}/node_mem.h +0 -0
- /package/src/headers/{16 → 22}/node_mutex.h +0 -0
- /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
- /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
- /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
- /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
- /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
- /package/src/headers/{18 → 22}/req_wrap.h +0 -0
- /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
- /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
- /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
- /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
- /package/src/headers/{18 → 22}/tty_wrap.h +0 -0
- /package/src/headers/{16 → 24}/aliased_struct-inl.h +0 -0
- /package/src/headers/{16 → 24}/aliased_struct.h +0 -0
- /package/src/headers/{18 → 24}/callback_queue-inl.h +0 -0
- /package/src/headers/{16 → 24}/connect_wrap.h +0 -0
- /package/src/headers/{16 → 24}/connection_wrap.h +0 -0
- /package/src/headers/{18 → 24}/crypto/crypto_spkac.h +0 -0
- /package/src/headers/{18 → 24}/crypto/crypto_timing.h +0 -0
- /package/src/headers/{16 → 24}/diagnosticfilename-inl.h +0 -0
- /package/src/headers/{16 → 24}/inspector_io.h +0 -0
- /package/src/headers/{16 → 24}/inspector_socket.h +0 -0
- /package/src/headers/{16 → 24}/inspector_socket_server.h +0 -0
- /package/src/headers/{16 → 24}/js_stream.h +0 -0
- /package/src/headers/{16 → 24}/node_dir.h +0 -0
- /package/src/headers/{18 → 24}/node_mem.h +0 -0
- /package/src/headers/{18 → 24}/node_mutex.h +0 -0
- /package/src/headers/{16 → 24}/node_object_wrap.h +0 -0
- /package/src/headers/{18 → 24}/node_process-inl.h +0 -0
- /package/src/headers/{14/tracing → 24}/node_trace_buffer.h +0 -0
- /package/src/headers/{14/tracing → 24}/node_trace_writer.h +0 -0
- /package/src/headers/{18 → 24}/pipe_wrap.h +0 -0
- /package/src/headers/{16/tracing → 24}/trace_event_common.h +0 -0
|
@@ -33,37 +33,9 @@
|
|
|
33
33
|
namespace node {
|
|
34
34
|
|
|
35
35
|
BaseObject::BaseObject(Environment* env, v8::Local<v8::Object> object)
|
|
36
|
-
:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
object->SetAlignedPointerInInternalField(
|
|
40
|
-
BaseObject::kSlot,
|
|
41
|
-
static_cast<void*>(this));
|
|
42
|
-
env->AddCleanupHook(DeleteMe, static_cast<void*>(this));
|
|
43
|
-
env->modify_base_object_count(1);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
BaseObject::~BaseObject() {
|
|
47
|
-
env()->modify_base_object_count(-1);
|
|
48
|
-
env()->RemoveCleanupHook(DeleteMe, static_cast<void*>(this));
|
|
49
|
-
|
|
50
|
-
if (UNLIKELY(has_pointer_data())) {
|
|
51
|
-
PointerData* metadata = pointer_data();
|
|
52
|
-
CHECK_EQ(metadata->strong_ptr_count, 0);
|
|
53
|
-
metadata->self = nullptr;
|
|
54
|
-
if (metadata->weak_ptr_count == 0)
|
|
55
|
-
delete metadata;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if (persistent_handle_.IsEmpty()) {
|
|
59
|
-
// This most likely happened because the weak callback below cleared it.
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
{
|
|
64
|
-
v8::HandleScope handle_scope(env()->isolate());
|
|
65
|
-
object()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr);
|
|
66
|
-
}
|
|
36
|
+
: BaseObject(env->principal_realm(), object) {
|
|
37
|
+
// TODO(legendecas): Check the shorthand is only used in the principal realm
|
|
38
|
+
// while allowing to create a BaseObject in a vm context.
|
|
67
39
|
}
|
|
68
40
|
|
|
69
41
|
void BaseObject::Detach() {
|
|
@@ -83,52 +55,57 @@ v8::Local<v8::Object> BaseObject::object() const {
|
|
|
83
55
|
v8::Local<v8::Object> BaseObject::object(v8::Isolate* isolate) const {
|
|
84
56
|
v8::Local<v8::Object> handle = object();
|
|
85
57
|
|
|
86
|
-
DCHECK_EQ(handle->
|
|
87
|
-
isolate);
|
|
58
|
+
DCHECK_EQ(handle->GetCreationContextChecked()->GetIsolate(), isolate);
|
|
88
59
|
DCHECK_EQ(env()->isolate(), isolate);
|
|
89
60
|
|
|
90
61
|
return handle;
|
|
91
62
|
}
|
|
92
63
|
|
|
93
64
|
Environment* BaseObject::env() const {
|
|
94
|
-
return
|
|
65
|
+
return realm_->env();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
Realm* BaseObject::realm() const {
|
|
69
|
+
return realm_;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
bool BaseObject::IsBaseObject(IsolateData* isolate_data,
|
|
73
|
+
v8::Local<v8::Object> obj) {
|
|
74
|
+
if (obj->InternalFieldCount() < BaseObject::kInternalFieldCount) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
uint16_t* ptr = static_cast<uint16_t*>(
|
|
79
|
+
obj->GetAlignedPointerFromInternalField(BaseObject::kEmbedderType));
|
|
80
|
+
return ptr == isolate_data->embedder_id_for_non_cppgc();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
void BaseObject::TagBaseObject(IsolateData* isolate_data,
|
|
84
|
+
v8::Local<v8::Object> object) {
|
|
85
|
+
DCHECK_GE(object->InternalFieldCount(), BaseObject::kInternalFieldCount);
|
|
86
|
+
object->SetAlignedPointerInInternalField(
|
|
87
|
+
BaseObject::kEmbedderType, isolate_data->embedder_id_for_non_cppgc());
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
void BaseObject::SetInternalFields(IsolateData* isolate_data,
|
|
91
|
+
v8::Local<v8::Object> object,
|
|
92
|
+
void* slot) {
|
|
93
|
+
TagBaseObject(isolate_data, object);
|
|
94
|
+
object->SetAlignedPointerInInternalField(BaseObject::kSlot, slot);
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
BaseObject* BaseObject::FromJSObject(v8::Local<v8::Value> value) {
|
|
98
98
|
v8::Local<v8::Object> obj = value.As<v8::Object>();
|
|
99
|
-
DCHECK_GE(obj->InternalFieldCount(), BaseObject::
|
|
99
|
+
DCHECK_GE(obj->InternalFieldCount(), BaseObject::kInternalFieldCount);
|
|
100
100
|
return static_cast<BaseObject*>(
|
|
101
101
|
obj->GetAlignedPointerFromInternalField(BaseObject::kSlot));
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
|
|
105
104
|
template <typename T>
|
|
106
105
|
T* BaseObject::FromJSObject(v8::Local<v8::Value> object) {
|
|
107
106
|
return static_cast<T*>(FromJSObject(object));
|
|
108
107
|
}
|
|
109
108
|
|
|
110
|
-
|
|
111
|
-
void BaseObject::MakeWeak() {
|
|
112
|
-
if (has_pointer_data()) {
|
|
113
|
-
pointer_data()->wants_weak_jsobj = true;
|
|
114
|
-
if (pointer_data()->strong_ptr_count > 0) return;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
persistent_handle_.SetWeak(
|
|
118
|
-
this,
|
|
119
|
-
[](const v8::WeakCallbackInfo<BaseObject>& data) {
|
|
120
|
-
BaseObject* obj = data.GetParameter();
|
|
121
|
-
// Clear the persistent handle so that ~BaseObject() doesn't attempt
|
|
122
|
-
// to mess with internal fields, since the JS object may have
|
|
123
|
-
// transitioned into an invalid state.
|
|
124
|
-
// Refs: https://github.com/nodejs/node/issues/18897
|
|
125
|
-
obj->persistent_handle_.Reset();
|
|
126
|
-
CHECK_IMPLIES(obj->has_pointer_data(),
|
|
127
|
-
obj->pointer_data()->strong_ptr_count == 0);
|
|
128
|
-
obj->OnGCCollect();
|
|
129
|
-
}, v8::WeakCallbackType::kParameter);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
109
|
void BaseObject::OnGCCollect() {
|
|
133
110
|
delete this;
|
|
134
111
|
}
|
|
@@ -148,78 +125,30 @@ bool BaseObject::IsWeakOrDetached() const {
|
|
|
148
125
|
return pd->wants_weak_jsobj || pd->is_detached;
|
|
149
126
|
}
|
|
150
127
|
|
|
151
|
-
void BaseObject::LazilyInitializedJSTemplateConstructor(
|
|
152
|
-
const v8::FunctionCallbackInfo<v8::Value>& args) {
|
|
153
|
-
DCHECK(args.IsConstructCall());
|
|
154
|
-
DCHECK_GT(args.This()->InternalFieldCount(), 0);
|
|
155
|
-
args.This()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
v8::Local<v8::FunctionTemplate>
|
|
159
|
-
BaseObject::MakeLazilyInitializedJSTemplate(Environment* env) {
|
|
160
|
-
v8::Local<v8::FunctionTemplate> t =
|
|
161
|
-
env->NewFunctionTemplate(LazilyInitializedJSTemplateConstructor);
|
|
162
|
-
t->Inherit(BaseObject::GetConstructorTemplate(env));
|
|
163
|
-
t->InstanceTemplate()->SetInternalFieldCount(
|
|
164
|
-
BaseObject::kInternalFieldCount);
|
|
165
|
-
return t;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
128
|
template <int Field>
|
|
169
129
|
void BaseObject::InternalFieldGet(
|
|
170
|
-
v8::
|
|
171
|
-
|
|
172
|
-
|
|
130
|
+
const v8::FunctionCallbackInfo<v8::Value>& args) {
|
|
131
|
+
args.GetReturnValue().Set(
|
|
132
|
+
args.This()->GetInternalField(Field).As<v8::Value>());
|
|
173
133
|
}
|
|
174
134
|
|
|
175
|
-
template <int Field, bool (v8::Value::*
|
|
176
|
-
void BaseObject::InternalFieldSet(
|
|
177
|
-
|
|
178
|
-
|
|
135
|
+
template <int Field, bool (v8::Value::*typecheck)() const>
|
|
136
|
+
void BaseObject::InternalFieldSet(
|
|
137
|
+
const v8::FunctionCallbackInfo<v8::Value>& args) {
|
|
138
|
+
v8::Local<v8::Value> value = args[0];
|
|
179
139
|
// This could be e.g. value->IsFunction().
|
|
180
140
|
CHECK(((*value)->*typecheck)());
|
|
181
|
-
|
|
141
|
+
args.This()->SetInternalField(Field, value);
|
|
182
142
|
}
|
|
183
143
|
|
|
184
144
|
bool BaseObject::has_pointer_data() const {
|
|
185
145
|
return pointer_data_ != nullptr;
|
|
186
146
|
}
|
|
187
147
|
|
|
188
|
-
BaseObject::PointerData* BaseObject::pointer_data() {
|
|
189
|
-
if (!has_pointer_data()) {
|
|
190
|
-
PointerData* metadata = new PointerData();
|
|
191
|
-
metadata->wants_weak_jsobj = persistent_handle_.IsWeak();
|
|
192
|
-
metadata->self = this;
|
|
193
|
-
pointer_data_ = metadata;
|
|
194
|
-
}
|
|
195
|
-
CHECK(has_pointer_data());
|
|
196
|
-
return pointer_data_;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
void BaseObject::decrease_refcount() {
|
|
200
|
-
CHECK(has_pointer_data());
|
|
201
|
-
PointerData* metadata = pointer_data();
|
|
202
|
-
CHECK_GT(metadata->strong_ptr_count, 0);
|
|
203
|
-
unsigned int new_refcount = --metadata->strong_ptr_count;
|
|
204
|
-
if (new_refcount == 0) {
|
|
205
|
-
if (metadata->is_detached) {
|
|
206
|
-
OnGCCollect();
|
|
207
|
-
} else if (metadata->wants_weak_jsobj && !persistent_handle_.IsEmpty()) {
|
|
208
|
-
MakeWeak();
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
void BaseObject::increase_refcount() {
|
|
214
|
-
unsigned int prev_refcount = pointer_data()->strong_ptr_count++;
|
|
215
|
-
if (prev_refcount == 0 && !persistent_handle_.IsEmpty())
|
|
216
|
-
persistent_handle_.ClearWeak();
|
|
217
|
-
}
|
|
218
|
-
|
|
219
148
|
template <typename T, bool kIsWeak>
|
|
220
149
|
BaseObject::PointerData*
|
|
221
150
|
BaseObjectPtrImpl<T, kIsWeak>::pointer_data() const {
|
|
222
|
-
if (kIsWeak) {
|
|
151
|
+
if constexpr (kIsWeak) {
|
|
223
152
|
return data_.pointer_data;
|
|
224
153
|
}
|
|
225
154
|
if (get_base_object() == nullptr) {
|
|
@@ -230,7 +159,7 @@ BaseObjectPtrImpl<T, kIsWeak>::pointer_data() const {
|
|
|
230
159
|
|
|
231
160
|
template <typename T, bool kIsWeak>
|
|
232
161
|
BaseObject* BaseObjectPtrImpl<T, kIsWeak>::get_base_object() const {
|
|
233
|
-
if (kIsWeak) {
|
|
162
|
+
if constexpr (kIsWeak) {
|
|
234
163
|
if (pointer_data() == nullptr) {
|
|
235
164
|
return nullptr;
|
|
236
165
|
}
|
|
@@ -241,7 +170,7 @@ BaseObject* BaseObjectPtrImpl<T, kIsWeak>::get_base_object() const {
|
|
|
241
170
|
|
|
242
171
|
template <typename T, bool kIsWeak>
|
|
243
172
|
BaseObjectPtrImpl<T, kIsWeak>::~BaseObjectPtrImpl() {
|
|
244
|
-
if (kIsWeak) {
|
|
173
|
+
if constexpr (kIsWeak) {
|
|
245
174
|
if (pointer_data() != nullptr &&
|
|
246
175
|
--pointer_data()->weak_ptr_count == 0 &&
|
|
247
176
|
pointer_data()->self == nullptr) {
|
|
@@ -261,7 +190,7 @@ template <typename T, bool kIsWeak>
|
|
|
261
190
|
BaseObjectPtrImpl<T, kIsWeak>::BaseObjectPtrImpl(T* target)
|
|
262
191
|
: BaseObjectPtrImpl() {
|
|
263
192
|
if (target == nullptr) return;
|
|
264
|
-
if (kIsWeak) {
|
|
193
|
+
if constexpr (kIsWeak) {
|
|
265
194
|
data_.pointer_data = target->pointer_data();
|
|
266
195
|
CHECK_NOT_NULL(pointer_data());
|
|
267
196
|
pointer_data()->weak_ptr_count++;
|
|
@@ -302,7 +231,7 @@ BaseObjectPtrImpl<T, kIsWeak>& BaseObjectPtrImpl<T, kIsWeak>::operator=(
|
|
|
302
231
|
template <typename T, bool kIsWeak>
|
|
303
232
|
BaseObjectPtrImpl<T, kIsWeak>::BaseObjectPtrImpl(BaseObjectPtrImpl&& other)
|
|
304
233
|
: data_(other.data_) {
|
|
305
|
-
if (kIsWeak)
|
|
234
|
+
if constexpr (kIsWeak)
|
|
306
235
|
other.data_.target = nullptr;
|
|
307
236
|
else
|
|
308
237
|
other.data_.pointer_data = nullptr;
|
|
@@ -316,6 +245,17 @@ BaseObjectPtrImpl<T, kIsWeak>& BaseObjectPtrImpl<T, kIsWeak>::operator=(
|
|
|
316
245
|
return *new (this) BaseObjectPtrImpl(std::move(other));
|
|
317
246
|
}
|
|
318
247
|
|
|
248
|
+
template <typename T, bool kIsWeak>
|
|
249
|
+
BaseObjectPtrImpl<T, kIsWeak>::BaseObjectPtrImpl(std::nullptr_t)
|
|
250
|
+
: BaseObjectPtrImpl() {}
|
|
251
|
+
|
|
252
|
+
template <typename T, bool kIsWeak>
|
|
253
|
+
BaseObjectPtrImpl<T, kIsWeak>& BaseObjectPtrImpl<T, kIsWeak>::operator=(
|
|
254
|
+
std::nullptr_t) {
|
|
255
|
+
this->~BaseObjectPtrImpl();
|
|
256
|
+
return *new (this) BaseObjectPtrImpl();
|
|
257
|
+
}
|
|
258
|
+
|
|
319
259
|
template <typename T, bool kIsWeak>
|
|
320
260
|
void BaseObjectPtrImpl<T, kIsWeak>::reset(T* ptr) {
|
|
321
261
|
*this = BaseObjectPtrImpl(ptr);
|
|
@@ -355,10 +295,26 @@ bool BaseObjectPtrImpl<T, kIsWeak>::operator !=(
|
|
|
355
295
|
return get() != other.get();
|
|
356
296
|
}
|
|
357
297
|
|
|
298
|
+
template <typename T, bool kIsWeak>
|
|
299
|
+
bool operator==(const BaseObjectPtrImpl<T, kIsWeak> ptr, const std::nullptr_t) {
|
|
300
|
+
return ptr.get() == nullptr;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
template <typename T, bool kIsWeak>
|
|
304
|
+
bool operator==(const std::nullptr_t, const BaseObjectPtrImpl<T, kIsWeak> ptr) {
|
|
305
|
+
return ptr.get() == nullptr;
|
|
306
|
+
}
|
|
307
|
+
|
|
358
308
|
template <typename T, typename... Args>
|
|
359
309
|
BaseObjectPtr<T> MakeBaseObject(Args&&... args) {
|
|
360
310
|
return BaseObjectPtr<T>(new T(std::forward<Args>(args)...));
|
|
361
311
|
}
|
|
312
|
+
template <typename T, typename... Args>
|
|
313
|
+
BaseObjectWeakPtr<T> MakeWeakBaseObject(Args&&... args) {
|
|
314
|
+
T* target = new T(std::forward<Args>(args)...);
|
|
315
|
+
target->MakeWeak();
|
|
316
|
+
return BaseObjectWeakPtr<T>(target);
|
|
317
|
+
}
|
|
362
318
|
|
|
363
319
|
template <typename T, typename... Args>
|
|
364
320
|
BaseObjectPtr<T> MakeDetachedBaseObject(Args&&... args) {
|
|
@@ -25,12 +25,16 @@
|
|
|
25
25
|
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
26
26
|
|
|
27
27
|
#include <type_traits> // std::remove_reference
|
|
28
|
+
#include "base_object_types.h"
|
|
28
29
|
#include "memory_tracker.h"
|
|
30
|
+
#include "util.h"
|
|
29
31
|
#include "v8.h"
|
|
30
32
|
|
|
31
33
|
namespace node {
|
|
32
34
|
|
|
33
35
|
class Environment;
|
|
36
|
+
class IsolateData;
|
|
37
|
+
class Realm;
|
|
34
38
|
template <typename T, bool kIsWeak>
|
|
35
39
|
class BaseObjectPtrImpl;
|
|
36
40
|
|
|
@@ -40,12 +44,15 @@ class TransferData;
|
|
|
40
44
|
|
|
41
45
|
class BaseObject : public MemoryRetainer {
|
|
42
46
|
public:
|
|
43
|
-
enum InternalFields { kSlot, kInternalFieldCount };
|
|
47
|
+
enum InternalFields { kEmbedderType, kSlot, kInternalFieldCount };
|
|
44
48
|
|
|
45
|
-
// Associates this object with `object`. It uses the
|
|
49
|
+
// Associates this object with `object`. It uses the 1st internal field for
|
|
46
50
|
// that, and in particular aborts if there is no such field.
|
|
51
|
+
// This is the designated constructor.
|
|
52
|
+
BaseObject(Realm* realm, v8::Local<v8::Object> object);
|
|
53
|
+
// Convenient constructor for constructing BaseObject in the principal realm.
|
|
47
54
|
inline BaseObject(Environment* env, v8::Local<v8::Object> object);
|
|
48
|
-
|
|
55
|
+
~BaseObject() override;
|
|
49
56
|
|
|
50
57
|
BaseObject() = delete;
|
|
51
58
|
|
|
@@ -60,21 +67,34 @@ class BaseObject : public MemoryRetainer {
|
|
|
60
67
|
inline v8::Global<v8::Object>& persistent();
|
|
61
68
|
|
|
62
69
|
inline Environment* env() const;
|
|
70
|
+
inline Realm* realm() const;
|
|
63
71
|
|
|
64
72
|
// Get a BaseObject* pointer, or subclass pointer, for the JS object that
|
|
65
73
|
// was also passed to the `BaseObject()` constructor initially.
|
|
66
74
|
// This may return `nullptr` if the C++ object has not been constructed yet,
|
|
67
75
|
// e.g. when the JS object used `MakeLazilyInitializedJSTemplate`.
|
|
68
|
-
static inline void
|
|
76
|
+
static inline void SetInternalFields(IsolateData* isolate_data,
|
|
77
|
+
v8::Local<v8::Object> object,
|
|
78
|
+
void* slot);
|
|
79
|
+
static inline bool IsBaseObject(IsolateData* isolate_data,
|
|
80
|
+
v8::Local<v8::Object> object);
|
|
81
|
+
static inline void TagBaseObject(IsolateData* isolate_data,
|
|
82
|
+
v8::Local<v8::Object> object);
|
|
83
|
+
static void LazilyInitializedJSTemplateConstructor(
|
|
69
84
|
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
70
85
|
static inline BaseObject* FromJSObject(v8::Local<v8::Value> object);
|
|
71
86
|
template <typename T>
|
|
72
87
|
static inline T* FromJSObject(v8::Local<v8::Value> object);
|
|
88
|
+
// Global alias for FromJSObject() to avoid churn.
|
|
89
|
+
template <typename T>
|
|
90
|
+
static inline T* Unwrap(v8::Local<v8::Value> obj) {
|
|
91
|
+
return BaseObject::FromJSObject<T>(obj);
|
|
92
|
+
}
|
|
73
93
|
|
|
74
94
|
// Make the `v8::Global` a weak reference and, `delete` this object once
|
|
75
95
|
// the JS object has been garbage collected and there are no (strong)
|
|
76
96
|
// BaseObjectPtr references to it.
|
|
77
|
-
|
|
97
|
+
void MakeWeak();
|
|
78
98
|
|
|
79
99
|
// Undo `MakeWeak()`, i.e. turn this into a strong reference that is a GC
|
|
80
100
|
// root and will not be touched by the garbage collector.
|
|
@@ -88,17 +108,16 @@ class BaseObject : public MemoryRetainer {
|
|
|
88
108
|
// Utility to create a FunctionTemplate with one internal field (used for
|
|
89
109
|
// the `BaseObject*` pointer) and a constructor that initializes that field
|
|
90
110
|
// to `nullptr`.
|
|
91
|
-
static
|
|
111
|
+
static v8::Local<v8::FunctionTemplate> MakeLazilyInitializedJSTemplate(
|
|
112
|
+
IsolateData* isolate);
|
|
113
|
+
static v8::Local<v8::FunctionTemplate> MakeLazilyInitializedJSTemplate(
|
|
92
114
|
Environment* env);
|
|
93
115
|
|
|
94
116
|
// Setter/Getter pair for internal fields that can be passed to SetAccessor.
|
|
95
117
|
template <int Field>
|
|
96
|
-
static void InternalFieldGet(v8::
|
|
97
|
-
const v8::PropertyCallbackInfo<v8::Value>& info);
|
|
118
|
+
static void InternalFieldGet(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
98
119
|
template <int Field, bool (v8::Value::*typecheck)() const>
|
|
99
|
-
static void InternalFieldSet(v8::
|
|
100
|
-
v8::Local<v8::Value> value,
|
|
101
|
-
const v8::PropertyCallbackInfo<void>& info);
|
|
120
|
+
static void InternalFieldSet(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
102
121
|
|
|
103
122
|
// This is a bit of a hack. See the override in async_wrap.cc for details.
|
|
104
123
|
virtual bool IsDoneInitializing() const;
|
|
@@ -109,18 +128,15 @@ class BaseObject : public MemoryRetainer {
|
|
|
109
128
|
// a BaseObjectPtr to this object.
|
|
110
129
|
inline void Detach();
|
|
111
130
|
|
|
112
|
-
static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
|
|
113
|
-
Environment* env);
|
|
114
|
-
|
|
115
131
|
// Interface for transferring BaseObject instances using the .postMessage()
|
|
116
132
|
// method of MessagePorts (and, by extension, Workers).
|
|
117
133
|
// GetTransferMode() returns a transfer mode that indicates how to deal with
|
|
118
134
|
// the current object:
|
|
119
|
-
// -
|
|
120
|
-
// No transfer is possible, either because this type of
|
|
121
|
-
// not know how to be transferred, or because it is not
|
|
122
|
-
// which it is possible to do so (e.g. because it has
|
|
123
|
-
// transferred).
|
|
135
|
+
// - kDisallowCloneAndTransfer:
|
|
136
|
+
// No transfer or clone is possible, either because this type of
|
|
137
|
+
// BaseObject does not know how to be transferred, or because it is not
|
|
138
|
+
// in a state in which it is possible to do so (e.g. because it has
|
|
139
|
+
// already been transferred).
|
|
124
140
|
// - kTransferable:
|
|
125
141
|
// This object can be transferred in a destructive fashion, i.e. will be
|
|
126
142
|
// rendered unusable on the sending side of the channel in the process
|
|
@@ -136,22 +152,27 @@ class BaseObject : public MemoryRetainer {
|
|
|
136
152
|
// This object can be cloned without being modified.
|
|
137
153
|
// CloneForMessaging() will be called to get a representation of the
|
|
138
154
|
// object that is used for subsequent deserialization, unless the
|
|
139
|
-
// object is listed in transferList, in which case
|
|
140
|
-
// is attempted first.
|
|
155
|
+
// object is listed in transferList and is kTransferable, in which case
|
|
156
|
+
// TransferForMessaging() is attempted first.
|
|
157
|
+
// - kTransferableAndCloneable:
|
|
158
|
+
// This object can be transferred or cloned.
|
|
141
159
|
// After a successful clone, FinalizeTransferRead() is called on the receiving
|
|
142
160
|
// end, and can read deserialize JS data possibly serialized by a previous
|
|
143
161
|
// FinalizeTransferWrite() call.
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
162
|
+
// By default, a BaseObject is kDisallowCloneAndTransfer and a JS Object is
|
|
163
|
+
// kCloneable unless otherwise specified.
|
|
164
|
+
enum TransferMode : uint32_t {
|
|
165
|
+
kDisallowCloneAndTransfer = 0,
|
|
166
|
+
kTransferable = 1 << 0,
|
|
167
|
+
kCloneable = 1 << 1,
|
|
168
|
+
kTransferableAndCloneable = kTransferable | kCloneable,
|
|
148
169
|
};
|
|
149
170
|
virtual TransferMode GetTransferMode() const;
|
|
150
171
|
virtual std::unique_ptr<worker::TransferData> TransferForMessaging();
|
|
151
172
|
virtual std::unique_ptr<worker::TransferData> CloneForMessaging() const;
|
|
152
173
|
virtual v8::Maybe<std::vector<BaseObjectPtrImpl<BaseObject, false>>>
|
|
153
174
|
NestedTransferables() const;
|
|
154
|
-
virtual v8::Maybe<
|
|
175
|
+
virtual v8::Maybe<void> FinalizeTransferRead(
|
|
155
176
|
v8::Local<v8::Context> context, v8::ValueDeserializer* deserializer);
|
|
156
177
|
|
|
157
178
|
// Indicates whether this object is expected to use a strong reference during
|
|
@@ -164,16 +185,15 @@ class BaseObject : public MemoryRetainer {
|
|
|
164
185
|
|
|
165
186
|
private:
|
|
166
187
|
v8::Local<v8::Object> WrappedObject() const override;
|
|
167
|
-
|
|
168
|
-
static void DeleteMe(void* data);
|
|
188
|
+
void DeleteMe();
|
|
169
189
|
|
|
170
190
|
// persistent_handle_ needs to be at a fixed offset from the start of the
|
|
171
191
|
// class because it is used by src/node_postmortem_metadata.cc to calculate
|
|
172
192
|
// offsets and generate debug symbols for BaseObject, which assumes that the
|
|
173
193
|
// position of members in memory are predictable. For more information please
|
|
174
|
-
// refer to `doc/
|
|
194
|
+
// refer to `doc/contributing/node-postmortem-support.md`
|
|
175
195
|
friend int GenDebugSymbols();
|
|
176
|
-
friend class
|
|
196
|
+
friend class CleanupQueue;
|
|
177
197
|
template <typename T, bool kIsWeak>
|
|
178
198
|
friend class BaseObjectPtrImpl;
|
|
179
199
|
|
|
@@ -202,21 +222,29 @@ class BaseObject : public MemoryRetainer {
|
|
|
202
222
|
inline bool has_pointer_data() const;
|
|
203
223
|
// This creates a PointerData struct if none was associated with this
|
|
204
224
|
// BaseObject before.
|
|
205
|
-
|
|
225
|
+
PointerData* pointer_data();
|
|
206
226
|
|
|
207
227
|
// Functions that adjust the strong pointer count.
|
|
208
|
-
|
|
209
|
-
|
|
228
|
+
void decrease_refcount();
|
|
229
|
+
void increase_refcount();
|
|
210
230
|
|
|
211
|
-
|
|
231
|
+
Realm* realm_;
|
|
212
232
|
PointerData* pointer_data_ = nullptr;
|
|
233
|
+
ListNode<BaseObject> base_object_list_node_;
|
|
234
|
+
|
|
235
|
+
friend class BaseObjectList;
|
|
213
236
|
};
|
|
214
237
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
238
|
+
class BaseObjectList
|
|
239
|
+
: public ListHead<BaseObject, &BaseObject::base_object_list_node_>,
|
|
240
|
+
public MemoryRetainer {
|
|
241
|
+
public:
|
|
242
|
+
void Cleanup();
|
|
243
|
+
|
|
244
|
+
SET_MEMORY_INFO_NAME(BaseObjectList)
|
|
245
|
+
SET_SELF_SIZE(BaseObjectList)
|
|
246
|
+
void MemoryInfo(node::MemoryTracker* tracker) const override;
|
|
247
|
+
};
|
|
220
248
|
|
|
221
249
|
#define ASSIGN_OR_RETURN_UNWRAP(ptr, obj, ...) \
|
|
222
250
|
do { \
|
|
@@ -230,7 +258,9 @@ inline T* Unwrap(v8::Local<v8::Value> obj) {
|
|
|
230
258
|
// circumstances such as the GC or Environment cleanup.
|
|
231
259
|
// If weak, destruction behaviour is not affected, but the pointer will be
|
|
232
260
|
// reset to nullptr once the BaseObject is destroyed.
|
|
233
|
-
// The API matches std::shared_ptr closely.
|
|
261
|
+
// The API matches std::shared_ptr closely. However, this class is not thread
|
|
262
|
+
// safe, that is, we can't have different BaseObjectPtrImpl instances in
|
|
263
|
+
// different threads referring to the same BaseObject instance.
|
|
234
264
|
template <typename T, bool kIsWeak>
|
|
235
265
|
class BaseObjectPtrImpl final {
|
|
236
266
|
public:
|
|
@@ -250,6 +280,9 @@ class BaseObjectPtrImpl final {
|
|
|
250
280
|
inline BaseObjectPtrImpl(BaseObjectPtrImpl&& other);
|
|
251
281
|
inline BaseObjectPtrImpl& operator=(BaseObjectPtrImpl&& other);
|
|
252
282
|
|
|
283
|
+
inline BaseObjectPtrImpl(std::nullptr_t);
|
|
284
|
+
inline BaseObjectPtrImpl& operator=(std::nullptr_t);
|
|
285
|
+
|
|
253
286
|
inline void reset(T* ptr = nullptr);
|
|
254
287
|
inline T* get() const;
|
|
255
288
|
inline T& operator*() const;
|
|
@@ -271,6 +304,13 @@ class BaseObjectPtrImpl final {
|
|
|
271
304
|
inline BaseObject::PointerData* pointer_data() const;
|
|
272
305
|
};
|
|
273
306
|
|
|
307
|
+
template <typename T, bool kIsWeak>
|
|
308
|
+
inline static bool operator==(const BaseObjectPtrImpl<T, kIsWeak>,
|
|
309
|
+
const std::nullptr_t);
|
|
310
|
+
template <typename T, bool kIsWeak>
|
|
311
|
+
inline static bool operator==(const std::nullptr_t,
|
|
312
|
+
const BaseObjectPtrImpl<T, kIsWeak>);
|
|
313
|
+
|
|
274
314
|
template <typename T>
|
|
275
315
|
using BaseObjectPtr = BaseObjectPtrImpl<T, false>;
|
|
276
316
|
template <typename T>
|
|
@@ -281,6 +321,10 @@ using BaseObjectWeakPtr = BaseObjectPtrImpl<T, true>;
|
|
|
281
321
|
template <typename T, typename... Args>
|
|
282
322
|
inline BaseObjectPtr<T> MakeBaseObject(Args&&... args);
|
|
283
323
|
// Create a BaseObject instance and return a pointer to it.
|
|
324
|
+
// This variant makes the object a weak GC root by default.
|
|
325
|
+
template <typename T, typename... Args>
|
|
326
|
+
inline BaseObjectWeakPtr<T> MakeWeakBaseObject(Args&&... args);
|
|
327
|
+
// Create a BaseObject instance and return a pointer to it.
|
|
284
328
|
// This variant detaches the object by default, meaning that the caller fully
|
|
285
329
|
// owns it, and once the last BaseObjectPtr to it is destroyed, the object
|
|
286
330
|
// itself is also destroyed.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#ifndef SRC_BASE_OBJECT_TYPES_H_
|
|
2
|
+
#define SRC_BASE_OBJECT_TYPES_H_
|
|
3
|
+
|
|
4
|
+
#include <cinttypes>
|
|
5
|
+
|
|
6
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
7
|
+
|
|
8
|
+
namespace node {
|
|
9
|
+
// List of internalBinding() data wrappers. The first argument should match
|
|
10
|
+
// what the class passes to SET_BINDING_ID(), the second argument should match
|
|
11
|
+
// the C++ class name.
|
|
12
|
+
#define SERIALIZABLE_BINDING_TYPES(V) \
|
|
13
|
+
V(encoding_binding_data, encoding_binding::BindingData) \
|
|
14
|
+
V(fs_binding_data, fs::BindingData) \
|
|
15
|
+
V(mksnapshot_binding_data, mksnapshot::BindingData) \
|
|
16
|
+
V(v8_binding_data, v8_utils::BindingData) \
|
|
17
|
+
V(blob_binding_data, BlobBindingData) \
|
|
18
|
+
V(process_binding_data, process::BindingData) \
|
|
19
|
+
V(timers_binding_data, timers::BindingData) \
|
|
20
|
+
V(url_binding_data, url::BindingData) \
|
|
21
|
+
V(modules_binding_data, modules::BindingData)
|
|
22
|
+
|
|
23
|
+
#define UNSERIALIZABLE_BINDING_TYPES(V) \
|
|
24
|
+
V(http2_binding_data, http2::BindingData) \
|
|
25
|
+
V(http_parser_binding_data, http_parser::BindingData) \
|
|
26
|
+
V(quic_binding_data, quic::BindingData)
|
|
27
|
+
|
|
28
|
+
// List of (non-binding) BaseObjects that are serializable in the snapshot.
|
|
29
|
+
// The first argument should match what the type passes to
|
|
30
|
+
// SET_OBJECT_ID(), the second argument should match the C++ class
|
|
31
|
+
// name.
|
|
32
|
+
#define SERIALIZABLE_NON_BINDING_TYPES(V)
|
|
33
|
+
|
|
34
|
+
// Helper list of all binding data wrapper types.
|
|
35
|
+
#define BINDING_TYPES(V) \
|
|
36
|
+
SERIALIZABLE_BINDING_TYPES(V) \
|
|
37
|
+
UNSERIALIZABLE_BINDING_TYPES(V)
|
|
38
|
+
|
|
39
|
+
// Helper list of all BaseObjects that implement snapshot support.
|
|
40
|
+
#define SERIALIZABLE_OBJECT_TYPES(V) \
|
|
41
|
+
SERIALIZABLE_BINDING_TYPES(V) \
|
|
42
|
+
SERIALIZABLE_NON_BINDING_TYPES(V)
|
|
43
|
+
|
|
44
|
+
#define V(TypeId, NativeType) k_##TypeId,
|
|
45
|
+
enum class BindingDataType : uint8_t { BINDING_TYPES(V) kBindingDataTypeCount };
|
|
46
|
+
// Make sure that we put the bindings first so that we can also use the enums
|
|
47
|
+
// for the bindings as index to the binding data store.
|
|
48
|
+
enum class EmbedderObjectType : uint8_t {
|
|
49
|
+
BINDING_TYPES(V) SERIALIZABLE_NON_BINDING_TYPES(V)
|
|
50
|
+
// We do not need to know about all the unserializable non-binding types for
|
|
51
|
+
// now so we do not list them.
|
|
52
|
+
kEmbedderObjectTypeCount
|
|
53
|
+
};
|
|
54
|
+
#undef V
|
|
55
|
+
|
|
56
|
+
// For now, BaseObjects only need to call this when they implement snapshot
|
|
57
|
+
// support.
|
|
58
|
+
#define SET_OBJECT_ID(TypeId) \
|
|
59
|
+
static constexpr EmbedderObjectType type_int = EmbedderObjectType::k_##TypeId;
|
|
60
|
+
|
|
61
|
+
// Binding data should call this so that they can be looked up from the binding
|
|
62
|
+
// data store.
|
|
63
|
+
#define SET_BINDING_ID(TypeId) \
|
|
64
|
+
static constexpr BindingDataType binding_type_int = \
|
|
65
|
+
BindingDataType::k_##TypeId; \
|
|
66
|
+
SET_OBJECT_ID(TypeId) \
|
|
67
|
+
static_assert(static_cast<uint8_t>(type_int) == \
|
|
68
|
+
static_cast<uint8_t>(binding_type_int));
|
|
69
|
+
|
|
70
|
+
} // namespace node
|
|
71
|
+
|
|
72
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
73
|
+
|
|
74
|
+
#endif // SRC_BASE_OBJECT_TYPES_H_
|