@encharm/cws 4.1.0 → 4.2.0
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/dist/bindings/cws_linux_108.node +0 -0
- package/dist/bindings/cws_linux_64.node +0 -0
- package/dist/bindings/cws_linux_72.node +0 -0
- package/dist/bindings/cws_linux_79.node +0 -0
- package/dist/bindings/cws_linux_83.node +0 -0
- package/dist/bindings/cws_linux_93.node +0 -0
- package/dist/bindings/cws_win32_64.node +0 -0
- package/dist/bindings/cws_win32_72.node +0 -0
- package/dist/bindings/cws_win32_79.node +0 -0
- package/dist/bindings/cws_win32_83.node +0 -0
- package/dist/bindings/cws_win32_93.node +0 -0
- package/package.json +1 -1
- package/src/Addon.h +24 -2
- package/src/HTTPSocket.cpp +1 -1
- package/src/headers/{13 → 18}/aliased_buffer.h +61 -9
- package/src/headers/18/aliased_struct-inl.h +54 -0
- package/src/headers/18/aliased_struct.h +63 -0
- package/src/headers/{12 → 18}/async_wrap-inl.h +0 -0
- package/src/headers/{12 → 18}/async_wrap.h +26 -2
- package/src/headers/{12/base64.h → 18/base64-inl.h} +78 -86
- package/src/headers/18/base64.h +69 -0
- package/src/headers/{12 → 18}/base_object-inl.h +46 -25
- package/src/headers/{12 → 18}/base_object.h +82 -17
- package/src/headers/{12 → 18}/callback_queue-inl.h +9 -9
- package/src/headers/{12 → 18}/callback_queue.h +13 -5
- package/src/headers/18/cares_wrap.h +523 -0
- package/src/headers/{12 → 18}/connect_wrap.h +0 -0
- package/src/headers/{12 → 18}/connection_wrap.h +0 -0
- package/src/headers/18/crypto/crypto_aes.h +89 -0
- package/src/headers/{13/node_crypto_bio.h → 18/crypto/crypto_bio.h} +3 -4
- package/src/headers/18/crypto/crypto_cipher.h +291 -0
- package/src/headers/{13/node_crypto_clienthello-inl.h → 18/crypto/crypto_clienthello-inl.h} +4 -5
- package/src/headers/{13/node_crypto_clienthello.h → 18/crypto/crypto_clienthello.h} +3 -4
- package/src/headers/{12/node_crypto_common.h → 18/crypto/crypto_common.h} +49 -36
- package/src/headers/18/crypto/crypto_context.h +147 -0
- package/src/headers/18/crypto/crypto_dh.h +156 -0
- package/src/headers/18/crypto/crypto_dsa.h +77 -0
- package/src/headers/18/crypto/crypto_ec.h +170 -0
- package/src/headers/{12/node_crypto_groups.h → 18/crypto/crypto_groups.h} +3 -3
- package/src/headers/18/crypto/crypto_hash.h +89 -0
- package/src/headers/18/crypto/crypto_hkdf.h +65 -0
- package/src/headers/18/crypto/crypto_hmac.h +94 -0
- package/src/headers/18/crypto/crypto_keygen.h +305 -0
- package/src/headers/18/crypto/crypto_keys.h +420 -0
- package/src/headers/18/crypto/crypto_pbkdf2.h +76 -0
- package/src/headers/18/crypto/crypto_random.h +130 -0
- package/src/headers/18/crypto/crypto_rsa.h +141 -0
- package/src/headers/18/crypto/crypto_scrypt.h +87 -0
- package/src/headers/18/crypto/crypto_sig.h +168 -0
- package/src/headers/18/crypto/crypto_spkac.h +21 -0
- package/src/headers/18/crypto/crypto_timing.h +20 -0
- package/src/headers/{13/tls_wrap.h → 18/crypto/crypto_tls.h} +137 -66
- package/src/headers/18/crypto/crypto_util.h +791 -0
- package/src/headers/18/crypto/crypto_x509.h +143 -0
- package/src/headers/{12 → 18}/debug_utils-inl.h +0 -0
- package/src/headers/{13 → 18}/debug_utils.h +7 -4
- package/src/headers/{12 → 18}/diagnosticfilename-inl.h +0 -0
- package/src/headers/{12 → 18}/env-inl.h +397 -304
- package/src/headers/{12 → 18}/env.h +397 -172
- package/src/headers/{12 → 18}/handle_wrap.h +7 -3
- package/src/headers/18/histogram-inl.h +107 -0
- package/src/headers/18/histogram.h +239 -0
- package/src/headers/{13 → 18}/inspector_agent.h +4 -7
- package/src/headers/{12 → 18}/inspector_io.h +0 -0
- package/src/headers/{13 → 18}/inspector_profiler.h +17 -5
- package/src/headers/{12 → 18}/inspector_socket.h +0 -0
- package/src/headers/{12 → 18}/inspector_socket_server.h +0 -0
- package/src/headers/18/js_native_api.h +571 -0
- package/src/headers/{13 → 18}/js_native_api_types.h +30 -7
- package/src/headers/{12 → 18}/js_native_api_v8.h +220 -83
- package/src/headers/{12 → 18}/js_native_api_v8_internals.h +6 -5
- package/src/headers/{12 → 18}/js_stream.h +0 -0
- package/src/headers/{12 → 18}/json_utils.h +0 -0
- package/src/headers/{13 → 18}/memory_tracker-inl.h +6 -5
- package/src/headers/{13 → 18}/memory_tracker.h +0 -7
- package/src/headers/{13 → 18}/module_wrap.h +24 -7
- package/src/headers/{13 → 18}/node.h +329 -68
- package/src/headers/18/node_api.h +288 -0
- package/src/headers/18/node_api_internals.h +38 -0
- package/src/headers/{12 → 18}/node_api_types.h +12 -9
- package/src/headers/{12 → 18}/node_binding.h +0 -0
- package/src/headers/18/node_blob.h +191 -0
- package/src/headers/18/node_bob-inl.h +37 -0
- package/src/headers/18/node_bob.h +111 -0
- package/src/headers/{13 → 18}/node_buffer.h +0 -0
- package/src/headers/{13 → 18}/node_constants.h +5 -1
- package/src/headers/{12 → 18}/node_context_data.h +5 -0
- package/src/headers/{12 → 18}/node_contextify.h +37 -2
- package/src/headers/{10/node_win32_perfctr_provider.h → 18/node_crypto.h} +30 -31
- package/src/headers/{12 → 18}/node_dir.h +0 -0
- package/src/headers/{12 → 18}/node_dtrace.h +0 -0
- package/src/headers/{12 → 18}/node_errors.h +90 -24
- package/src/headers/18/node_external_reference.h +145 -0
- package/src/headers/{13 → 18}/node_file-inl.h +38 -21
- package/src/headers/{12 → 18}/node_file.h +74 -13
- package/src/headers/{13 → 18}/node_http2.h +365 -269
- package/src/headers/{12 → 18}/node_http2_state.h +40 -50
- package/src/headers/{13 → 18}/node_http_common-inl.h +25 -5
- package/src/headers/{13 → 18}/node_http_common.h +24 -20
- package/src/headers/{13 → 18}/node_i18n.h +2 -1
- package/src/headers/{12 → 18}/node_internals.h +39 -41
- package/src/headers/{13 → 18}/node_main_instance.h +15 -18
- package/src/headers/{12 → 18}/node_mem-inl.h +0 -0
- package/src/headers/{12 → 18}/node_mem.h +1 -1
- package/src/headers/{13 → 18}/node_messaging.h +170 -23
- package/src/headers/{12 → 18}/node_metadata.h +17 -4
- package/src/headers/{12 → 18}/node_mutex.h +77 -1
- package/src/headers/{12 → 18}/node_native_module.h +11 -1
- package/src/headers/{13 → 18}/node_native_module_env.h +14 -8
- package/src/headers/{12 → 18}/node_object_wrap.h +0 -0
- package/src/headers/{13 → 18}/node_options-inl.h +51 -21
- package/src/headers/{13 → 18}/node_options.h +46 -14
- package/src/headers/18/node_perf.h +168 -0
- package/src/headers/{12 → 18}/node_perf_common.h +16 -22
- package/src/headers/{12 → 18}/node_platform.h +21 -16
- package/src/headers/18/node_process-inl.h +26 -0
- package/src/headers/18/node_process.h +97 -0
- package/src/headers/{13 → 18}/node_report.h +2 -2
- package/src/headers/{13 → 18}/node_revert.h +10 -0
- package/src/headers/{12 → 18}/node_root_certs.h +439 -651
- package/src/headers/18/node_snapshot_builder.h +43 -0
- package/src/headers/18/node_snapshotable.h +130 -0
- package/src/headers/{12 → 18}/node_sockaddr-inl.h +100 -4
- package/src/headers/18/node_sockaddr.h +405 -0
- package/src/headers/{12 → 18}/node_stat_watcher.h +7 -1
- package/src/headers/{12 → 18}/node_union_bytes.h +0 -0
- package/src/headers/{13 → 18}/node_url.h +18 -1
- package/src/headers/18/node_v8.h +41 -0
- package/src/headers/{12 → 18}/node_v8_platform-inl.h +10 -0
- package/src/headers/{13 → 18}/node_version.h +7 -7
- package/src/headers/{12 → 18}/node_wasi.h +0 -0
- package/src/headers/18/node_wasm_web_api.h +55 -0
- package/src/headers/{13 → 18}/node_watchdog.h +0 -0
- package/src/headers/{10 → 18}/node_win32_etw_provider-inl.h +7 -6
- package/src/headers/{10 → 18}/node_win32_etw_provider.h +0 -0
- package/src/headers/{13 → 18}/node_worker.h +24 -17
- package/src/headers/{12 → 18}/pipe_wrap.h +2 -0
- package/src/headers/{12 → 18}/req_wrap-inl.h +0 -0
- package/src/headers/{12 → 18}/req_wrap.h +1 -1
- package/src/headers/{12 → 18}/spawn_sync.h +0 -0
- package/src/headers/{13 → 18}/stream_base-inl.h +58 -22
- package/src/headers/{13 → 18}/stream_base.h +29 -3
- package/src/headers/{13 → 18}/stream_pipe.h +8 -3
- package/src/headers/{12 → 18}/stream_wrap.h +4 -1
- package/src/headers/{13 → 18}/string_bytes.h +0 -7
- package/src/headers/{12 → 18}/string_decoder-inl.h +0 -0
- package/src/headers/{10 → 18}/string_decoder.h +0 -0
- package/src/headers/{13 → 18}/string_search.h +2 -2
- package/src/headers/{12 → 18}/tcp_wrap.h +4 -0
- package/src/headers/{12 → 18}/threadpoolwork-inl.h +0 -0
- package/src/headers/18/timer_wrap-inl.h +32 -0
- package/src/headers/18/timer_wrap.h +85 -0
- package/src/headers/{13 → 18}/tracing/agent.h +1 -1
- package/src/headers/{12 → 18}/tracing/node_trace_buffer.h +0 -0
- package/src/headers/{12 → 18}/tracing/node_trace_writer.h +0 -0
- package/src/headers/{13 → 18}/tracing/trace_event.h +23 -13
- package/src/headers/{12 → 18}/tracing/trace_event_common.h +0 -0
- package/src/headers/{12 → 18}/tracing/traced_value.h +0 -0
- package/src/headers/{13 → 18}/tty_wrap.h +2 -1
- package/src/headers/{13 → 18}/udp_wrap.h +5 -0
- package/src/headers/{13 → 18}/util-inl.h +69 -15
- package/src/headers/{13 → 18}/util.h +93 -31
- package/src/headers/18/v8-fast-api-calls.h +939 -0
- package/src/headers/{12 → 18}/v8abbr.h +2 -2
- package/src/headers/10/aliased_buffer.h +0 -241
- package/src/headers/10/async_wrap-inl.h +0 -106
- package/src/headers/10/async_wrap.h +0 -218
- package/src/headers/10/base64.h +0 -197
- package/src/headers/10/base_object-inl.h +0 -132
- package/src/headers/10/base_object.h +0 -115
- package/src/headers/10/connect_wrap.h +0 -28
- package/src/headers/10/connection_wrap.h +0 -30
- package/src/headers/10/debug_utils.h +0 -128
- package/src/headers/10/env-inl.h +0 -906
- package/src/headers/10/env.h +0 -1046
- package/src/headers/10/handle_wrap.h +0 -114
- package/src/headers/10/inspector_agent.h +0 -137
- package/src/headers/10/inspector_io.h +0 -97
- package/src/headers/10/inspector_socket.h +0 -59
- package/src/headers/10/inspector_socket_server.h +0 -104
- package/src/headers/10/js_stream.h +0 -57
- package/src/headers/10/memory_tracker-inl.h +0 -318
- package/src/headers/10/memory_tracker.h +0 -246
- package/src/headers/10/module_wrap.h +0 -100
- package/src/headers/10/node.h +0 -863
- package/src/headers/10/node_api.h +0 -752
- package/src/headers/10/node_api_types.h +0 -171
- package/src/headers/10/node_buffer.h +0 -90
- package/src/headers/10/node_code_cache.h +0 -17
- package/src/headers/10/node_constants.h +0 -74
- package/src/headers/10/node_context_data.h +0 -39
- package/src/headers/10/node_contextify.h +0 -141
- package/src/headers/10/node_counters.h +0 -59
- package/src/headers/10/node_crypto.h +0 -699
- package/src/headers/10/node_crypto_bio.h +0 -177
- package/src/headers/10/node_crypto_clienthello-inl.h +0 -92
- package/src/headers/10/node_crypto_clienthello.h +0 -131
- package/src/headers/10/node_crypto_groups.h +0 -416
- package/src/headers/10/node_dtrace.h +0 -84
- package/src/headers/10/node_errors.h +0 -118
- package/src/headers/10/node_file.h +0 -373
- package/src/headers/10/node_http2.h +0 -1304
- package/src/headers/10/node_http2_state.h +0 -158
- package/src/headers/10/node_i18n.h +0 -69
- package/src/headers/10/node_internals.h +0 -952
- package/src/headers/10/node_javascript.h +0 -41
- package/src/headers/10/node_messaging.h +0 -219
- package/src/headers/10/node_mutex.h +0 -191
- package/src/headers/10/node_object_wrap.h +0 -130
- package/src/headers/10/node_options-inl.h +0 -444
- package/src/headers/10/node_options.h +0 -397
- package/src/headers/10/node_perf.h +0 -134
- package/src/headers/10/node_perf_common.h +0 -96
- package/src/headers/10/node_persistent.h +0 -30
- package/src/headers/10/node_platform.h +0 -170
- package/src/headers/10/node_revert.h +0 -75
- package/src/headers/10/node_root_certs.h +0 -3393
- package/src/headers/10/node_stat_watcher.h +0 -65
- package/src/headers/10/node_url.h +0 -193
- package/src/headers/10/node_version.h +0 -120
- package/src/headers/10/node_watchdog.h +0 -114
- package/src/headers/10/node_worker.h +0 -94
- package/src/headers/10/pipe_wrap.h +0 -76
- package/src/headers/10/req_wrap-inl.h +0 -166
- package/src/headers/10/req_wrap.h +0 -61
- package/src/headers/10/sharedarraybuffer_metadata.h +0 -67
- package/src/headers/10/spawn_sync.h +0 -240
- package/src/headers/10/stream_base-inl.h +0 -458
- package/src/headers/10/stream_base.h +0 -378
- package/src/headers/10/stream_pipe.h +0 -72
- package/src/headers/10/stream_wrap.h +0 -130
- package/src/headers/10/string_bytes.h +0 -126
- package/src/headers/10/string_decoder-inl.h +0 -38
- package/src/headers/10/string_search.h +0 -620
- package/src/headers/10/tcp_wrap.h +0 -99
- package/src/headers/10/tls_wrap.h +0 -195
- package/src/headers/10/tracing/agent.h +0 -178
- package/src/headers/10/tracing/node_trace_buffer.h +0 -83
- package/src/headers/10/tracing/node_trace_writer.h +0 -75
- package/src/headers/10/tracing/trace_event.h +0 -706
- package/src/headers/10/tracing/trace_event_common.h +0 -1102
- package/src/headers/10/tracing/traced_value.h +0 -68
- package/src/headers/10/tty_wrap.h +0 -63
- package/src/headers/10/udp_wrap.h +0 -102
- package/src/headers/10/util-inl.h +0 -459
- package/src/headers/10/util.h +0 -508
- package/src/headers/10/v8abbr.h +0 -121
- package/src/headers/12/aliased_buffer.h +0 -263
- package/src/headers/12/debug_utils.h +0 -181
- package/src/headers/12/histogram-inl.h +0 -83
- package/src/headers/12/histogram.h +0 -98
- package/src/headers/12/http_parser_adaptor.h +0 -24
- package/src/headers/12/inspector_agent.h +0 -147
- package/src/headers/12/inspector_profiler.h +0 -137
- package/src/headers/12/js_native_api.h +0 -541
- package/src/headers/12/js_native_api_types.h +0 -139
- package/src/headers/12/memory_tracker-inl.h +0 -339
- package/src/headers/12/memory_tracker.h +0 -283
- package/src/headers/12/module_wrap.h +0 -99
- package/src/headers/12/node.h +0 -887
- package/src/headers/12/node_api.h +0 -239
- package/src/headers/12/node_buffer.h +0 -92
- package/src/headers/12/node_constants.h +0 -80
- package/src/headers/12/node_crypto.h +0 -800
- package/src/headers/12/node_crypto_bio.h +0 -195
- package/src/headers/12/node_crypto_clienthello-inl.h +0 -91
- package/src/headers/12/node_crypto_clienthello.h +0 -132
- package/src/headers/12/node_file-inl.h +0 -289
- package/src/headers/12/node_http2.h +0 -1311
- package/src/headers/12/node_http_parser_impl.h +0 -994
- package/src/headers/12/node_i18n.h +0 -144
- package/src/headers/12/node_main_instance.h +0 -97
- package/src/headers/12/node_messaging.h +0 -227
- package/src/headers/12/node_native_module_env.h +0 -65
- package/src/headers/12/node_options-inl.h +0 -447
- package/src/headers/12/node_options.h +0 -479
- package/src/headers/12/node_perf.h +0 -181
- package/src/headers/12/node_process.h +0 -41
- package/src/headers/12/node_report.h +0 -47
- package/src/headers/12/node_revert.h +0 -78
- package/src/headers/12/node_sockaddr.h +0 -123
- package/src/headers/12/node_url.h +0 -188
- package/src/headers/12/node_version.h +0 -98
- package/src/headers/12/node_watchdog.h +0 -152
- package/src/headers/12/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/12/node_win32_etw_provider.h +0 -99
- package/src/headers/12/node_worker.h +0 -142
- package/src/headers/12/sharedarraybuffer_metadata.h +0 -72
- package/src/headers/12/stream_base-inl.h +0 -323
- package/src/headers/12/stream_base.h +0 -431
- package/src/headers/12/stream_pipe.h +0 -72
- package/src/headers/12/string_bytes.h +0 -142
- package/src/headers/12/string_decoder.h +0 -50
- package/src/headers/12/string_search.h +0 -638
- package/src/headers/12/tls_wrap.h +0 -221
- package/src/headers/12/tracing/agent.h +0 -195
- package/src/headers/12/tracing/trace_event.h +0 -710
- package/src/headers/12/tty_wrap.h +0 -64
- package/src/headers/12/udp_wrap.h +0 -222
- package/src/headers/12/util-inl.h +0 -529
- package/src/headers/12/util.h +0 -765
- package/src/headers/13/async_wrap-inl.h +0 -94
- package/src/headers/13/async_wrap.h +0 -224
- package/src/headers/13/base64.h +0 -197
- package/src/headers/13/base_object-inl.h +0 -353
- package/src/headers/13/base_object.h +0 -229
- package/src/headers/13/connect_wrap.h +0 -26
- package/src/headers/13/connection_wrap.h +0 -30
- package/src/headers/13/debug_utils-inl.h +0 -223
- package/src/headers/13/diagnosticfilename-inl.h +0 -33
- package/src/headers/13/env-inl.h +0 -1293
- package/src/headers/13/env.h +0 -1469
- package/src/headers/13/handle_wrap.h +0 -117
- package/src/headers/13/histogram-inl.h +0 -83
- package/src/headers/13/histogram.h +0 -98
- package/src/headers/13/inspector_io.h +0 -78
- package/src/headers/13/inspector_socket.h +0 -60
- package/src/headers/13/inspector_socket_server.h +0 -110
- package/src/headers/13/js_native_api.h +0 -541
- package/src/headers/13/js_native_api_v8.h +0 -303
- package/src/headers/13/js_native_api_v8_internals.h +0 -38
- package/src/headers/13/js_stream.h +0 -52
- package/src/headers/13/json_utils.h +0 -160
- package/src/headers/13/node_api.h +0 -239
- package/src/headers/13/node_api_types.h +0 -44
- package/src/headers/13/node_binding.h +0 -99
- package/src/headers/13/node_context_data.h +0 -39
- package/src/headers/13/node_contextify.h +0 -161
- package/src/headers/13/node_crypto.h +0 -800
- package/src/headers/13/node_crypto_common.h +0 -138
- package/src/headers/13/node_crypto_groups.h +0 -415
- package/src/headers/13/node_dir.h +0 -52
- package/src/headers/13/node_dtrace.h +0 -86
- package/src/headers/13/node_errors.h +0 -210
- package/src/headers/13/node_file.h +0 -364
- package/src/headers/13/node_http2_state.h +0 -144
- package/src/headers/13/node_internals.h +0 -405
- package/src/headers/13/node_mem-inl.h +0 -112
- package/src/headers/13/node_mem.h +0 -41
- package/src/headers/13/node_metadata.h +0 -109
- package/src/headers/13/node_mutex.h +0 -247
- package/src/headers/13/node_native_module.h +0 -99
- package/src/headers/13/node_object_wrap.h +0 -132
- package/src/headers/13/node_perf.h +0 -181
- package/src/headers/13/node_perf_common.h +0 -97
- package/src/headers/13/node_platform.h +0 -190
- package/src/headers/13/node_process.h +0 -41
- package/src/headers/13/node_root_certs.h +0 -3424
- package/src/headers/13/node_sockaddr-inl.h +0 -170
- package/src/headers/13/node_sockaddr.h +0 -123
- package/src/headers/13/node_stat_watcher.h +0 -66
- package/src/headers/13/node_union_bytes.h +0 -103
- package/src/headers/13/node_v8_platform-inl.h +0 -184
- package/src/headers/13/node_wasi.h +0 -108
- package/src/headers/13/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/13/node_win32_etw_provider.h +0 -99
- package/src/headers/13/pipe_wrap.h +0 -78
- package/src/headers/13/req_wrap-inl.h +0 -170
- package/src/headers/13/req_wrap.h +0 -77
- package/src/headers/13/spawn_sync.h +0 -242
- package/src/headers/13/stream_wrap.h +0 -130
- package/src/headers/13/string_decoder-inl.h +0 -37
- package/src/headers/13/string_decoder.h +0 -50
- package/src/headers/13/tcp_wrap.h +0 -101
- package/src/headers/13/threadpoolwork-inl.h +0 -57
- package/src/headers/13/tracing/node_trace_buffer.h +0 -83
- package/src/headers/13/tracing/node_trace_writer.h +0 -75
- package/src/headers/13/tracing/trace_event_common.h +0 -1109
- package/src/headers/13/tracing/traced_value.h +0 -70
- package/src/headers/13/v8abbr.h +0 -124
|
@@ -23,12 +23,14 @@ template <typename Options>
|
|
|
23
23
|
void OptionsParser<Options>::AddOption(const char* name,
|
|
24
24
|
const char* help_text,
|
|
25
25
|
bool Options::* field,
|
|
26
|
-
OptionEnvvarSettings env_setting
|
|
26
|
+
OptionEnvvarSettings env_setting,
|
|
27
|
+
bool default_is_true) {
|
|
27
28
|
options_.emplace(name,
|
|
28
29
|
OptionInfo{kBoolean,
|
|
29
30
|
std::make_shared<SimpleOptionField<bool>>(field),
|
|
30
31
|
env_setting,
|
|
31
|
-
help_text
|
|
32
|
+
help_text,
|
|
33
|
+
default_is_true});
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
template <typename Options>
|
|
@@ -138,10 +140,9 @@ void OptionsParser<Options>::Implies(const char* from,
|
|
|
138
140
|
const char* to) {
|
|
139
141
|
auto it = options_.find(to);
|
|
140
142
|
CHECK_NE(it, options_.end());
|
|
141
|
-
|
|
142
|
-
implications_.emplace(
|
|
143
|
-
|
|
144
|
-
});
|
|
143
|
+
CHECK(it->second.type == kBoolean || it->second.type == kV8Option);
|
|
144
|
+
implications_.emplace(
|
|
145
|
+
from, Implication{it->second.type, to, it->second.field, true});
|
|
145
146
|
}
|
|
146
147
|
|
|
147
148
|
template <typename Options>
|
|
@@ -150,9 +151,8 @@ void OptionsParser<Options>::ImpliesNot(const char* from,
|
|
|
150
151
|
auto it = options_.find(to);
|
|
151
152
|
CHECK_NE(it, options_.end());
|
|
152
153
|
CHECK_EQ(it->second.type, kBoolean);
|
|
153
|
-
implications_.emplace(
|
|
154
|
-
|
|
155
|
-
});
|
|
154
|
+
implications_.emplace(
|
|
155
|
+
from, Implication{it->second.type, to, it->second.field, false});
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
template <typename Options>
|
|
@@ -188,7 +188,8 @@ auto OptionsParser<Options>::Convert(
|
|
|
188
188
|
return OptionInfo{original.type,
|
|
189
189
|
Convert(original.field, get_child),
|
|
190
190
|
original.env_setting,
|
|
191
|
-
original.help_text
|
|
191
|
+
original.help_text,
|
|
192
|
+
original.default_is_true};
|
|
192
193
|
}
|
|
193
194
|
|
|
194
195
|
template <typename Options>
|
|
@@ -196,9 +197,11 @@ template <typename ChildOptions>
|
|
|
196
197
|
auto OptionsParser<Options>::Convert(
|
|
197
198
|
typename OptionsParser<ChildOptions>::Implication original,
|
|
198
199
|
ChildOptions* (Options::* get_child)()) {
|
|
199
|
-
return Implication
|
|
200
|
-
|
|
201
|
-
|
|
200
|
+
return Implication{
|
|
201
|
+
original.type,
|
|
202
|
+
original.name,
|
|
203
|
+
Convert(original.target_field, get_child),
|
|
204
|
+
original.target_value,
|
|
202
205
|
};
|
|
203
206
|
}
|
|
204
207
|
|
|
@@ -225,6 +228,10 @@ inline std::string RequiresArgumentErr(const std::string& arg) {
|
|
|
225
228
|
return arg + " requires an argument";
|
|
226
229
|
}
|
|
227
230
|
|
|
231
|
+
inline std::string NegationImpliesBooleanError(const std::string& arg) {
|
|
232
|
+
return arg + " is an invalid negation because it is not a boolean option";
|
|
233
|
+
}
|
|
234
|
+
|
|
228
235
|
// We store some of the basic information around a single Parse call inside
|
|
229
236
|
// this struct, to separate storage of command line arguments and their
|
|
230
237
|
// handling. In particular, this makes it easier to introduce 'synthetic'
|
|
@@ -325,6 +332,13 @@ void OptionsParser<Options>::Parse(
|
|
|
325
332
|
name[i] = '-';
|
|
326
333
|
}
|
|
327
334
|
|
|
335
|
+
// Convert --no-foo to --foo and keep in mind that we're negating.
|
|
336
|
+
bool is_negation = false;
|
|
337
|
+
if (name.find("--no-") == 0) {
|
|
338
|
+
name.erase(2, 3); // remove no-
|
|
339
|
+
is_negation = true;
|
|
340
|
+
}
|
|
341
|
+
|
|
328
342
|
{
|
|
329
343
|
auto it = aliases_.end();
|
|
330
344
|
// Expand aliases:
|
|
@@ -366,20 +380,36 @@ void OptionsParser<Options>::Parse(
|
|
|
366
380
|
break;
|
|
367
381
|
}
|
|
368
382
|
|
|
383
|
+
{
|
|
384
|
+
std::string implied_name = name;
|
|
385
|
+
if (is_negation) {
|
|
386
|
+
// Implications for negated options are defined with "--no-".
|
|
387
|
+
implied_name.insert(2, "no-");
|
|
388
|
+
}
|
|
389
|
+
auto implications = implications_.equal_range(implied_name);
|
|
390
|
+
for (auto it = implications.first; it != implications.second; ++it) {
|
|
391
|
+
if (it->second.type == kV8Option) {
|
|
392
|
+
v8_args->push_back(it->second.name);
|
|
393
|
+
} else {
|
|
394
|
+
*it->second.target_field->template Lookup<bool>(options) =
|
|
395
|
+
it->second.target_value;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
|
|
369
400
|
if (it == options_.end()) {
|
|
370
401
|
v8_args->push_back(arg);
|
|
371
402
|
continue;
|
|
372
403
|
}
|
|
373
404
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
405
|
+
const OptionInfo& info = it->second;
|
|
406
|
+
|
|
407
|
+
// Some V8 options can be negated and they are validated by V8 later.
|
|
408
|
+
if (is_negation && info.type != kBoolean && info.type != kV8Option) {
|
|
409
|
+
errors->push_back(NegationImpliesBooleanError(arg));
|
|
410
|
+
break;
|
|
380
411
|
}
|
|
381
412
|
|
|
382
|
-
const OptionInfo& info = it->second;
|
|
383
413
|
std::string value;
|
|
384
414
|
if (info.type != kBoolean && info.type != kNoOp && info.type != kV8Option) {
|
|
385
415
|
if (equals_index != std::string::npos) {
|
|
@@ -408,7 +438,7 @@ void OptionsParser<Options>::Parse(
|
|
|
408
438
|
|
|
409
439
|
switch (info.type) {
|
|
410
440
|
case kBoolean:
|
|
411
|
-
*Lookup<bool>(info.field, options) =
|
|
441
|
+
*Lookup<bool>(info.field, options) = !is_negation;
|
|
412
442
|
break;
|
|
413
443
|
case kInteger:
|
|
414
444
|
*Lookup<int64_t>(info.field, options) = std::atoll(value.c_str());
|
|
@@ -11,6 +11,10 @@
|
|
|
11
11
|
#include "node_mutex.h"
|
|
12
12
|
#include "util.h"
|
|
13
13
|
|
|
14
|
+
#if HAVE_OPENSSL
|
|
15
|
+
#include "openssl/opensslv.h"
|
|
16
|
+
#endif
|
|
17
|
+
|
|
14
18
|
namespace node {
|
|
15
19
|
|
|
16
20
|
class HostPort {
|
|
@@ -100,26 +104,32 @@ class DebugOptions : public Options {
|
|
|
100
104
|
class EnvironmentOptions : public Options {
|
|
101
105
|
public:
|
|
102
106
|
bool abort_on_uncaught_exception = false;
|
|
107
|
+
std::vector<std::string> conditions;
|
|
108
|
+
std::string dns_result_order;
|
|
103
109
|
bool enable_source_maps = false;
|
|
104
|
-
bool
|
|
105
|
-
bool
|
|
110
|
+
bool experimental_fetch = true;
|
|
111
|
+
bool experimental_global_web_crypto = false;
|
|
112
|
+
bool experimental_https_modules = false;
|
|
106
113
|
std::string experimental_specifier_resolution;
|
|
107
|
-
std::string es_module_specifier_resolution;
|
|
108
114
|
bool experimental_wasm_modules = false;
|
|
109
115
|
bool experimental_import_meta_resolve = false;
|
|
110
116
|
std::string module_type;
|
|
111
117
|
std::string experimental_policy;
|
|
112
118
|
std::string experimental_policy_integrity;
|
|
113
|
-
bool has_policy_integrity_string;
|
|
114
|
-
bool experimental_repl_await =
|
|
119
|
+
bool has_policy_integrity_string = false;
|
|
120
|
+
bool experimental_repl_await = true;
|
|
115
121
|
bool experimental_vm_modules = false;
|
|
116
122
|
bool expose_internals = false;
|
|
123
|
+
bool force_node_api_uncaught_exceptions_policy = false;
|
|
117
124
|
bool frozen_intrinsics = false;
|
|
125
|
+
int64_t heap_snapshot_near_heap_limit = 0;
|
|
118
126
|
std::string heap_snapshot_signal;
|
|
119
127
|
uint64_t max_http_header_size = 16 * 1024;
|
|
120
|
-
bool
|
|
121
|
-
bool
|
|
122
|
-
bool
|
|
128
|
+
bool deprecation = true;
|
|
129
|
+
bool force_async_hooks_checks = true;
|
|
130
|
+
bool allow_native_addons = true;
|
|
131
|
+
bool global_search_paths = true;
|
|
132
|
+
bool warnings = true;
|
|
123
133
|
bool force_context_aware = false;
|
|
124
134
|
bool pending_deprecation = false;
|
|
125
135
|
bool preserve_symlinks = false;
|
|
@@ -138,16 +148,27 @@ class EnvironmentOptions : public Options {
|
|
|
138
148
|
bool heap_prof = false;
|
|
139
149
|
#endif // HAVE_INSPECTOR
|
|
140
150
|
std::string redirect_warnings;
|
|
151
|
+
std::string diagnostic_dir;
|
|
152
|
+
bool test_runner = false;
|
|
153
|
+
bool test_only = false;
|
|
141
154
|
bool test_udp_no_try_send = false;
|
|
142
155
|
bool throw_deprecation = false;
|
|
156
|
+
bool trace_atomics_wait = false;
|
|
143
157
|
bool trace_deprecation = false;
|
|
144
158
|
bool trace_exit = false;
|
|
145
159
|
bool trace_sync_io = false;
|
|
146
160
|
bool trace_tls = false;
|
|
147
161
|
bool trace_uncaught = false;
|
|
148
162
|
bool trace_warnings = false;
|
|
163
|
+
bool extra_info_on_fatal_exception = true;
|
|
149
164
|
std::string unhandled_rejections;
|
|
150
165
|
std::string userland_loader;
|
|
166
|
+
bool verify_base_objects =
|
|
167
|
+
#ifdef DEBUG
|
|
168
|
+
true;
|
|
169
|
+
#else
|
|
170
|
+
false;
|
|
171
|
+
#endif // DEBUG
|
|
151
172
|
|
|
152
173
|
bool syntax_check_only = false;
|
|
153
174
|
bool has_eval_string = false;
|
|
@@ -183,7 +204,6 @@ class PerIsolateOptions : public Options {
|
|
|
183
204
|
public:
|
|
184
205
|
std::shared_ptr<EnvironmentOptions> per_env { new EnvironmentOptions() };
|
|
185
206
|
bool track_heap_objects = false;
|
|
186
|
-
bool no_node_snapshot = false;
|
|
187
207
|
bool report_uncaught_exception = false;
|
|
188
208
|
bool report_on_signal = false;
|
|
189
209
|
std::string report_signal = "SIGUSR2";
|
|
@@ -210,6 +230,11 @@ class PerProcessOptions : public Options {
|
|
|
210
230
|
bool zero_fill_all_buffers = false;
|
|
211
231
|
bool debug_arraybuffer_allocations = false;
|
|
212
232
|
std::string disable_proto;
|
|
233
|
+
bool build_snapshot = false;
|
|
234
|
+
// We enable the shared read-only heap which currently requires that the
|
|
235
|
+
// snapshot used in different isolates in the same process to be the same.
|
|
236
|
+
// Therefore --node-snapshot is a per-process option.
|
|
237
|
+
bool node_snapshot = true;
|
|
213
238
|
|
|
214
239
|
std::vector<std::string> security_reverts;
|
|
215
240
|
bool print_bash_completion = false;
|
|
@@ -222,10 +247,12 @@ class PerProcessOptions : public Options {
|
|
|
222
247
|
#endif
|
|
223
248
|
|
|
224
249
|
// Per-process because they affect singleton OpenSSL shared library state,
|
|
225
|
-
// or are used once during process
|
|
250
|
+
// or are used once during process initialization.
|
|
226
251
|
#if HAVE_OPENSSL
|
|
227
252
|
std::string openssl_config;
|
|
228
253
|
std::string tls_cipher_list = DEFAULT_CIPHER_LIST_CORE;
|
|
254
|
+
int64_t secure_heap = 0;
|
|
255
|
+
int64_t secure_heap_min = 2;
|
|
229
256
|
#ifdef NODE_OPENSSL_CERT_STORE
|
|
230
257
|
bool ssl_openssl_cert_store = true;
|
|
231
258
|
#else
|
|
@@ -233,10 +260,11 @@ class PerProcessOptions : public Options {
|
|
|
233
260
|
#endif
|
|
234
261
|
bool use_openssl_ca = false;
|
|
235
262
|
bool use_bundled_ca = false;
|
|
236
|
-
#if NODE_FIPS_MODE
|
|
237
263
|
bool enable_fips_crypto = false;
|
|
238
264
|
bool force_fips_crypto = false;
|
|
239
265
|
#endif
|
|
266
|
+
#if OPENSSL_VERSION_MAJOR >= 3
|
|
267
|
+
bool openssl_legacy_provider = false;
|
|
240
268
|
#endif
|
|
241
269
|
|
|
242
270
|
// Per-process because reports can be triggered outside a known V8 context.
|
|
@@ -290,7 +318,8 @@ class OptionsParser {
|
|
|
290
318
|
void AddOption(const char* name,
|
|
291
319
|
const char* help_text,
|
|
292
320
|
bool Options::* field,
|
|
293
|
-
OptionEnvvarSettings env_setting = kDisallowedInEnvironment
|
|
321
|
+
OptionEnvvarSettings env_setting = kDisallowedInEnvironment,
|
|
322
|
+
bool default_is_true = false);
|
|
294
323
|
void AddOption(const char* name,
|
|
295
324
|
const char* help_text,
|
|
296
325
|
uint64_t Options::* field,
|
|
@@ -413,11 +442,14 @@ class OptionsParser {
|
|
|
413
442
|
std::shared_ptr<BaseOptionField> field;
|
|
414
443
|
OptionEnvvarSettings env_setting;
|
|
415
444
|
std::string help_text;
|
|
445
|
+
bool default_is_true = false;
|
|
416
446
|
};
|
|
417
447
|
|
|
418
448
|
// An implied option is composed of the information on where to store a
|
|
419
449
|
// specific boolean value (if another specific option is encountered).
|
|
420
450
|
struct Implication {
|
|
451
|
+
OptionType type;
|
|
452
|
+
std::string name;
|
|
421
453
|
std::shared_ptr<BaseOptionField> target_field;
|
|
422
454
|
bool target_value;
|
|
423
455
|
};
|
|
@@ -444,7 +476,7 @@ class OptionsParser {
|
|
|
444
476
|
template <typename OtherOptions>
|
|
445
477
|
friend class OptionsParser;
|
|
446
478
|
|
|
447
|
-
friend void
|
|
479
|
+
friend void GetCLIOptions(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
448
480
|
friend std::string GetBashCompletion();
|
|
449
481
|
};
|
|
450
482
|
|
|
@@ -460,7 +492,7 @@ void Parse(
|
|
|
460
492
|
namespace per_process {
|
|
461
493
|
|
|
462
494
|
extern Mutex cli_options_mutex;
|
|
463
|
-
extern std::shared_ptr<PerProcessOptions> cli_options;
|
|
495
|
+
extern NODE_EXTERN_PRIVATE std::shared_ptr<PerProcessOptions> cli_options;
|
|
464
496
|
|
|
465
497
|
} // namespace per_process
|
|
466
498
|
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
#ifndef SRC_NODE_PERF_H_
|
|
2
|
+
#define SRC_NODE_PERF_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "base_object-inl.h"
|
|
7
|
+
#include "histogram.h"
|
|
8
|
+
#include "node.h"
|
|
9
|
+
#include "node_internals.h"
|
|
10
|
+
#include "node_perf_common.h"
|
|
11
|
+
|
|
12
|
+
#include "v8.h"
|
|
13
|
+
#include "uv.h"
|
|
14
|
+
|
|
15
|
+
#include <string>
|
|
16
|
+
|
|
17
|
+
namespace node {
|
|
18
|
+
|
|
19
|
+
class Environment;
|
|
20
|
+
class ExternalReferenceRegistry;
|
|
21
|
+
|
|
22
|
+
namespace performance {
|
|
23
|
+
|
|
24
|
+
extern const uint64_t timeOrigin;
|
|
25
|
+
|
|
26
|
+
inline const char* GetPerformanceMilestoneName(
|
|
27
|
+
PerformanceMilestone milestone) {
|
|
28
|
+
switch (milestone) {
|
|
29
|
+
#define V(name, label) case NODE_PERFORMANCE_MILESTONE_##name: return label;
|
|
30
|
+
NODE_PERFORMANCE_MILESTONES(V)
|
|
31
|
+
#undef V
|
|
32
|
+
default:
|
|
33
|
+
UNREACHABLE();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
inline PerformanceMilestone ToPerformanceMilestoneEnum(const char* str) {
|
|
38
|
+
#define V(name, label) \
|
|
39
|
+
if (strcmp(str, label) == 0) return NODE_PERFORMANCE_MILESTONE_##name;
|
|
40
|
+
NODE_PERFORMANCE_MILESTONES(V)
|
|
41
|
+
#undef V
|
|
42
|
+
return NODE_PERFORMANCE_MILESTONE_INVALID;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
inline const char* GetPerformanceEntryTypeName(
|
|
46
|
+
PerformanceEntryType type) {
|
|
47
|
+
switch (type) {
|
|
48
|
+
#define V(name, label) case NODE_PERFORMANCE_ENTRY_TYPE_##name: return label;
|
|
49
|
+
NODE_PERFORMANCE_ENTRY_TYPES(V)
|
|
50
|
+
#undef V
|
|
51
|
+
default:
|
|
52
|
+
UNREACHABLE();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
inline PerformanceEntryType ToPerformanceEntryTypeEnum(
|
|
57
|
+
const char* type) {
|
|
58
|
+
#define V(name, label) \
|
|
59
|
+
if (strcmp(type, label) == 0) return NODE_PERFORMANCE_ENTRY_TYPE_##name;
|
|
60
|
+
NODE_PERFORMANCE_ENTRY_TYPES(V)
|
|
61
|
+
#undef V
|
|
62
|
+
return NODE_PERFORMANCE_ENTRY_TYPE_INVALID;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
enum PerformanceGCKind {
|
|
66
|
+
NODE_PERFORMANCE_GC_MAJOR = v8::GCType::kGCTypeMarkSweepCompact,
|
|
67
|
+
NODE_PERFORMANCE_GC_MINOR = v8::GCType::kGCTypeScavenge,
|
|
68
|
+
NODE_PERFORMANCE_GC_INCREMENTAL = v8::GCType::kGCTypeIncrementalMarking,
|
|
69
|
+
NODE_PERFORMANCE_GC_WEAKCB = v8::GCType::kGCTypeProcessWeakCallbacks
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
enum PerformanceGCFlags {
|
|
73
|
+
NODE_PERFORMANCE_GC_FLAGS_NO =
|
|
74
|
+
v8::GCCallbackFlags::kNoGCCallbackFlags,
|
|
75
|
+
NODE_PERFORMANCE_GC_FLAGS_CONSTRUCT_RETAINED =
|
|
76
|
+
v8::GCCallbackFlags::kGCCallbackFlagConstructRetainedObjectInfos,
|
|
77
|
+
NODE_PERFORMANCE_GC_FLAGS_FORCED =
|
|
78
|
+
v8::GCCallbackFlags::kGCCallbackFlagForced,
|
|
79
|
+
NODE_PERFORMANCE_GC_FLAGS_SYNCHRONOUS_PHANTOM_PROCESSING =
|
|
80
|
+
v8::GCCallbackFlags::kGCCallbackFlagSynchronousPhantomCallbackProcessing,
|
|
81
|
+
NODE_PERFORMANCE_GC_FLAGS_ALL_AVAILABLE_GARBAGE =
|
|
82
|
+
v8::GCCallbackFlags::kGCCallbackFlagCollectAllAvailableGarbage,
|
|
83
|
+
NODE_PERFORMANCE_GC_FLAGS_ALL_EXTERNAL_MEMORY =
|
|
84
|
+
v8::GCCallbackFlags::kGCCallbackFlagCollectAllExternalMemory,
|
|
85
|
+
NODE_PERFORMANCE_GC_FLAGS_SCHEDULE_IDLE =
|
|
86
|
+
v8::GCCallbackFlags::kGCCallbackScheduleIdleGarbageCollection
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
template <typename Traits>
|
|
90
|
+
struct PerformanceEntry {
|
|
91
|
+
using Details = typename Traits::Details;
|
|
92
|
+
std::string name;
|
|
93
|
+
double start_time;
|
|
94
|
+
double duration;
|
|
95
|
+
Details details;
|
|
96
|
+
|
|
97
|
+
PerformanceEntry(
|
|
98
|
+
const std::string& name_,
|
|
99
|
+
double start_time_,
|
|
100
|
+
double duration_,
|
|
101
|
+
const Details& details_)
|
|
102
|
+
: name(name_),
|
|
103
|
+
start_time(start_time_),
|
|
104
|
+
duration(duration_),
|
|
105
|
+
details(details_) {}
|
|
106
|
+
|
|
107
|
+
static v8::MaybeLocal<v8::Object> GetDetails(
|
|
108
|
+
Environment* env,
|
|
109
|
+
const PerformanceEntry<Traits>& entry) {
|
|
110
|
+
return Traits::GetDetails(env, entry);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
void Notify(Environment* env) {
|
|
114
|
+
v8::HandleScope handle_scope(env->isolate());
|
|
115
|
+
v8::Context::Scope scope(env->context());
|
|
116
|
+
AliasedUint32Array& observers = env->performance_state()->observers;
|
|
117
|
+
if (env->performance_entry_callback().IsEmpty() ||
|
|
118
|
+
!observers[Traits::kType]) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
v8::Local<v8::Object> detail;
|
|
123
|
+
if (!Traits::GetDetails(env, *this).ToLocal(&detail)) {
|
|
124
|
+
// TODO(@jasnell): Handle the error here
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
v8::Local<v8::Value> argv[] = {
|
|
129
|
+
OneByteString(env->isolate(), name.c_str()),
|
|
130
|
+
OneByteString(env->isolate(), GetPerformanceEntryTypeName(Traits::kType)),
|
|
131
|
+
v8::Number::New(env->isolate(), start_time),
|
|
132
|
+
v8::Number::New(env->isolate(), duration),
|
|
133
|
+
detail
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
node::MakeSyncCallback(
|
|
137
|
+
env->isolate(),
|
|
138
|
+
env->context()->Global(),
|
|
139
|
+
env->performance_entry_callback(),
|
|
140
|
+
arraysize(argv),
|
|
141
|
+
argv);
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
struct GCPerformanceEntryTraits {
|
|
146
|
+
static constexpr PerformanceEntryType kType =
|
|
147
|
+
NODE_PERFORMANCE_ENTRY_TYPE_GC;
|
|
148
|
+
struct Details {
|
|
149
|
+
PerformanceGCKind kind;
|
|
150
|
+
PerformanceGCFlags flags;
|
|
151
|
+
|
|
152
|
+
Details(PerformanceGCKind kind_, PerformanceGCFlags flags_)
|
|
153
|
+
: kind(kind_), flags(flags_) {}
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
static v8::MaybeLocal<v8::Object> GetDetails(
|
|
157
|
+
Environment* env,
|
|
158
|
+
const PerformanceEntry<GCPerformanceEntryTraits>& entry);
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
using GCPerformanceEntry = PerformanceEntry<GCPerformanceEntryTraits>;
|
|
162
|
+
|
|
163
|
+
} // namespace performance
|
|
164
|
+
} // namespace node
|
|
165
|
+
|
|
166
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
167
|
+
|
|
168
|
+
#endif // SRC_NODE_PERF_H_
|
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
|
|
4
4
|
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
5
|
|
|
6
|
+
#include "aliased_buffer.h"
|
|
6
7
|
#include "node.h"
|
|
7
8
|
#include "uv.h"
|
|
8
9
|
#include "v8.h"
|
|
9
10
|
|
|
10
11
|
#include <algorithm>
|
|
12
|
+
#include <iostream>
|
|
11
13
|
#include <map>
|
|
12
14
|
#include <string>
|
|
13
15
|
|
|
@@ -30,13 +32,11 @@ extern uint64_t performance_v8_start;
|
|
|
30
32
|
|
|
31
33
|
|
|
32
34
|
#define NODE_PERFORMANCE_ENTRY_TYPES(V) \
|
|
33
|
-
V(NODE, "node") \
|
|
34
|
-
V(MARK, "mark") \
|
|
35
|
-
V(MEASURE, "measure") \
|
|
36
35
|
V(GC, "gc") \
|
|
37
|
-
V(
|
|
36
|
+
V(HTTP, "http") \
|
|
38
37
|
V(HTTP2, "http2") \
|
|
39
|
-
V(
|
|
38
|
+
V(NET, "net") \
|
|
39
|
+
V(DNS, "dns")
|
|
40
40
|
|
|
41
41
|
enum PerformanceMilestone {
|
|
42
42
|
#define V(name, _) NODE_PERFORMANCE_MILESTONE_##name,
|
|
@@ -54,23 +54,17 @@ enum PerformanceEntryType {
|
|
|
54
54
|
|
|
55
55
|
class PerformanceState {
|
|
56
56
|
public:
|
|
57
|
-
|
|
58
|
-
root
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
offsetof(performance_state_internal, observers),
|
|
69
|
-
NODE_PERFORMANCE_ENTRY_TYPE_INVALID,
|
|
70
|
-
root) {
|
|
71
|
-
for (size_t i = 0; i < milestones.Length(); i++)
|
|
72
|
-
milestones[i] = -1.;
|
|
73
|
-
}
|
|
57
|
+
struct SerializeInfo {
|
|
58
|
+
AliasedBufferIndex root;
|
|
59
|
+
AliasedBufferIndex milestones;
|
|
60
|
+
AliasedBufferIndex observers;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
explicit PerformanceState(v8::Isolate* isolate, const SerializeInfo* info);
|
|
64
|
+
SerializeInfo Serialize(v8::Local<v8::Context> context,
|
|
65
|
+
v8::SnapshotCreator* creator);
|
|
66
|
+
void Deserialize(v8::Local<v8::Context> context);
|
|
67
|
+
friend std::ostream& operator<<(std::ostream& o, const SerializeInfo& i);
|
|
74
68
|
|
|
75
69
|
AliasedUint8Array root;
|
|
76
70
|
AliasedFloat64Array milestones;
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
#include "libplatform/libplatform.h"
|
|
12
12
|
#include "node.h"
|
|
13
13
|
#include "node_mutex.h"
|
|
14
|
-
#include "tracing/agent.h"
|
|
15
14
|
#include "uv.h"
|
|
16
15
|
|
|
17
16
|
namespace node {
|
|
@@ -52,12 +51,14 @@ struct DelayedTask {
|
|
|
52
51
|
|
|
53
52
|
// This acts as the foreground task runner for a given Isolate.
|
|
54
53
|
class PerIsolatePlatformData :
|
|
54
|
+
public IsolatePlatformDelegate,
|
|
55
55
|
public v8::TaskRunner,
|
|
56
56
|
public std::enable_shared_from_this<PerIsolatePlatformData> {
|
|
57
57
|
public:
|
|
58
58
|
PerIsolatePlatformData(v8::Isolate* isolate, uv_loop_t* loop);
|
|
59
59
|
~PerIsolatePlatformData() override;
|
|
60
60
|
|
|
61
|
+
std::shared_ptr<v8::TaskRunner> GetForegroundTaskRunner() override;
|
|
61
62
|
void PostTask(std::unique_ptr<v8::Task> task) override;
|
|
62
63
|
void PostIdleTask(std::unique_ptr<v8::IdleTask> task) override;
|
|
63
64
|
void PostDelayedTask(std::unique_ptr<v8::Task> task,
|
|
@@ -137,8 +138,9 @@ class WorkerThreadsTaskRunner {
|
|
|
137
138
|
class NodePlatform : public MultiIsolatePlatform {
|
|
138
139
|
public:
|
|
139
140
|
NodePlatform(int thread_pool_size,
|
|
140
|
-
|
|
141
|
-
|
|
141
|
+
v8::TracingController* tracing_controller,
|
|
142
|
+
v8::PageAllocator* page_allocator = nullptr);
|
|
143
|
+
~NodePlatform() override;
|
|
142
144
|
|
|
143
145
|
void DrainTasks(v8::Isolate* isolate) override;
|
|
144
146
|
void Shutdown();
|
|
@@ -148,21 +150,19 @@ class NodePlatform : public MultiIsolatePlatform {
|
|
|
148
150
|
void CallOnWorkerThread(std::unique_ptr<v8::Task> task) override;
|
|
149
151
|
void CallDelayedOnWorkerThread(std::unique_ptr<v8::Task> task,
|
|
150
152
|
double delay_in_seconds) override;
|
|
151
|
-
void CallOnForegroundThread(v8::Isolate* isolate, v8::Task* task) override {
|
|
152
|
-
UNREACHABLE();
|
|
153
|
-
}
|
|
154
|
-
void CallDelayedOnForegroundThread(v8::Isolate* isolate,
|
|
155
|
-
v8::Task* task,
|
|
156
|
-
double delay_in_seconds) override {
|
|
157
|
-
UNREACHABLE();
|
|
158
|
-
}
|
|
159
153
|
bool IdleTasksEnabled(v8::Isolate* isolate) override;
|
|
160
154
|
double MonotonicallyIncreasingTime() override;
|
|
161
155
|
double CurrentClockTimeMillis() override;
|
|
162
|
-
|
|
156
|
+
v8::TracingController* GetTracingController() override;
|
|
163
157
|
bool FlushForegroundTasks(v8::Isolate* isolate) override;
|
|
158
|
+
std::unique_ptr<v8::JobHandle> PostJob(
|
|
159
|
+
v8::TaskPriority priority,
|
|
160
|
+
std::unique_ptr<v8::JobTask> job_task) override;
|
|
164
161
|
|
|
165
162
|
void RegisterIsolate(v8::Isolate* isolate, uv_loop_t* loop) override;
|
|
163
|
+
void RegisterIsolate(v8::Isolate* isolate,
|
|
164
|
+
IsolatePlatformDelegate* delegate) override;
|
|
165
|
+
|
|
166
166
|
void UnregisterIsolate(v8::Isolate* isolate) override;
|
|
167
167
|
void AddIsolateFinishedCallback(v8::Isolate* isolate,
|
|
168
168
|
void (*callback)(void*), void* data) override;
|
|
@@ -171,16 +171,21 @@ class NodePlatform : public MultiIsolatePlatform {
|
|
|
171
171
|
v8::Isolate* isolate) override;
|
|
172
172
|
|
|
173
173
|
Platform::StackTracePrinter GetStackTracePrinter() override;
|
|
174
|
+
v8::PageAllocator* GetPageAllocator() override;
|
|
174
175
|
|
|
175
176
|
private:
|
|
176
|
-
|
|
177
|
+
IsolatePlatformDelegate* ForIsolate(v8::Isolate* isolate);
|
|
178
|
+
std::shared_ptr<PerIsolatePlatformData> ForNodeIsolate(v8::Isolate* isolate);
|
|
177
179
|
|
|
178
180
|
Mutex per_isolate_mutex_;
|
|
179
|
-
std::
|
|
180
|
-
|
|
181
|
+
using DelegatePair = std::pair<
|
|
182
|
+
IsolatePlatformDelegate*, std::shared_ptr<PerIsolatePlatformData>>;
|
|
183
|
+
std::unordered_map<v8::Isolate*, DelegatePair> per_isolate_;
|
|
181
184
|
|
|
182
|
-
|
|
185
|
+
v8::TracingController* tracing_controller_;
|
|
186
|
+
v8::PageAllocator* page_allocator_;
|
|
183
187
|
std::shared_ptr<WorkerThreadsTaskRunner> worker_thread_task_runner_;
|
|
188
|
+
bool has_shut_down_ = false;
|
|
184
189
|
};
|
|
185
190
|
|
|
186
191
|
} // namespace node
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#ifndef SRC_NODE_PROCESS_INL_H_
|
|
2
|
+
#define SRC_NODE_PROCESS_INL_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "node_process.h"
|
|
7
|
+
#include "v8.h"
|
|
8
|
+
#include "debug_utils-inl.h"
|
|
9
|
+
|
|
10
|
+
namespace node {
|
|
11
|
+
|
|
12
|
+
// Call process.emitWarning(str), fmt is a snprintf() format string
|
|
13
|
+
template <typename... Args>
|
|
14
|
+
inline v8::Maybe<bool> ProcessEmitWarning(Environment* env,
|
|
15
|
+
const char* fmt,
|
|
16
|
+
Args&&... args) {
|
|
17
|
+
std::string warning = SPrintF(fmt, std::forward<Args>(args)...);
|
|
18
|
+
|
|
19
|
+
return ProcessEmitWarningGeneric(env, warning.c_str());
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
} // namespace node
|
|
23
|
+
|
|
24
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
25
|
+
|
|
26
|
+
#endif // SRC_NODE_PROCESS_INL_H_
|