| Index: src/spaces.h
|
| ===================================================================
|
| --- src/spaces.h (revision 3473)
|
| +++ src/spaces.h (working copy)
|
| @@ -65,20 +65,23 @@
|
|
|
| // Some assertion macros used in the debugging mode.
|
|
|
| -#define ASSERT_PAGE_ALIGNED(address) \
|
| +#define ASSERT_PAGE_ALIGNED(address) \
|
| ASSERT((OffsetFrom(address) & Page::kPageAlignmentMask) == 0)
|
|
|
| -#define ASSERT_OBJECT_ALIGNED(address) \
|
| +#define ASSERT_OBJECT_ALIGNED(address) \
|
| ASSERT((OffsetFrom(address) & kObjectAlignmentMask) == 0)
|
|
|
| -#define ASSERT_OBJECT_SIZE(size) \
|
| +#define ASSERT_MAP_ALIGNED(address) \
|
| + ASSERT((OffsetFrom(address) & kMapAlignmentMask) == 0)
|
| +
|
| +#define ASSERT_OBJECT_SIZE(size) \
|
| ASSERT((0 < size) && (size <= Page::kMaxHeapObjectSize))
|
|
|
| -#define ASSERT_PAGE_OFFSET(offset) \
|
| - ASSERT((Page::kObjectStartOffset <= offset) \
|
| +#define ASSERT_PAGE_OFFSET(offset) \
|
| + ASSERT((Page::kObjectStartOffset <= offset) \
|
| && (offset <= Page::kPageSize))
|
|
|
| -#define ASSERT_MAP_PAGE_INDEX(index) \
|
| +#define ASSERT_MAP_PAGE_INDEX(index) \
|
| ASSERT((0 <= index) && (index <= MapSpace::kMaxMapPageIndex))
|
|
|
|
|
| @@ -106,11 +109,8 @@
|
| // For this reason we add an offset to get room for the Page data at the start.
|
| //
|
| // The mark-compact collector transforms a map pointer into a page index and a
|
| -// page offset. The map space can have up to 1024 pages, and 8M bytes (1024 *
|
| -// 8K) in total. Because a map pointer is aligned to the pointer size (4
|
| -// bytes), 11 bits are enough to encode the page offset. 21 bits (10 for the
|
| -// page index + 11 for the offset in the page) are required to encode a map
|
| -// pointer.
|
| +// page offset. The excact encoding is described in the comments for
|
| +// class MapWord in objects.h.
|
| //
|
| // The only way to get a page pointer is by calling factory methods:
|
| // Page* p = Page::FromAddress(addr); or
|
| @@ -212,9 +212,6 @@
|
| static void set_rset_state(RSetState state) { rset_state_ = state; }
|
| #endif
|
|
|
| - // 8K bytes per page.
|
| - static const int kPageSizeBits = 13;
|
| -
|
| // Page size in bytes. This must be a multiple of the OS page size.
|
| static const int kPageSize = 1 << kPageSizeBits;
|
|
|
| @@ -514,7 +511,7 @@
|
| #endif
|
|
|
| // Due to encoding limitation, we can only have 8K chunks.
|
| - static const int kMaxNofChunks = 1 << Page::kPageSizeBits;
|
| + static const int kMaxNofChunks = 1 << kPageSizeBits;
|
| // If a chunk has at least 16 pages, the maximum heap size is about
|
| // 8K * 8K * 16 = 1G bytes.
|
| #ifdef V8_TARGET_ARCH_X64
|
|
|