Revision: 18774
Author:   [email protected]
Date:     Thu Jan 23 12:13:20 2014 UTC
Log: Make the full object memory size of a page available for a single allocation.

BUG=
[email protected]

Review URL: https://codereview.chromium.org/145493004
http://code.google.com/p/v8/source/detail?r=18774

Modified:
 /branches/bleeding_edge/src/heap.cc
 /branches/bleeding_edge/src/spaces-inl.h
 /branches/bleeding_edge/src/spaces.h
 /branches/bleeding_edge/test/mjsunit/mjsunit.status

=======================================
--- /branches/bleeding_edge/src/heap.cc Wed Jan 22 12:07:14 2014 UTC
+++ /branches/bleeding_edge/src/heap.cc Thu Jan 23 12:13:20 2014 UTC
@@ -2936,7 +2936,7 @@
   // Statically ensure that it is safe to allocate heap numbers in paged
   // spaces.
   int size = HeapNumber::kSize;
-  STATIC_ASSERT(HeapNumber::kSize <= Page::kNonCodeObjectAreaSize);
+  STATIC_ASSERT(HeapNumber::kSize <= Page::kMaxNonCodeHeapObjectSize);
   AllocationSpace space = SelectSpace(size, OLD_DATA_SPACE, pretenure);

   Object* result;
@@ -2952,7 +2952,7 @@

 MaybeObject* Heap::AllocateCell(Object* value) {
   int size = Cell::kSize;
-  STATIC_ASSERT(Cell::kSize <= Page::kNonCodeObjectAreaSize);
+  STATIC_ASSERT(Cell::kSize <= Page::kMaxNonCodeHeapObjectSize);

   Object* result;
   { MaybeObject* maybe_result = AllocateRaw(size, CELL_SPACE, CELL_SPACE);
@@ -2966,7 +2966,7 @@

 MaybeObject* Heap::AllocatePropertyCell() {
   int size = PropertyCell::kSize;
-  STATIC_ASSERT(PropertyCell::kSize <= Page::kNonCodeObjectAreaSize);
+  STATIC_ASSERT(PropertyCell::kSize <= Page::kMaxNonCodeHeapObjectSize);

   Object* result;
   MaybeObject* maybe_result =
@@ -5348,7 +5348,7 @@

 MaybeObject* Heap::AllocateSymbol() {
   // Statically ensure that it is safe to allocate symbols in paged spaces.
-  STATIC_ASSERT(Symbol::kSize <= Page::kNonCodeObjectAreaSize);
+  STATIC_ASSERT(Symbol::kSize <= Page::kMaxNonCodeHeapObjectSize);

   Object* result;
   MaybeObject* maybe =
=======================================
--- /branches/bleeding_edge/src/spaces-inl.h    Mon Nov 11 17:46:08 2013 UTC
+++ /branches/bleeding_edge/src/spaces-inl.h    Thu Jan 23 12:13:20 2014 UTC
@@ -165,7 +165,7 @@
                        Executability executable,
                        PagedSpace* owner) {
   Page* page = reinterpret_cast<Page*>(chunk);
-  ASSERT(page->area_size() <= kNonCodeObjectAreaSize);
+  ASSERT(page->area_size() <= kMaxNonCodeHeapObjectSize);
   ASSERT(chunk->owner() == owner);
   owner->IncreaseCapacity(page->area_size());
   owner->Free(page->area_start(), page->area_size());
=======================================
--- /branches/bleeding_edge/src/spaces.h        Tue Jan 21 19:30:27 2014 UTC
+++ /branches/bleeding_edge/src/spaces.h        Thu Jan 23 12:13:20 2014 UTC
@@ -779,15 +779,11 @@
   // Page size in bytes.  This must be a multiple of the OS page size.
   static const int kPageSize = 1 << kPageSizeBits;

-  // Object area size in bytes.
-  static const int kNonCodeObjectAreaSize = kPageSize - kObjectStartOffset;
-
   // Maximum object size that fits in a page. Objects larger than that size
// are allocated in large object space and are never moved in memory. This
   // also applies to new space allocation, since objects are never migrated
// from new space to large object space. Takes double alignment into account.
-  static const int kMaxNonCodeHeapObjectSize =
-      kNonCodeObjectAreaSize - kPointerSize;
+ static const int kMaxNonCodeHeapObjectSize = kPageSize - kObjectStartOffset;

   // Page size mask.
   static const intptr_t kPageAlignmentMask = (1 << kPageSizeBits) - 1;
@@ -2013,7 +2009,7 @@
     (1 << MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING) |
     (1 << MemoryChunk::SCAN_ON_SCAVENGE);

-  static const int kAreaSize = Page::kNonCodeObjectAreaSize;
+  static const int kAreaSize = Page::kMaxNonCodeHeapObjectSize;

   inline NewSpacePage* next_page() const {
     return static_cast<NewSpacePage*>(next_chunk());
@@ -2673,7 +2669,7 @@
   virtual void VerifyObject(HeapObject* obj);

  private:
- static const int kMapsPerPage = Page::kNonCodeObjectAreaSize / Map::kSize; + static const int kMapsPerPage = Page::kMaxNonCodeHeapObjectSize / Map::kSize;

   // Do map space compaction if there is a page gap.
   int CompactionThreshold() {
=======================================
--- /branches/bleeding_edge/test/mjsunit/mjsunit.status Thu Jan 23 10:54:30 2014 UTC +++ /branches/bleeding_edge/test/mjsunit/mjsunit.status Thu Jan 23 12:13:20 2014 UTC
@@ -35,9 +35,6 @@
   # BUG(v8:2921).
   'debug-step-4-in-frame': [PASS, FAIL, SLOW],

-  # TODO(hpayer): Investigate.
-  'json2': [PASS, FLAKY],
-
##############################################################################
   # Fails.
   'regress/regress-1119': [FAIL],

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to