Parent: #134 Profile umbrella: #140 Home inventory: #163 Bun inventory: #164 Builds on: #219
Implement the pinned shared private-JSC export:
JSC__jsTypeStringForValue
Acceptance criteria:
- Return a valid VM-owned private JSString cell for every accepted EncodedJSValue.
- Match JavaScriptCore
typeofstrings exactly for undefined, null, booleans, numbers, strings, symbols, BigInts, ordinary objects, and callable objects. - Report
undefinedfor[[IsHTMLDDA]]objects andobjectfor null and non-callable objects. - Reject foreign-VM and invalid cells without dereferencing them or modifying pending exception state.
- Preserve an already-pending exception and avoid invoking user code.
- Focused tests cover every classification, returned JSString contents/length/encoding, VM ownership, invalid/foreign cells, and both Home/Bun profile audits.
- Extend the Home consumer fixture and publish exact inventory, ABI documentation, README, and parent-tracker counts.
- Leave benchmark scores unchanged unless a benchmark path is actually rerun.
Completed evidence
Implemented on main in a985fad9; the pinned inventories, ABI documentation, and README scorecard were published in cb4f50b4. The export now returns one of eight exact VM-owned private JSString cells—undefined, boolean, number, string, symbol, bigint, function, or object—with stable identity across sibling realms and isolation across VMs. Null, callable [[IsHTMLDDA]], invalid encodings, foreign cells, and already-pending exceptions follow the pinned JavaScriptCore behavior without invoking user code.
The intentionally batched verification passed 15/15: focused tests passed 3/3 with zero leaks, the Home fixture linked and exercised 200/200 symbols, Home is 201/431 (230 pending), Bun core is 195/421 (226 pending), and the public audit reports 117 public, 19 extensions, and 205 private/support exports. Benchmark scores remain unchanged because no benchmark path was affected or rerun.