DescriptionAlways 64-bit align floating point values in heap numbers.
This is done by reserving 12 bytes for the 8-byte double precision
heap number payload and then storing the actual number at an
aligned address. The change doesn't seem to pay off, at least
not enough to justify the complexity, so I won't be committing it.
My benchmarking was on Intel 32 bit with SSE2. I'll leave it on
the code review tool to serve as a starting point in case someone
wants to implement something similar on an architecture where it pays
off more or where unaligned loads are illegal. Known limitations:
* Doesn't work with snapshots. To fix this the serializer would
have to move the doubles in the heap numbers so they are in the
right place after deserialization.
* Only implemented for IA32 and only tested on IA32+SSE2. Doubles
are already aligned on x64 so getting it to compile on x64 should
be simple enough. For ARM some work would be needed along similar
lines to the IA32 changes.
Patch Set 1 #Patch Set 2 : '' #
Messages
Total messages: 1 (0 generated)
|