Modify SizeOfFirstPage to take ool constant pool into account.
authorrmcilroy@chromium.org <rmcilroy@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 20 Aug 2014 14:40:53 +0000 (14:40 +0000)
committerrmcilroy@chromium.org <rmcilroy@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 20 Aug 2014 14:40:53 +0000 (14:40 +0000)
The OOL constant pool places constants in the old pointer space rather than the code space
which makes test-heap/ReleaseOverReservedPages fail. Modify SizeOfFirstPage to
increase the initial size of old-pointer space by the size of the constant pool and
decrease the code space by a corresponding amount.

R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/479553002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23241 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/heap/spaces.cc

index 9be53e0..1ed885c 100644 (file)
@@ -990,10 +990,13 @@ bool PagedSpace::Expand() {
 
 
 intptr_t PagedSpace::SizeOfFirstPage() {
+  // If using an ool constant pool then transfer the constant pool allowance
+  // from the code space to the old pointer space.
+  static const int constant_pool_delta = FLAG_enable_ool_constant_pool ? 48 : 0;
   int size = 0;
   switch (identity()) {
     case OLD_POINTER_SPACE:
-      size = 112 * kPointerSize * KB;
+      size = (96 + constant_pool_delta) * kPointerSize * KB;
       break;
     case OLD_DATA_SPACE:
       size = 192 * KB;
@@ -1015,9 +1018,9 @@ intptr_t PagedSpace::SizeOfFirstPage() {
         // upgraded to handle small pages.
         size = AreaSize();
       } else {
-        size =
-            RoundUp(480 * KB * FullCodeGenerator::kBootCodeSizeMultiplier / 100,
-                    kPointerSize);
+        size = RoundUp((480 - constant_pool_delta) * KB *
+                           FullCodeGenerator::kBootCodeSizeMultiplier / 100,
+                       kPointerSize);
       }
       break;
     }