Reviewers: ,

Description:
Always 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.


Please review this at http://codereview.chromium.org/460043

SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/

Affected files:
   M     src/heap.cc
   M     src/ia32/codegen-ia32.cc
   M     src/ia32/ic-ia32.cc
   M     src/ia32/macro-assembler-ia32.h
   M     src/mark-compact.cc
   M     src/objects-inl.h
   M     src/objects.h


-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to