Reviewers: Kasper Lund, Description: Align code entry points to 32 bytes.
Please review this at http://codereview.chromium.org/27269 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/heap.cc M src/objects-inl.h M src/objects.h Index: src/heap.cc =================================================================== --- src/heap.cc (revision 1380) +++ src/heap.cc (working copy) @@ -1631,6 +1631,7 @@ int sinfo_size = 0; if (sinfo != NULL) sinfo_size = sinfo->Serialize(NULL); int obj_size = Code::SizeFor(body_size, sinfo_size); + ASSERT((obj_size % Code::kCodeAlignment) == 0); Object* result; if (obj_size > MaxHeapObjectSize()) { result = lo_space_->AllocateRawCode(obj_size); Index: src/objects.h =================================================================== --- src/objects.h (revision 1380) +++ src/objects.h (working copy) @@ -2255,7 +2255,7 @@ static int SizeFor(int body_size, int sinfo_size) { ASSERT_SIZE_TAG_ALIGNED(body_size); ASSERT_SIZE_TAG_ALIGNED(sinfo_size); - return kHeaderSize + body_size + sinfo_size; + return RoundUp(kHeaderSize + body_size + sinfo_size, kCodeAlignment); } // Locating source position. @@ -2279,8 +2279,13 @@ static const int kSInfoSizeOffset = kRelocationSizeOffset + kIntSize; static const int kFlagsOffset = kSInfoSizeOffset + kIntSize; static const int kKindSpecificFlagsOffset = kFlagsOffset + kIntSize; - static const int kHeaderSize = kKindSpecificFlagsOffset + kIntSize; + static const int kFiller6Offset = kKindSpecificFlagsOffset + kIntSize; + static const int kFiller7Offset = kFiller6Offset + kIntSize; + static const int kHeaderSize = kFiller7Offset + kIntSize; + // Code entry points are aligned to 32 bytes. + static const int kCodeAlignment = 32; + // Byte offsets within kKindSpecificFlagsOffset. static const int kICFlagOffset = kKindSpecificFlagsOffset + 0; static const int kStubMajorKeyOffset = kKindSpecificFlagsOffset + 1; Index: src/objects-inl.h =================================================================== --- src/objects-inl.h (revision 1380) +++ src/objects-inl.h (working copy) @@ -2281,7 +2281,7 @@ byte* Code::relocation_start() { - return FIELD_ADDR(this, CodeSize() - sinfo_size() - relocation_size()); + return FIELD_ADDR(this, kHeaderSize + instruction_size()); } @@ -2297,7 +2297,7 @@ byte* Code::sinfo_start() { - return FIELD_ADDR(this, CodeSize() - sinfo_size()); + return FIELD_ADDR(this, kHeaderSize + body_size()); } --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
