Summary:
JS heap snapshots can contain more than 16,777,216 (2^24) nodes, which exceeds the V8 `Set` maximum capacity. This causes a `RangeError: Set maximum size exceeded` when MemLab tries to collect all node IDs into a single `Set<number>`.
This diff introduces a `NumericSet` class that shards elements across multiple native `Set<number>` instances using value-range-based partitioning (5M elements per shard). It provides the same API as `Set<number>` (`add`, `has`, `delete`, `forEach`, `size`, `Symbol.iterator`) so it works as a drop-in replacement.
The `HeapNodeIdSet` type alias is updated from `Set<number>` to `NumericSet`, and all call sites that collect node IDs are updated to use `NumericSet`. For small collections, `NumericSet` just wraps a single native Set with minimal overhead.
https://github.com/facebook/memlab/issues/142
Differential Revision: D102351647
fbshipit-source-id: 4517f6e0987071767a75f72de93b9530d4323f28