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
-~----------~----~----~----~------~----~------~--~---

Reply via email to