From df135415eac42c4b7b2e33707e881562d5de96fd Mon Sep 17 00:00:00 2001 From: "lrn@chromium.org" Date: Tue, 30 Jun 2009 11:09:57 +0000 Subject: [PATCH] X64: Fix bad value in stack layout constants. Remove references to Array:kHeaderSize. Review URL: http://codereview.chromium.org/150098 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2303 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/mark-compact.cc | 2 +- src/spaces.cc | 2 +- src/spaces.h | 5 +++-- src/x64/frames-x64.h | 7 +------ 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/mark-compact.cc b/src/mark-compact.cc index 89d97e9..5e46f2a 100644 --- a/src/mark-compact.cc +++ b/src/mark-compact.cc @@ -1141,7 +1141,7 @@ static void SweepSpace(NewSpace* space) { // We give non-live objects a map that will correctly give their size, // since their existing map might not be live after the collection. int size = object->Size(); - if (size >= Array::kHeaderSize) { + if (size >= ByteArray::kHeaderSize) { object->set_map(Heap::byte_array_map()); ByteArray::cast(object)->set_length(ByteArray::LengthFor(size)); } else { diff --git a/src/spaces.cc b/src/spaces.cc index 72b028c..077bcab 100644 --- a/src/spaces.cc +++ b/src/spaces.cc @@ -1265,7 +1265,7 @@ void FreeListNode::set_size(int size_in_bytes) { // If the block is too small (eg, one or two words), to hold both a size // field and a next pointer, we give it a filler map that gives it the // correct size. - if (size_in_bytes > Array::kHeaderSize) { + if (size_in_bytes > ByteArray::kHeaderSize) { set_map(Heap::byte_array_map()); ByteArray::cast(this)->set_length(ByteArray::LengthFor(size_in_bytes)); } else if (size_in_bytes == kPointerSize) { diff --git a/src/spaces.h b/src/spaces.h index 0538c5f..8ce807f 100644 --- a/src/spaces.h +++ b/src/spaces.h @@ -1270,7 +1270,7 @@ class FreeListNode: public HeapObject { inline void set_next(Address next); private: - static const int kNextOffset = Array::kHeaderSize; + static const int kNextOffset = POINTER_SIZE_ALIGN(ByteArray::kHeaderSize); DISALLOW_IMPLICIT_CONSTRUCTORS(FreeListNode); }; @@ -1304,7 +1304,8 @@ class OldSpaceFreeList BASE_EMBEDDED { private: // The size range of blocks, in bytes. (Smaller allocations are allowed, but // will always result in waste.) - static const int kMinBlockSize = Array::kHeaderSize + kPointerSize; + static const int kMinBlockSize = + POINTER_SIZE_ALIGN(ByteArray::kHeaderSize) + kPointerSize; static const int kMaxBlockSize = Page::kMaxHeapObjectSize; // The identity of the owning space, for building allocation Failure diff --git a/src/x64/frames-x64.h b/src/x64/frames-x64.h index d4ab2c6..24c78da 100644 --- a/src/x64/frames-x64.h +++ b/src/x64/frames-x64.h @@ -59,12 +59,7 @@ class StackHandlerConstants : public AllStatic { class EntryFrameConstants : public AllStatic { public: - static const int kCallerFPOffset = -6 * kPointerSize; - - static const int kFunctionArgOffset = +3 * kPointerSize; - static const int kReceiverArgOffset = +4 * kPointerSize; - static const int kArgcOffset = +5 * kPointerSize; - static const int kArgvOffset = +6 * kPointerSize; + static const int kCallerFPOffset = -10 * kPointerSize; }; -- 2.7.4