ppc-xpcshell.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Sat, 14 Sep 2013 21:02:47 +0200
branchesr17
changeset 665 efc8a8a62a09
permissions -rw-r--r--
17.0.9esr
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
665
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     1
Index: mozilla/js/src/gc/Heap.h
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     2
===================================================================
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     3
--- mozilla.orig/js/src/gc/Heap.h
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     4
+++ mozilla/js/src/gc/Heap.h
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     5
@@ -110,19 +110,22 @@ struct Cell
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     6
  */
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     7
 #if defined(SOLARIS) && (defined(__sparc) || defined(__sparcv9))
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     8
 const size_t PageShift = 13;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     9
+const size_t ArenaShift = PageShift;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    10
+#elif defined(__powerpc__)
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    11
+const size_t PageShift = 16;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    12
+const size_t ArenaShift = 12;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    13
 #else
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    14
 const size_t PageShift = 12;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    15
+const size_t ArenaShift = PageShift;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    16
 #endif
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    17
 const size_t PageSize = size_t(1) << PageShift;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    18
+const size_t ArenaSize = size_t(1) << ArenaShift;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    19
+const size_t ArenaMask = ArenaSize - 1;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    20
 
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    21
 const size_t ChunkShift = 20;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    22
 const size_t ChunkSize = size_t(1) << ChunkShift;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    23
 const size_t ChunkMask = ChunkSize - 1;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    24
 
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    25
-const size_t ArenaShift = PageShift;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    26
-const size_t ArenaSize = PageSize;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    27
-const size_t ArenaMask = ArenaSize - 1;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    28
-
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    29
 /*
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    30
  * This is the maximum number of arenas we allow in the FreeCommitted state
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    31
  * before we trigger a GC_SHRINK to release free arenas to the OS.
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    32
Index: mozilla/js/src/gc/Memory.cpp
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    33
===================================================================
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    34
--- mozilla.orig/js/src/gc/Memory.cpp
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    35
+++ mozilla/js/src/gc/Memory.cpp
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    36
@@ -15,6 +15,15 @@
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    37
 namespace js {
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    38
 namespace gc {
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    39
 
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    40
+/* Unused memory decommiting requires the arena size match the page size. */
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    41
+extern const size_t PageSize;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    42
+extern const size_t ArenaSize;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    43
+static bool
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    44
+DecommitEnabled()
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    45
+{
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    46
+    return PageSize == ArenaSize;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    47
+}
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    48
+
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    49
 #if defined(XP_WIN)
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    50
 #include "jswin.h"
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    51
 #include <psapi.h>
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    52
@@ -83,6 +92,9 @@ UnmapPages(void *p, size_t size)
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    53
 bool
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    54
 MarkPagesUnused(void *p, size_t size)
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    55
 {
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    56
+    if (!DecommitEnabled())
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    57
+        return false;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    58
+
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    59
     JS_ASSERT(uintptr_t(p) % PageSize == 0);
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    60
     LPVOID p2 = VirtualAlloc(p, size, MEM_RESET, PAGE_READWRITE);
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    61
     return p2 == p;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    62
@@ -352,6 +364,9 @@ UnmapPages(void *p, size_t size)
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    63
 bool
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    64
 MarkPagesUnused(void *p, size_t size)
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    65
 {
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    66
+    if (!DecommitEnabled())
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    67
+        return false;
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    68
+
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    69
     JS_ASSERT(uintptr_t(p) % PageSize == 0);
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    70
     int result = madvise(p, size, MADV_DONTNEED);
efc8a8a62a09 17.0.9esr
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    71
     return result != -1;