Adde mozilla-746112 patch for ppc
This commit is contained in:
parent
c5969d139b
commit
b13eeb8192
86
mozilla-746112.patch
Normal file
86
mozilla-746112.patch
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
diff -up xulrunner-17.0/mozilla-beta/js/src/gc/Heap.h.746112 xulrunner-17.0/mozilla-beta/js/src/gc/Heap.h
|
||||||
|
--- xulrunner-17.0/mozilla-beta/js/src/gc/Heap.h.746112 2012-10-17 16:32:43.000000000 +0200
|
||||||
|
+++ xulrunner-17.0/mozilla-beta/js/src/gc/Heap.h 2012-10-24 14:48:12.186640489 +0200
|
||||||
|
@@ -103,26 +103,31 @@ struct Cell
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * Page size is 4096 by default, except for SPARC, where it is 8192.
|
||||||
|
+ * Page size must be static to support our arena pointer optimizations, so we
|
||||||
|
+ * are forced to support each platform with non-4096 pages as a special case.
|
||||||
|
+ * Note: The freelist supports a maximum arena shift of 15.
|
||||||
|
* Note: Do not use JS_CPU_SPARC here, this header is used outside JS.
|
||||||
|
* Bug 692267: Move page size definition to gc/Memory.h and include it
|
||||||
|
* directly once jsgc.h is no longer an installed header.
|
||||||
|
*/
|
||||||
|
#if defined(SOLARIS) && (defined(__sparc) || defined(__sparcv9))
|
||||||
|
const size_t PageShift = 13;
|
||||||
|
+const size_t ArenaShift = PageShift;
|
||||||
|
+#elif defined(__powerpc__)
|
||||||
|
+const size_t PageShift = 16;
|
||||||
|
+const size_t ArenaShift = 12;
|
||||||
|
#else
|
||||||
|
const size_t PageShift = 12;
|
||||||
|
+const size_t ArenaShift = PageShift;
|
||||||
|
#endif
|
||||||
|
const size_t PageSize = size_t(1) << PageShift;
|
||||||
|
+const size_t ArenaSize = size_t(1) << ArenaShift;
|
||||||
|
+const size_t ArenaMask = ArenaSize - 1;
|
||||||
|
|
||||||
|
const size_t ChunkShift = 20;
|
||||||
|
const size_t ChunkSize = size_t(1) << ChunkShift;
|
||||||
|
const size_t ChunkMask = ChunkSize - 1;
|
||||||
|
|
||||||
|
-const size_t ArenaShift = PageShift;
|
||||||
|
-const size_t ArenaSize = PageSize;
|
||||||
|
-const size_t ArenaMask = ArenaSize - 1;
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
* This is the maximum number of arenas we allow in the FreeCommitted state
|
||||||
|
* before we trigger a GC_SHRINK to release free arenas to the OS.
|
||||||
|
diff -up xulrunner-17.0/mozilla-beta/js/src/jsgc.cpp.746112 xulrunner-17.0/mozilla-beta/js/src/jsgc.cpp
|
||||||
|
--- xulrunner-17.0/mozilla-beta/js/src/jsgc.cpp.746112 2012-10-17 16:32:44.000000000 +0200
|
||||||
|
+++ xulrunner-17.0/mozilla-beta/js/src/jsgc.cpp 2012-10-24 14:46:28.253638095 +0200
|
||||||
|
@@ -251,6 +251,13 @@ static const int BackgroundPhaseLength[]
|
||||||
|
sizeof(BackgroundPhaseStrings) / sizeof(AllocKind)
|
||||||
|
};
|
||||||
|
|
||||||
|
+/* Unused memory decommiting requires the arena size match the page size. */
|
||||||
|
+static bool
|
||||||
|
+DecommitEnabled()
|
||||||
|
+{
|
||||||
|
+ return PageSize == ArenaSize;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
#ifdef DEBUG
|
||||||
|
void
|
||||||
|
ArenaHeader::checkSynchronizedWithFreeList() const
|
||||||
|
@@ -742,7 +749,8 @@ Chunk::fetchNextDecommittedArena()
|
||||||
|
decommittedArenas.unset(offset);
|
||||||
|
|
||||||
|
Arena *arena = &arenas[offset];
|
||||||
|
- MarkPagesInUse(arena, ArenaSize);
|
||||||
|
+ if (DecommitEnabled())
|
||||||
|
+ MarkPagesInUse(arena, ArenaSize);
|
||||||
|
arena->aheader.setAsNotAllocated();
|
||||||
|
|
||||||
|
return &arena->aheader;
|
||||||
|
@@ -2731,7 +2739,7 @@ DecommitArenasFromAvailableList(JSRuntim
|
||||||
|
chunk->removeFromAvailableList();
|
||||||
|
|
||||||
|
size_t arenaIndex = Chunk::arenaIndex(aheader->arenaAddress());
|
||||||
|
- bool ok;
|
||||||
|
+ bool ok = true;
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* If the main thread waits for the decommit to finish, skip
|
||||||
|
@@ -2741,7 +2749,8 @@ DecommitArenasFromAvailableList(JSRuntim
|
||||||
|
Maybe<AutoUnlockGC> maybeUnlock;
|
||||||
|
if (!rt->isHeapBusy())
|
||||||
|
maybeUnlock.construct(rt);
|
||||||
|
- ok = MarkPagesUnused(aheader->getArena(), ArenaSize);
|
||||||
|
+ if (DecommitEnabled())
|
||||||
|
+ ok = MarkPagesUnused(aheader->getArena(), ArenaSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ok) {
|
@ -83,6 +83,7 @@ Patch200: thunderbird-8.0-enable-addons.patch
|
|||||||
# PPC fixes
|
# PPC fixes
|
||||||
Patch300: xulrunner-16.0-jemalloc-ppc.patch
|
Patch300: xulrunner-16.0-jemalloc-ppc.patch
|
||||||
Patch301: rhbz-855923.patch
|
Patch301: rhbz-855923.patch
|
||||||
|
Patch302: mozilla-746112.patch
|
||||||
|
|
||||||
%if %{official_branding}
|
%if %{official_branding}
|
||||||
# Required by Mozilla Corporation
|
# Required by Mozilla Corporation
|
||||||
@ -171,6 +172,7 @@ cd %{tarballdir}
|
|||||||
cd mozilla
|
cd mozilla
|
||||||
%patch8 -p3 -b .secondary-ipc
|
%patch8 -p3 -b .secondary-ipc
|
||||||
%patch104 -p1 -b .gcc47
|
%patch104 -p1 -b .gcc47
|
||||||
|
%patch302 -p2 -b .746112
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
%patch200 -p1 -b .addons
|
%patch200 -p1 -b .addons
|
||||||
|
Loading…
Reference in New Issue
Block a user