Observability of NaN distinctions — is this a concern?
bbenvie at mozilla.com
Wed Mar 20 13:15:56 PDT 2013
On 3/20/2013 12:56 PM, Allen Wirfs-Brock wrote:
> If you're specifically talking about reading/writing TypedArray
> elements (really ArrayBuffers) you have to take into account the
> possibility that you can have different types overlaying the same
> buffer storage. Hence a NaN bit pattern might be written as 2 Uint32
> values and then retrieved as a Float64 value. In that case, there is
> no Float64 write to perform the normalization so it must be done on
> all reads. Such normalization is especially important if object
> pointers are represented using NaN-boxing.
Exactly, you can't control it on the write end. Writing two uint32's is
precisely how you do NaN-tagging using typed arrays (since you can't
write an uint64). The way to normalize is to coerce to a single
canonical NaN on read, if anything.
(an example of NaN-tagging using typed arrays:
More information about the es-discuss