Commit f3eeeeae authored by erik.corry@gmail.com's avatar erik.corry@gmail.com

8-byte align zone allocations of objects that may require it.

Review URL: http://codereview.chromium.org/8539008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9965 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 9dcf002f
......@@ -53,6 +53,14 @@ inline void* Zone::New(int size) {
// Round up the requested size to fit the alignment.
size = RoundUp(size, kAlignment);
// If the allocation size is divisible by 8 then we return an 8-byte aligned
// address.
if (kPointerSize == 4 && kAlignment == 4) {
position_ += ((~size) & 4) & (reinterpret_cast<intptr_t>(position_) & 4);
} else {
ASSERT(kAlignment >= kPointerSize);
}
// Check if the requested size is available without expanding.
Address result = position_;
......
......@@ -86,7 +86,9 @@ class Zone {
friend class Isolate;
friend class ZoneScope;
// All pointers returned from New() have this alignment.
// All pointers returned from New() have this alignment. In addition, if the
// object being allocated has a size that is divisible by 8 then its alignment
// will be 8.
static const int kAlignment = kPointerSize;
// Never allocate segments smaller than this size in bytes.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment