Parent: #473 Related: #666, #681
Problem
The DOMException constructor coerces optional message and name through toStringV, then stores those physical bytes in persistent exception state. With physical flat Latin-1 storage active, getters and inherited Error stringification can republish invalid canonical StringData, and a non-ASCII name can be compared or serialized from the wrong representation.
Scope
- Route DOMException message and name coercion through the representation-aware WTF-8 helper.
- Preserve message-before-name coercion order, exactly one coercion per supplied argument, constructor/new-target behavior, legacy code lookup, prototype/accessor attributes, exception identity, ASCII borrowing, storage ownership, and OOM propagation.
- Cover exact non-ASCII name/message getters and inherited stringification under canonical and physical flat-Latin-1 storage.
No-workaround rules
- No flat-storage disablement, eager global canonicalization, replacement characters, duplicate coercion, alternate exception type, hidden retry, or Test262 exclusion.
- No stack, queue, job, Promise, Worker, agent, or Map/Set iterator changes.
Acceptance
- Persistent DOMException name/message state contains canonical semantic WTF-8.
- Getters and inherited stringification preserve exact non-ASCII text.
- Message coerces once before name, with abrupt completion preserved.
- The witness passes with canonical storage and with
flat_storage_activeenabled, then the switch is restored and not landed. - Focused Debug/ReleaseSafe/TSan, relevant nonzero Test262 accounting when present, and full units pass with exact inventory reported.