@scriptc/cli-darwin-x64 0.2.4 → 0.2.6
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/THIRD_PARTY_NOTICES +1 -1
- package/dist/bin/scriptc +0 -0
- package/dist/bin/scriptc.json +1 -1
- package/dist/lib/declarations/scriptc-node-fallback.d.ts +972 -245
- package/dist/lib/declarations/scriptc-overrides.d.ts +5 -1
- package/dist/lib/declarations/scriptc.d.ts +22 -2
- package/dist/lib/llvm/bin/scriptc-llvm-codegen +0 -0
- package/dist/lib/llvm/package.json +1 -1
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_fetch.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_async_dyn.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bigint.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bigint_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_console_native.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_crypto_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dc.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dyn_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_dyn_invoke.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_fetch.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_ffi.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_ffi_queue.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_grapheme.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_http.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_http2.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_inspect.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_loop_epoll.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_loop_kqueue.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_loop_wsapoll.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_net.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_path.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_qs.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_test.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_tls_ca.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_util.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_util_style.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_watch.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/default-workers/scr_zlib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_island.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/dynamic-text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/text-decoder-legacy-workers/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_mailbox.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_message.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_worker.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/dev/runtime/workers/scr_worker_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_inspect.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/default/scr_zlib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-dev/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_inspect.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/default/scr_zlib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/library-thread-release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_fetch.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_async_dyn.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bigint.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bigint_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_console_native.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_crypto_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dc.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dyn_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_dyn_invoke.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_fetch.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_ffi.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_ffi_queue.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_grapheme.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_http.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_http2.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_inspect.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_loop_epoll.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_loop_kqueue.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_loop_wsapoll.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_net.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_path.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_qs.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_test.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_tls_ca.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_util.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_util_style.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_watch.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/default-workers/scr_zlib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_child.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_closure.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_console.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_context.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_copying.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_cycle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_dgram.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_error.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_events_emitter.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_island.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_number.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_object.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_readline.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_shared.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_stream.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_string.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_tls.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_union.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/dynamic-text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/text-decoder-legacy/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/text-decoder-legacy-workers/scr_bytes.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_mailbox.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_message.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_worker.o +0 -0
- package/dist/lib/runtime-darwin-x64/artifacts/release/runtime/workers/scr_worker_events.o +0 -0
- package/dist/lib/runtime-darwin-x64/package.json +1 -1
- package/dist/lib/runtime-darwin-x64/runtime-pack.json +3318 -790
- package/dist/lib/runtime-sources/package.json +1 -1
- package/dist/lib/runtime-sources/src/scr_array.c +479 -46
- package/dist/lib/runtime-sources/src/scr_assert.c +3 -3
- package/dist/lib/runtime-sources/src/scr_async.c +401 -71
- package/dist/lib/runtime-sources/src/scr_async.test.ts +16 -6
- package/dist/lib/runtime-sources/src/scr_async_dyn.c +30 -30
- package/dist/lib/runtime-sources/src/scr_bytes.c +487 -221
- package/dist/lib/runtime-sources/src/scr_bytes.test.c +85 -0
- package/dist/lib/runtime-sources/src/scr_bytes_io.c +45 -64
- package/dist/lib/runtime-sources/src/scr_child.c +48 -30
- package/dist/lib/runtime-sources/src/scr_closure.c +21 -11
- package/dist/lib/runtime-sources/src/scr_console.c +27 -5
- package/dist/lib/runtime-sources/src/scr_context.c +167 -0
- package/dist/lib/runtime-sources/src/scr_context.test.c +118 -0
- package/dist/lib/runtime-sources/src/scr_context.test.ts +47 -0
- package/dist/lib/runtime-sources/src/scr_copying.c +13 -2
- package/dist/lib/runtime-sources/src/scr_cycle.c +112 -12
- package/dist/lib/runtime-sources/src/scr_dc.c +8 -8
- package/dist/lib/runtime-sources/src/scr_dgram.c +10 -7
- package/dist/lib/runtime-sources/src/scr_error.c +26 -14
- package/dist/lib/runtime-sources/src/scr_events.c +45 -31
- package/dist/lib/runtime-sources/src/scr_events_emitter.c +34 -1
- package/dist/lib/runtime-sources/src/scr_exception.c +26 -7
- package/dist/lib/runtime-sources/src/scr_fetch.c +23 -20
- package/dist/lib/runtime-sources/src/scr_fetch_curl.c +1 -1
- package/dist/lib/runtime-sources/src/scr_ffi.c +3 -3
- package/dist/lib/runtime-sources/src/scr_file_handle.c +1 -0
- package/dist/lib/runtime-sources/src/scr_http.c +20 -16
- package/dist/lib/runtime-sources/src/scr_http2.c +10 -8
- package/dist/lib/runtime-sources/src/scr_inspect.c +1 -0
- package/dist/lib/runtime-sources/src/scr_island.c +1 -1
- package/dist/lib/runtime-sources/src/scr_json.c +652 -189
- package/dist/lib/runtime-sources/src/scr_json.test.c +339 -1
- package/dist/lib/runtime-sources/src/scr_json.test.ts +59 -25
- package/dist/lib/runtime-sources/src/scr_key.h +92 -0
- package/dist/lib/runtime-sources/src/scr_lib.c +256 -136
- package/dist/lib/runtime-sources/src/scr_mailbox.c +233 -0
- package/dist/lib/runtime-sources/src/scr_mailbox.h +28 -0
- package/dist/lib/runtime-sources/src/scr_mailbox.test.c +86 -0
- package/dist/lib/runtime-sources/src/scr_mailbox.test.ts +46 -0
- package/dist/lib/runtime-sources/src/scr_map.c +240 -107
- package/dist/lib/runtime-sources/src/scr_message.c +443 -0
- package/dist/lib/runtime-sources/src/scr_message.h +14 -0
- package/dist/lib/runtime-sources/src/scr_message.test.c +152 -0
- package/dist/lib/runtime-sources/src/scr_message.test.ts +44 -0
- package/dist/lib/runtime-sources/src/scr_net.c +14 -12
- package/dist/lib/runtime-sources/src/scr_number.c +36 -4
- package/dist/lib/runtime-sources/src/scr_numeric.h +25 -0
- package/dist/lib/runtime-sources/src/scr_numeric.test.c +37 -0
- package/dist/lib/runtime-sources/src/scr_numeric.test.ts +33 -0
- package/dist/lib/runtime-sources/src/scr_object.c +9 -4
- package/dist/lib/runtime-sources/src/scr_path.c +1 -1
- package/dist/lib/runtime-sources/src/scr_readline.c +8 -8
- package/dist/lib/runtime-sources/src/scr_regex.c +351 -167
- package/dist/lib/runtime-sources/src/scr_runtime.h +207 -34
- package/dist/lib/runtime-sources/src/scr_shared.c +280 -0
- package/dist/lib/runtime-sources/src/scr_shared.test.c +113 -0
- package/dist/lib/runtime-sources/src/scr_shared.test.ts +45 -0
- package/dist/lib/runtime-sources/src/scr_stream.c +9 -9
- package/dist/lib/runtime-sources/src/scr_string.c +365 -141
- package/dist/lib/runtime-sources/src/scr_test.c +8 -8
- package/dist/lib/runtime-sources/src/scr_tls.c +12 -12
- package/dist/lib/runtime-sources/src/scr_tls_ca.c +34 -12
- package/dist/lib/runtime-sources/src/scr_union.c +10 -5
- package/dist/lib/runtime-sources/src/scr_util_compare.c +1 -0
- package/dist/lib/runtime-sources/src/scr_util_style.c +11 -11
- package/dist/lib/runtime-sources/src/scr_watch.c +16 -6
- package/dist/lib/runtime-sources/src/scr_worker.c +232 -0
- package/dist/lib/runtime-sources/src/scr_worker.h +42 -0
- package/dist/lib/runtime-sources/src/scr_worker.test.c +115 -0
- package/dist/lib/runtime-sources/src/scr_worker.test.ts +49 -0
- package/dist/lib/runtime-sources/src/scr_worker_events.c +443 -0
- package/dist/lib/runtime-sources/src/scr_zlib.c +6 -0
- package/package.json +1 -1
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* keep the lean 1-word header and never touch the collector.
|
|
16
16
|
*/
|
|
17
17
|
#include "scr_runtime.h"
|
|
18
|
+
#include "scr_key.h"
|
|
18
19
|
|
|
19
20
|
#include <stdio.h>
|
|
20
21
|
#include <stdlib.h>
|
|
@@ -46,27 +47,14 @@ static uint64_t scr_map_f64_bits(double k) {
|
|
|
46
47
|
return bits;
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
static uint64_t scr_map_fnv1a(const unsigned char *bytes, size_t n) {
|
|
50
|
-
uint64_t h = UINT64_C(0xcbf29ce484222325);
|
|
51
|
-
for (size_t i = 0; i < n; i++) {
|
|
52
|
-
h ^= bytes[i];
|
|
53
|
-
h *= UINT64_C(0x100000001b3);
|
|
54
|
-
}
|
|
55
|
-
return h;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
50
|
static uint64_t scr_map_hash_str(const ScrStr *k) {
|
|
59
|
-
return
|
|
51
|
+
return scr_key_hash(k->data, k->len);
|
|
60
52
|
}
|
|
61
53
|
|
|
62
54
|
/* Mix the complete normalized number or identity word. Float exponents
|
|
63
55
|
* and aligned pointers need high bits to reach the low bucket-index bits. */
|
|
64
56
|
static uint64_t scr_map_hash_word(uint64_t value) {
|
|
65
|
-
|
|
66
|
-
value *= UINT64_C(0xbf58476d1ce4e5b9);
|
|
67
|
-
value ^= value >> 27;
|
|
68
|
-
value *= UINT64_C(0x94d049bb133111eb);
|
|
69
|
-
return value ^ (value >> 31);
|
|
57
|
+
return scr_key_mix(value);
|
|
70
58
|
}
|
|
71
59
|
|
|
72
60
|
/* ── slot packing (8-byte slots, like ScrArr) ──────────────────────────── */
|
|
@@ -199,27 +187,186 @@ static bool scr_map_key_eq(const ScrMap *m, uint64_t stored, uint64_t probe) {
|
|
|
199
187
|
* A zero entry hash marks a tombstone; cached hashes reject unrelated keys
|
|
200
188
|
* before equality and survive table growth without hashing the keys again.
|
|
201
189
|
* Remap zero to one so every live entry has a nonzero hash. */
|
|
202
|
-
|
|
190
|
+
typedef enum { SCR_MAP_LOOKUP_STR, SCR_MAP_LOOKUP_SPAN, SCR_MAP_LOOKUP_WORD, SCR_MAP_LOOKUP_GENERIC } ScrMapLookup;
|
|
191
|
+
|
|
192
|
+
typedef struct { const char *bytes; size_t length; } ScrMapSpan;
|
|
193
|
+
|
|
194
|
+
/* Choose equality once per operation. Inlining the traversal with a constant
|
|
195
|
+
* lookup kind keeps the ordinary string/word probe free of key-kind dispatch,
|
|
196
|
+
* while boxed keys retain their complete value/identity semantics. */
|
|
197
|
+
static inline bool scr_map_lookup_eq(const ScrMap *m, uint64_t stored, uint64_t key,
|
|
198
|
+
ScrMapLookup lookup) {
|
|
199
|
+
if (lookup == SCR_MAP_LOOKUP_WORD) return stored == key;
|
|
200
|
+
if (lookup == SCR_MAP_LOOKUP_SPAN) {
|
|
201
|
+
const ScrStr *a = scr_map_slot_to_ptr(stored);
|
|
202
|
+
const ScrMapSpan *b = scr_map_slot_to_ptr(key);
|
|
203
|
+
return a->len == b->length && scr_key_equal(a->data, b->bytes, a->len);
|
|
204
|
+
}
|
|
205
|
+
if (lookup == SCR_MAP_LOOKUP_STR) {
|
|
206
|
+
const ScrStr *a = scr_map_slot_to_ptr(stored);
|
|
207
|
+
const ScrStr *b = scr_map_slot_to_ptr(key);
|
|
208
|
+
return a == b || (a->len == b->len && scr_key_equal(a->data, b->data, a->len));
|
|
209
|
+
}
|
|
210
|
+
return scr_map_key_eq(m, stored, key);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/* Compact tables keep a hash fingerprint beside each 24-bit entry index.
|
|
214
|
+
* Rejecting a collision here avoids loading an unrelated ordered entry.
|
|
215
|
+
* Larger tables keep full-width indices; collection size remains limited
|
|
216
|
+
* only by the allocator. Zero is empty in compact tables, so store index+1. */
|
|
217
|
+
#ifndef SCR_MAP_COMPACT_BUCKETS
|
|
218
|
+
#define SCR_MAP_COMPACT_BUCKETS ((size_t)1 << 24)
|
|
219
|
+
#endif
|
|
220
|
+
_Static_assert(SCR_MAP_COMPACT_BUCKETS >= 16 &&
|
|
221
|
+
SCR_MAP_COMPACT_BUCKETS <= ((size_t)1 << 24) &&
|
|
222
|
+
(SCR_MAP_COMPACT_BUCKETS & (SCR_MAP_COMPACT_BUCKETS - 1)) == 0,
|
|
223
|
+
"compact bucket capacity must leave room for every tagged index");
|
|
224
|
+
#define SCR_MAP_INDEX_MASK UINT32_C(0x00ffffff)
|
|
225
|
+
|
|
226
|
+
static bool scr_map_compact_buckets(size_t count) {
|
|
227
|
+
return count <= SCR_MAP_COMPACT_BUCKETS;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
static size_t scr_map_bucket(const ScrMap *m, size_t slot) {
|
|
231
|
+
if (scr_map_compact_buckets(m->nbuckets)) {
|
|
232
|
+
uint32_t index = ((const uint32_t *)m->buckets)[slot] & SCR_MAP_INDEX_MASK;
|
|
233
|
+
return index ? (size_t)index - 1 : SCR_MAP_EMPTY;
|
|
234
|
+
}
|
|
235
|
+
return ((const size_t *)m->buckets)[slot];
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
static void scr_map_bucket_set(ScrMap *m, size_t slot, size_t entry, uint64_t hash) {
|
|
239
|
+
if (scr_map_compact_buckets(m->nbuckets)) {
|
|
240
|
+
((uint32_t *)m->buckets)[slot] = (uint32_t)(entry + 1) | (uint32_t)(hash >> 32 & UINT32_C(0xff000000));
|
|
241
|
+
} else {
|
|
242
|
+
((size_t *)m->buckets)[slot] = entry;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
static inline __attribute__((always_inline)) size_t scr_map_probe_with(
|
|
247
|
+
const ScrMap *m, uint64_t hash, uint64_t key, ScrMapLookup lookup) {
|
|
203
248
|
if (m->nbuckets == 0) return SCR_MAP_EMPTY;
|
|
204
249
|
size_t mask = m->nbuckets - 1;
|
|
250
|
+
if (scr_map_compact_buckets(m->nbuckets)) {
|
|
251
|
+
const uint32_t *buckets = m->buckets;
|
|
252
|
+
uint32_t tag = (uint32_t)(hash >> 32 & UINT32_C(0xff000000));
|
|
253
|
+
for (size_t i = hash & mask;; i = (i + 1) & mask) {
|
|
254
|
+
uint32_t bucket = buckets[i];
|
|
255
|
+
if (!bucket) return i;
|
|
256
|
+
if ((bucket & ~SCR_MAP_INDEX_MASK) != tag) continue;
|
|
257
|
+
size_t b = (bucket & SCR_MAP_INDEX_MASK) - 1;
|
|
258
|
+
if (m->entries[b].hash == hash && scr_map_lookup_eq(m, m->entries[b].key, key, lookup)) return i;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
const size_t *buckets = m->buckets;
|
|
205
262
|
for (size_t i = hash & mask;; i = (i + 1) & mask) {
|
|
206
|
-
size_t b =
|
|
263
|
+
size_t b = buckets[i];
|
|
207
264
|
if (b == SCR_MAP_EMPTY) return i;
|
|
208
|
-
if (m->entries[b].hash == hash &&
|
|
265
|
+
if (m->entries[b].hash == hash && scr_map_lookup_eq(m, m->entries[b].key, key, lookup)) return i;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
#define SCR_MAP_LINEAR_LIMIT 4
|
|
270
|
+
|
|
271
|
+
/* Small collections keep only their ordered entries. Cached hashes make
|
|
272
|
+
* the bounded scan cheap without allocating a separate bucket table. */
|
|
273
|
+
static inline __attribute__((always_inline)) size_t scr_map_find_with(
|
|
274
|
+
const ScrMap *m, uint64_t hash, uint64_t key, ScrMapLookup lookup) {
|
|
275
|
+
if (m->nlive == 0) return SCR_MAP_EMPTY;
|
|
276
|
+
hash = hash ? hash : 1;
|
|
277
|
+
if (m->nbuckets == 0) {
|
|
278
|
+
for (size_t e = 0; e < m->nentries; e++) {
|
|
279
|
+
if (m->entries[e].hash == hash && scr_map_lookup_eq(m, m->entries[e].key, key, lookup)) return e;
|
|
280
|
+
}
|
|
281
|
+
return SCR_MAP_EMPTY;
|
|
282
|
+
}
|
|
283
|
+
size_t slot = scr_map_probe_with(m, hash, key, lookup);
|
|
284
|
+
return slot == SCR_MAP_EMPTY ? SCR_MAP_EMPTY : scr_map_bucket(m, slot);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
static ScrMapLookup scr_map_lookup_kind(const ScrMap *m) {
|
|
288
|
+
switch (m->key_kind) {
|
|
289
|
+
case SCR_MAP_KEY_STR: return SCR_MAP_LOOKUP_STR;
|
|
290
|
+
case SCR_MAP_KEY_F64:
|
|
291
|
+
case SCR_MAP_KEY_BOOL:
|
|
292
|
+
case SCR_MAP_KEY_REF:
|
|
293
|
+
case SCR_MAP_KEY_NULL:
|
|
294
|
+
case SCR_MAP_KEY_UNDEFINED: return SCR_MAP_LOOKUP_WORD;
|
|
295
|
+
default: return SCR_MAP_LOOKUP_GENERIC;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
static size_t scr_map_probe(const ScrMap *m, uint64_t hash, uint64_t key) {
|
|
300
|
+
switch (scr_map_lookup_kind(m)) {
|
|
301
|
+
case SCR_MAP_LOOKUP_STR: return scr_map_probe_with(m, hash, key, SCR_MAP_LOOKUP_STR);
|
|
302
|
+
case SCR_MAP_LOOKUP_WORD: return scr_map_probe_with(m, hash, key, SCR_MAP_LOOKUP_WORD);
|
|
303
|
+
default: return scr_map_probe_with(m, hash, key, SCR_MAP_LOOKUP_GENERIC);
|
|
209
304
|
}
|
|
210
305
|
}
|
|
211
306
|
|
|
212
307
|
static size_t scr_map_find(const ScrMap *m, uint64_t hash, uint64_t key) {
|
|
213
|
-
|
|
214
|
-
|
|
308
|
+
switch (scr_map_lookup_kind(m)) {
|
|
309
|
+
case SCR_MAP_LOOKUP_STR: return scr_map_find_with(m, hash, key, SCR_MAP_LOOKUP_STR);
|
|
310
|
+
case SCR_MAP_LOOKUP_WORD: return scr_map_find_with(m, hash, key, SCR_MAP_LOOKUP_WORD);
|
|
311
|
+
default: return scr_map_find_with(m, hash, key, SCR_MAP_LOOKUP_GENERIC);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
static size_t scr_map_find_f64(const ScrMap *m, double key) {
|
|
316
|
+
if (m->nlive == 0) return SCR_MAP_EMPTY;
|
|
317
|
+
uint64_t k = scr_map_f64_bits(key);
|
|
318
|
+
return scr_map_find_with(m, scr_map_hash_word(k), k, SCR_MAP_LOOKUP_WORD);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
static size_t scr_map_find_str(const ScrMap *m, const ScrStr *key) {
|
|
322
|
+
if (m->nlive == 0) return SCR_MAP_EMPTY;
|
|
323
|
+
if (m->nbuckets == 0) {
|
|
324
|
+
uint64_t k = scr_map_slot_from_ptr((void *)key);
|
|
325
|
+
for (size_t e = 0; e < m->nentries; e++) {
|
|
326
|
+
if (m->entries[e].hash && scr_map_lookup_eq(m, m->entries[e].key, k, SCR_MAP_LOOKUP_STR)) return e;
|
|
327
|
+
}
|
|
328
|
+
return SCR_MAP_EMPTY;
|
|
329
|
+
}
|
|
330
|
+
return scr_map_find_with(m, scr_map_hash_str(key), scr_map_slot_from_ptr((void *)key),
|
|
331
|
+
SCR_MAP_LOOKUP_STR);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/* A transient input span follows the same hash, equality and ownership
|
|
335
|
+
* rules as a string key without allocating or copying the probe. */
|
|
336
|
+
static size_t scr_map_find_span(const ScrMap *m, const char *bytes, size_t length) {
|
|
337
|
+
if (m->nlive == 0) return SCR_MAP_EMPTY;
|
|
338
|
+
ScrMapSpan key = { bytes, length };
|
|
339
|
+
return scr_map_find_with(m, scr_key_hash(bytes, length), scr_map_slot_from_ptr(&key),
|
|
340
|
+
SCR_MAP_LOOKUP_SPAN);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
bool scr_map_get_span_f64(const ScrMap *m, const char *bytes, size_t length, double *out) {
|
|
344
|
+
size_t e = scr_map_find_span(m, bytes, length);
|
|
345
|
+
if (e == SCR_MAP_EMPTY) return false;
|
|
346
|
+
*out = scr_map_slot_to_f64(m->entries[e].val);
|
|
347
|
+
return true;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
bool scr_map_get_span_bool(const ScrMap *m, const char *bytes, size_t length, bool *out) {
|
|
351
|
+
size_t e = scr_map_find_span(m, bytes, length);
|
|
352
|
+
if (e == SCR_MAP_EMPTY) return false;
|
|
353
|
+
*out = m->entries[e].val != 0;
|
|
354
|
+
return true;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
void *scr_map_get_span_ref(const ScrMap *m, const char *bytes, size_t length) {
|
|
358
|
+
size_t e = scr_map_find_span(m, bytes, length);
|
|
359
|
+
return e == SCR_MAP_EMPTY ? NULL : m->val_retain(scr_map_slot_to_ptr(m->entries[e].val));
|
|
215
360
|
}
|
|
216
361
|
|
|
217
362
|
/* Rebuild the bucket table (size must be a power of two >= 2 * nentries):
|
|
218
363
|
* only live entries are inserted, in dense order — dead markers vanish. */
|
|
219
364
|
static void scr_map_rebuild_buckets(ScrMap *m, size_t nbuckets) {
|
|
220
|
-
|
|
365
|
+
bool compact = scr_map_compact_buckets(nbuckets);
|
|
366
|
+
size_t bytes = nbuckets * (compact ? sizeof(uint32_t) : sizeof(size_t));
|
|
367
|
+
void *buckets = malloc(bytes);
|
|
221
368
|
if (!buckets) scr_map_oom();
|
|
222
|
-
|
|
369
|
+
memset(buckets, compact ? 0 : 0xff, bytes);
|
|
223
370
|
free(m->buckets);
|
|
224
371
|
m->buckets = buckets;
|
|
225
372
|
m->nbuckets = nbuckets;
|
|
@@ -228,8 +375,8 @@ static void scr_map_rebuild_buckets(ScrMap *m, size_t nbuckets) {
|
|
|
228
375
|
uint64_t hash = m->entries[e].hash;
|
|
229
376
|
if (!hash) continue;
|
|
230
377
|
size_t i = hash & mask;
|
|
231
|
-
while (
|
|
232
|
-
|
|
378
|
+
while (scr_map_bucket(m, i) != SCR_MAP_EMPTY) i = (i + 1) & mask;
|
|
379
|
+
scr_map_bucket_set(m, i, e, hash);
|
|
233
380
|
}
|
|
234
381
|
}
|
|
235
382
|
|
|
@@ -248,12 +395,15 @@ static void scr_map_compact(ScrMap *m) {
|
|
|
248
395
|
* reuse their storage) and grows otherwise; while an iteration is active it
|
|
249
396
|
* ONLY grows — indices must stay stable under callback mutation. */
|
|
250
397
|
static void scr_map_reserve_append(ScrMap *m) {
|
|
251
|
-
if (m->nentries < m->ecap &&
|
|
252
|
-
|
|
398
|
+
if (m->nentries < m->ecap &&
|
|
399
|
+
((m->nbuckets == 0 && m->nentries < SCR_MAP_LINEAR_LIMIT) ||
|
|
400
|
+
m->nbuckets >= 2 * (m->nentries + 1))) return;
|
|
401
|
+
if (m->iter_depth == 0 && m->nentries > 0 &&
|
|
402
|
+
(m->nbuckets == 0 ? m->nlive < m->nentries : m->nlive <= m->nentries / 2)) {
|
|
253
403
|
scr_map_compact(m);
|
|
254
404
|
}
|
|
255
405
|
if (m->nentries == m->ecap) {
|
|
256
|
-
size_t cap = m->ecap ? m->ecap :
|
|
406
|
+
size_t cap = m->ecap ? m->ecap : 4;
|
|
257
407
|
while (cap < m->nentries + 1) {
|
|
258
408
|
if (cap > SIZE_MAX / 2 / sizeof(ScrMapEntry)) scr_map_oom();
|
|
259
409
|
cap *= 2;
|
|
@@ -263,6 +413,7 @@ static void scr_map_reserve_append(ScrMap *m) {
|
|
|
263
413
|
m->entries = entries;
|
|
264
414
|
m->ecap = cap;
|
|
265
415
|
}
|
|
416
|
+
if (m->nbuckets == 0 && m->nentries < SCR_MAP_LINEAR_LIMIT) return;
|
|
266
417
|
if (m->nbuckets < 2 * (m->nentries + 1)) {
|
|
267
418
|
size_t nbuckets = m->nbuckets ? m->nbuckets : 16;
|
|
268
419
|
while (nbuckets < 2 * (m->nentries + 1)) {
|
|
@@ -367,23 +518,28 @@ ScrMap *scr_map_retain(ScrMap *m) {
|
|
|
367
518
|
return m;
|
|
368
519
|
}
|
|
369
520
|
|
|
521
|
+
static void scr_map_destroy(void *object) {
|
|
522
|
+
ScrMap *m = object;
|
|
523
|
+
scr_weak_dispose(m);
|
|
524
|
+
for (size_t e = 0; e < m->nentries; e++) {
|
|
525
|
+
if (!m->entries[e].hash) continue;
|
|
526
|
+
scr_map_release_key(m, m->entries[e].key);
|
|
527
|
+
scr_map_release_val(m, m->entries[e].val);
|
|
528
|
+
}
|
|
529
|
+
free(m->entries);
|
|
530
|
+
free(m->buckets);
|
|
531
|
+
#ifdef SCR_RC_AUDIT
|
|
532
|
+
scr_live_maps--;
|
|
533
|
+
#endif
|
|
534
|
+
if (m->key_trace || m->val_trace) scr_cyc_free(m);
|
|
535
|
+
else free(m);
|
|
536
|
+
}
|
|
537
|
+
|
|
370
538
|
void scr_map_release(ScrMap *m) {
|
|
371
539
|
if (!m || m->rc == SIZE_MAX) return; /* NULL: an uninitialized `let` local */
|
|
372
540
|
if (--m->rc == 0) {
|
|
373
|
-
scr_weak_dispose(m);
|
|
374
541
|
if (m->key_trace || m->val_trace) scr_cyc_on_dead(m);
|
|
375
|
-
|
|
376
|
-
if (!m->entries[e].hash) continue;
|
|
377
|
-
scr_map_release_key(m, m->entries[e].key);
|
|
378
|
-
scr_map_release_val(m, m->entries[e].val);
|
|
379
|
-
}
|
|
380
|
-
free(m->entries);
|
|
381
|
-
free(m->buckets);
|
|
382
|
-
#ifdef SCR_RC_AUDIT
|
|
383
|
-
scr_live_maps--;
|
|
384
|
-
#endif
|
|
385
|
-
if (m->key_trace || m->val_trace) scr_cyc_free(m);
|
|
386
|
-
else free(m);
|
|
542
|
+
scr_rc_destroy(m, scr_map_destroy);
|
|
387
543
|
} else if (m->key_trace || m->val_trace) {
|
|
388
544
|
scr_cyc_on_release(m); /* possible cycle root; may collect — m is done */
|
|
389
545
|
}
|
|
@@ -411,19 +567,21 @@ void scr_map_clear(ScrMap *m) {
|
|
|
411
567
|
* after the clear append past them and ARE visited (Node-exact). */
|
|
412
568
|
m->nentries = 0;
|
|
413
569
|
}
|
|
414
|
-
|
|
570
|
+
if (m->nbuckets) {
|
|
571
|
+
bool compact = scr_map_compact_buckets(m->nbuckets);
|
|
572
|
+
memset(m->buckets, compact ? 0 : 0xff,
|
|
573
|
+
m->nbuckets * (compact ? sizeof(uint32_t) : sizeof(size_t)));
|
|
574
|
+
}
|
|
415
575
|
}
|
|
416
576
|
|
|
417
577
|
/* ── has / delete ──────────────────────────────────────────────────────── */
|
|
418
578
|
|
|
419
579
|
bool scr_map_has_f64(const ScrMap *m, double key) {
|
|
420
|
-
|
|
421
|
-
return scr_map_find(m, scr_map_hash_word(k), k) != SCR_MAP_EMPTY;
|
|
580
|
+
return scr_map_find_f64(m, key) != SCR_MAP_EMPTY;
|
|
422
581
|
}
|
|
423
582
|
|
|
424
583
|
bool scr_map_has_str(const ScrMap *m, const ScrStr *key) {
|
|
425
|
-
|
|
426
|
-
return scr_map_find(m, scr_map_hash_str(key), k) != SCR_MAP_EMPTY;
|
|
584
|
+
return scr_map_find_str(m, key) != SCR_MAP_EMPTY;
|
|
427
585
|
}
|
|
428
586
|
|
|
429
587
|
static bool scr_map_delete_found(ScrMap *m, size_t e) {
|
|
@@ -436,19 +594,21 @@ static bool scr_map_delete_found(ScrMap *m, size_t e) {
|
|
|
436
594
|
}
|
|
437
595
|
|
|
438
596
|
bool scr_map_delete_f64(ScrMap *m, double key) {
|
|
439
|
-
|
|
440
|
-
return scr_map_delete_found(m, scr_map_find(m, scr_map_hash_word(k), k));
|
|
597
|
+
return scr_map_delete_found(m, scr_map_find_f64(m, key));
|
|
441
598
|
}
|
|
442
599
|
|
|
443
600
|
bool scr_map_delete_str(ScrMap *m, const ScrStr *key) {
|
|
444
|
-
|
|
445
|
-
return scr_map_delete_found(m, scr_map_find(m, scr_map_hash_str(key), k));
|
|
601
|
+
return scr_map_delete_found(m, scr_map_find_str(m, key));
|
|
446
602
|
}
|
|
447
603
|
|
|
448
604
|
/* REF keys: identity hashing over the pointer bits (see the header's
|
|
449
605
|
* SCR_MAP_KEY_REF note). Probes never retain; storage does. */
|
|
450
606
|
static size_t scr_map_find_ref(const ScrMap *m, const void *key) {
|
|
607
|
+
if (m->nlive == 0) return SCR_MAP_EMPTY;
|
|
451
608
|
uint64_t k = scr_map_slot_from_ptr((void *)key);
|
|
609
|
+
if (m->key_kind == SCR_MAP_KEY_REF) {
|
|
610
|
+
return scr_map_find_with(m, scr_map_hash_word(k), k, SCR_MAP_LOOKUP_WORD);
|
|
611
|
+
}
|
|
452
612
|
return scr_map_find(m, scr_map_hash_key(m, k), k);
|
|
453
613
|
}
|
|
454
614
|
|
|
@@ -469,7 +629,7 @@ bool scr_map_delete_ref(ScrMap *m, const void *key) {
|
|
|
469
629
|
static void scr_map_set(ScrMap *m, uint64_t hash, uint64_t key, uint64_t val) {
|
|
470
630
|
hash = hash ? hash : 1;
|
|
471
631
|
size_t slot = scr_map_probe(m, hash, key);
|
|
472
|
-
size_t e =
|
|
632
|
+
size_t e = m->nbuckets == 0 ? scr_map_find(m, hash, key) : scr_map_bucket(m, slot);
|
|
473
633
|
if (e != SCR_MAP_EMPTY) {
|
|
474
634
|
uint64_t old = m->entries[e].val;
|
|
475
635
|
m->entries[e].val = val; /* unlink before releasing (cycle collector) */
|
|
@@ -480,10 +640,10 @@ static void scr_map_set(ScrMap *m, uint64_t hash, uint64_t key, uint64_t val) {
|
|
|
480
640
|
scr_map_reserve_append(m);
|
|
481
641
|
/* Growth or compaction can move the insertion bucket. Otherwise keep the
|
|
482
642
|
* empty slot from the first probe instead of walking the chain twice. */
|
|
483
|
-
if (m->nentries != old_entries || m->nbuckets != old_buckets) {
|
|
643
|
+
if (m->nbuckets && (m->nentries != old_entries || m->nbuckets != old_buckets)) {
|
|
484
644
|
size_t mask = m->nbuckets - 1;
|
|
485
645
|
slot = hash & mask;
|
|
486
|
-
while (m
|
|
646
|
+
while (scr_map_bucket(m, slot) != SCR_MAP_EMPTY) slot = (slot + 1) & mask;
|
|
487
647
|
}
|
|
488
648
|
size_t idx = m->nentries++;
|
|
489
649
|
m->entries[idx].key = key;
|
|
@@ -510,7 +670,7 @@ static void scr_map_set(ScrMap *m, uint64_t hash, uint64_t key, uint64_t val) {
|
|
|
510
670
|
} else if (scr_map_ref_key(m->key_kind)) {
|
|
511
671
|
m->key_retain(scr_map_slot_to_ptr(key)); /* key is borrowed */
|
|
512
672
|
}
|
|
513
|
-
m->
|
|
673
|
+
if (m->nbuckets) scr_map_bucket_set(m, slot, idx, hash);
|
|
514
674
|
}
|
|
515
675
|
|
|
516
676
|
static void scr_map_set_f64_key(ScrMap *m, double key, uint64_t val) {
|
|
@@ -567,15 +727,6 @@ ScrMap *scr_set_new_ref(void *(*elem_retain)(void *), void (*elem_release)(void
|
|
|
567
727
|
|
|
568
728
|
/* ── get ───────────────────────────────────────────────────────────────── */
|
|
569
729
|
|
|
570
|
-
static size_t scr_map_find_f64(const ScrMap *m, double key) {
|
|
571
|
-
uint64_t k = scr_map_f64_bits(key);
|
|
572
|
-
return scr_map_find(m, scr_map_hash_word(k), k);
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
static size_t scr_map_find_str(const ScrMap *m, const ScrStr *key) {
|
|
576
|
-
return scr_map_find(m, scr_map_hash_str(key), scr_map_slot_from_ptr((void *)key));
|
|
577
|
-
}
|
|
578
|
-
|
|
579
730
|
bool scr_map_get_f64_f64(const ScrMap *m, double key, double *out) {
|
|
580
731
|
size_t e = scr_map_find_f64(m, key);
|
|
581
732
|
if (e == SCR_MAP_EMPTY) return false;
|
|
@@ -638,8 +789,9 @@ void *scr_map_get_ref_ref(const ScrMap *m, const void *key) {
|
|
|
638
789
|
|
|
639
790
|
/* Boolean keys use unboxed 0/1 slots and the same probe path. */
|
|
640
791
|
static size_t scr_map_find_bool(const ScrMap *m, bool key) {
|
|
792
|
+
if (m->nlive == 0) return SCR_MAP_EMPTY;
|
|
641
793
|
uint64_t slot = key ? 1 : 0;
|
|
642
|
-
return
|
|
794
|
+
return scr_map_find_with(m, scr_map_hash_word(slot), slot, SCR_MAP_LOOKUP_WORD);
|
|
643
795
|
}
|
|
644
796
|
|
|
645
797
|
bool scr_map_has_bool(const ScrMap *m, bool key) {
|
|
@@ -792,6 +944,7 @@ ScrMap *scr_map_clone(const ScrMap *source, bool keys_only) {
|
|
|
792
944
|
else if (out->val_kind == SCR_MAP_VAL_REF) out->val_retain(scr_map_slot_to_ptr(copy->val));
|
|
793
945
|
}
|
|
794
946
|
out->nlive = count;
|
|
947
|
+
if (count <= SCR_MAP_LINEAR_LIMIT) return out;
|
|
795
948
|
size_t buckets = 16;
|
|
796
949
|
while (buckets < 2 * count) {
|
|
797
950
|
if (buckets > SIZE_MAX / 2 / sizeof(size_t)) scr_map_oom();
|
|
@@ -890,59 +1043,39 @@ void scr_set_add_all(ScrMap *set, ScrArr *values) {
|
|
|
890
1043
|
/* Canonical array index test: "0".."4294967294" — digits only, no leading
|
|
891
1044
|
* zero (except "0" itself), value <= 2^32 - 2. JS orders these OWN keys
|
|
892
1045
|
* first, ascending numerically, before every other string key. */
|
|
893
|
-
static bool scr_map_key_array_index(const ScrStr *
|
|
894
|
-
|
|
895
|
-
if (n == 0 || n > 10) return false;
|
|
896
|
-
const char *s = k->data;
|
|
897
|
-
if (s[0] == '0' && n > 1) return false;
|
|
898
|
-
uint64_t v = 0;
|
|
899
|
-
for (size_t i = 0; i < n; i++) {
|
|
900
|
-
if (s[i] < '0' || s[i] > '9') return false;
|
|
901
|
-
v = v * 10 + (uint64_t)(s[i] - '0');
|
|
902
|
-
}
|
|
903
|
-
if (v > UINT64_C(4294967294)) return false;
|
|
904
|
-
*out = (uint32_t)v;
|
|
905
|
-
return true;
|
|
1046
|
+
static bool scr_map_key_array_index(const ScrStr *key, uint32_t *out) {
|
|
1047
|
+
return scr_key_array_index(key->data, key->len, out);
|
|
906
1048
|
}
|
|
907
1049
|
|
|
908
|
-
/*
|
|
909
|
-
*
|
|
910
|
-
* first in ascending numeric order, then the rest in insertion order.
|
|
911
|
-
* Returns a fresh ScrStr* array (+1); the map is borrowed. Insertion sort
|
|
912
|
-
* over the integer-like subset — overflow maps are small, and ties are
|
|
913
|
-
* impossible (keys are unique). */
|
|
1050
|
+
/* Enumerate numeric keys in ascending order, then other keys in insertion
|
|
1051
|
+
* order. Scratch entries refer to stable map indices, not copied strings. */
|
|
914
1052
|
ScrArr *scr_map_keys_js_order(const ScrMap *m) {
|
|
915
|
-
size_t n = m->nentries;
|
|
916
1053
|
ScrArr *out = scr_arr_new(SCR_ELEM_STR, m->nlive);
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
1054
|
+
if (m->nlive > SIZE_MAX / sizeof(ScrKeyIndex)) scr_map_oom();
|
|
1055
|
+
ScrKeyIndex *indices = NULL;
|
|
1056
|
+
size_t count = 0;
|
|
1057
|
+
for (size_t i = 0; i < m->nentries; i++) {
|
|
920
1058
|
if (!m->entries[i].hash) continue;
|
|
921
|
-
ScrStr *
|
|
922
|
-
uint32_t
|
|
923
|
-
if (!scr_map_key_array_index(
|
|
924
|
-
if (
|
|
925
|
-
|
|
926
|
-
if (!
|
|
927
|
-
}
|
|
928
|
-
size_t j = nidx++;
|
|
929
|
-
while (j > 0 && idx[j - 1].v > v) {
|
|
930
|
-
idx[j] = idx[j - 1];
|
|
931
|
-
j--;
|
|
1059
|
+
ScrStr *key = scr_map_slot_to_ptr(m->entries[i].key);
|
|
1060
|
+
uint32_t index;
|
|
1061
|
+
if (!scr_map_key_array_index(key, &index)) continue;
|
|
1062
|
+
if (!indices) {
|
|
1063
|
+
indices = malloc(m->nlive * sizeof *indices);
|
|
1064
|
+
if (!indices) scr_map_oom();
|
|
932
1065
|
}
|
|
933
|
-
|
|
934
|
-
idx[j].k = k;
|
|
1066
|
+
indices[count++] = (ScrKeyIndex){index, i};
|
|
935
1067
|
}
|
|
936
|
-
|
|
937
|
-
|
|
1068
|
+
scr_key_index_sort(indices, count);
|
|
1069
|
+
for (size_t i = 0; i < count; i++) {
|
|
1070
|
+
ScrStr *key = scr_map_slot_to_ptr(m->entries[indices[i].entry].key);
|
|
1071
|
+
scr_arr_push_ref(out, scr_str_retain(key));
|
|
938
1072
|
}
|
|
939
|
-
free(
|
|
940
|
-
for (size_t i = 0; i <
|
|
1073
|
+
free(indices);
|
|
1074
|
+
for (size_t i = 0; i < m->nentries; i++) {
|
|
941
1075
|
if (!m->entries[i].hash) continue;
|
|
942
|
-
ScrStr *
|
|
943
|
-
uint32_t
|
|
944
|
-
if (scr_map_key_array_index(
|
|
945
|
-
scr_arr_push_ref(out, scr_str_retain(k));
|
|
1076
|
+
ScrStr *key = scr_map_slot_to_ptr(m->entries[i].key);
|
|
1077
|
+
uint32_t index;
|
|
1078
|
+
if (!scr_map_key_array_index(key, &index)) scr_arr_push_ref(out, scr_str_retain(key));
|
|
946
1079
|
}
|
|
947
1080
|
return out;
|
|
948
1081
|
}
|