1
0
mirror of https://github.com/roytam1/UXP.git synced 2026-05-26 23:18:26 +00:00
Commit Graph

51 Commits

Author SHA1 Message Date
Moonchild 1f7d8d3a36 [memory] Guard OOM reporter from incorrectly reported (too small) size. 2023-09-27 11:41:51 +08:00
Moonchild 0548a39ff3 [memory] Remove likely/unlikely duplication in mozalloc.
We already have this in mozilla/Likely.h, use that instead.
2023-09-27 11:41:24 +08:00
Moonchild e28af7d938 [memory] Remove MOZALLOC_INLINE
MOZ_ALWAYS_INLINE_EVEN_DEBUG is always defined through
mozilla/Attributes.h, so the fallbacks are never used in practice.
2023-09-27 11:40:10 +08:00
Jeremy Andrews ccd69e165d Issue #1956 - Allow building with newer MSVC versions.
(P.S.: this rev is partly imported from upstream, without binaries. -Roy)
2023-06-23 16:03:03 +08:00
Moonchild 2f117eecaa Issue #1656 - Remove more vim control lines.
Vim control lines were re-introduced or not entirely cleaned up.
This nukes them again.
Removing from embedding, extensions, gfx, hal, ipc, layout, mailnews,
media and memory. More to come.
2023-05-05 22:57:19 +08:00
Job Bautista d8cd769cf0 Issue #2184 - Increase mozjemalloc page cache size from 1 MiB to 16 MiB.
We don't need the reduced memory overhead as we are not using e10s. This
should speed up JS by a point according to Speedometer 2.1.
2023-04-05 07:12:04 +08:00
Brian Smith d5c43d1d35 Issue #1829 - Readd code cleanup that is not Mac related that got clobbered by reverting Issue #1751 2022-05-04 10:01:23 +08:00
Brian Smith 13fcc4a046 Issue #1829 - Revert "Issue #1751" 2022-05-04 09:40:24 +08:00
roytam1 8fb608b22d remove OSX support 2021-11-10 09:10:25 +08:00
Moonchild a4b0f333ba Issue #1751 -- Remove XP_MACOSX conditionals from the rest of the tree.
This also removes some PP abuse and takes file entries out of PP when no longer
needed without XP_MACOSX conditionals.
2021-05-07 09:53:59 +08:00
Moonchild 2f27335cc4 Issue #1751 -- Remove XP_DARWIN 2021-05-05 10:27:04 +08:00
Moonchild 348c6604be Issue #1053 - Remove MOZ_WIDGET_ANDROID and IDB_MOBILE 2021-03-12 08:59:50 +08:00
Olivier Certner 5edc686524 Issue #1699 - Follow-up: mozjemalloc: Fix build by excluding some irrelevant init_lock code
This had been initially dealt with in issue #1699's commits, but one of them
was in the end reverted, which caused this problem (this change should have
been done there).
2021-02-12 10:49:53 +08:00
Olivier Certner 387487ffb6 Issue #1730 - Part 1: Interpose malloc even on RTLD_DEEPBIND presence
New FreeBSD versions have introduced RTLD_DEEPBIND (see dlopen(3)), which
triggers a provoked build error to be on the "safe" side.

Indeed, improper use of RTLD_DEEPBIND could cause malloc interposing not to
work on specific libraries. This would happen for libraries that provide their
own malloc/free and exchange pointers with other libraries or the main program,
one allocating an area and another one deallocating it.

It seems it happened for glibc, which is not a concern on FreeBSD, and for the
Flash Player (not a concern either, there is no native Flash Player). Moreover,
there is only a single reference to RTLD_DEEPBIND in the whole platform
currently, namely in the WebRTC code, but the corresponding code chunk is
compiled-in only on Linux (and this library doesn't seem to redefine malloc
functions anyway). So I don't see how a problem could happen. Additionally,
Pale Moon, which is my focus, doesn't use WebRTC.

Corresponding Mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=493541
2021-02-12 10:49:50 +08:00
Olivier Certner b7e6f5fd45 Issue #1699 - Part 3b: mozjemalloc: Bootstrap allocator, early diversion for FreeBSD
Coded a simple memory allocator meant to be used during jemalloc bootstrap
(malloc_init_hard()). Although protected by "#ifdef __FreeBSD__", it is not
FreeBSD-specific: Any POSIX platform could use it.

Hook it so that it is used in place of jemalloc's own routines while
malloc_init_hard() is executing or memory for mutexes is being
allocated. Currently, 'malloc', 'calloc', '*memalign' and 'free' are diverted
during init or lock initializations.

Details are quite complex, see the big comment block starting with "There are
several problematic interactions between FreeBSD's libthr and this jemalloc."
for more explanations.

Also replaced ad-hoc BSD code to determine the number of CPUs with 'sysconf',
which is POSIX-compliant (and supported on modern BSDs).
2021-01-08 17:40:53 +08:00
Brian Smith 0fb2ab04a6 Issue #1667 - Part 1: Define _pthread_self if it is not already defined in jemalloc 2020-11-20 09:30:57 +08:00
Moonchild 0cd673d720 Issue #1656 - Part 6: Clean up the build files 2020-09-25 22:04:23 +08:00
Moonchild 8c395520d9 Issue #1656 - Part 1: Nuke most vim config lines in the tree.
Since these are just interpreted comments, there's 0 impact on actual code.
This removes all lines that match /* vim: set(.*)tw=80: */ with S&R -- there are
a few others scattered around which will be removed manually in a second part.
2020-09-25 22:04:12 +08:00
athenian200 c9ca3dbaca Issue #1571 - Remove JEMALLOC_USES_MAP_ALIGN and fix 48-bit addressing on SunOS AMD64.
The JEMALLOC_USES_MAP_ALIGN code has turned out to be worse than useless, and in fact it breaks 64-bit SunOS. It's very old and turned out not to be needed anymore because the way the memory allocator works has changed since it was implemented. It prevented a fix I tried for 48-bit addressing from working properly. However, without either this code or the 48-bit addressing fix, the 64-bit version won't even start, which is why I thought the code was still needed.

https://bugzilla.mozilla.org/show_bug.cgi?id=457189

https://hg.mozilla.org/mozilla-central/rev/a26c500b98ab

The 48-bit addressing fix is based on code found here:

https://github.com/OpenIndiana/oi-userland/blob/oi/hipster/components/web/firefox/patches/patch-js_src_gc_Memory.cpp.patch

I already applied these changes to js/src/gc/Memory.cpp, but as I was looking through jemalloc.c I saw that there were very similar ifdefs for Linux on SPARC as the ones I'd had to enaable in Memory.cpp, but for whatever reason the patches I found didn't touch them. So I tried doing for jemalloc.c what was already done for Memory.cpp, and it worked (but only after I removed the map align code).
2020-06-06 07:20:32 +08:00
JMadgwick 1640ee7bc6 Issue #1471 - Fix building on sparc64 Linux
Correct various pre-processor defines for sparc64 and in mozjemalloc use the JS arm64 allocator on Linux/sparc64.
This corrects build problems opn Linux sparc64 and is in line with bugzilla bug #1275204.
2020-04-03 09:26:50 +08:00
Matt A. Tobin f1182eaec9 Issue #1053 - Remove android support from memory 2020-02-27 07:31:24 +08:00
wolfbeast edb91248b1 Issue #1307 - Part 8: Remove deprecated sysctl.h inclusion. 2019-12-06 07:30:48 +08:00
wolfbeast 758d4d320e Issue #1307 - Part 7: Add missing MALLOC_STATS 2019-12-06 07:30:46 +08:00
wolfbeast 62e392725c Issue #1307 - Part 6: Remove dead code behind PTHREAD_MMAP_UNALIGNED_TSD 2019-12-06 07:30:44 +08:00
wolfbeast 8cd5f01ad5 Issue #1307 - Part 5: Remove allocation tracing.
Pointless for debugging and a major performance sink.
2019-12-06 07:30:43 +08:00
wolfbeast 442f6b3252 Issue #1307 - Part 4: Stop using variable-length arrays.
"USING VLA'S IS ACTIVELY STUPID! It generates much more code, and much
slower code (and more fragile code), than just using a fixed key size
would have done." -- Linus Torvalds
2019-12-06 07:30:41 +08:00
wolfbeast 252a22d066 Issue #1307 - Part 3: Assume MOZ_MEMORY is always enabled.
We never use jemalloc without MOZ_MEMORY surrounding code (mostly a
FreeBSD concession which doesn't work anyway). This allows us to get rid
of the "poor man's mutex" (CPU-based spinlock) in mozjemalloc.
2019-12-06 07:30:40 +08:00
wolfbeast 724b852a34 Issue #1307 - Part 2: Remove disabled code blocks 2019-12-06 07:30:38 +08:00
wolfbeast 2224bed064 Issue #1307 - Part 1: Remove MALLOC_VALIDATE
This basic validation is hard-set to always-on, so no point in keeping
it conditional since we basically always want this rudimentary pointer
validation to be done.
2019-12-06 07:30:36 +08:00
athenian200 5476f8090f MoonchildProductions#1251 - Part 13: Redefining abort in C++ requires extern "C"
https://bugzilla.mozilla.org/show_bug.cgi?id=1375467

I would ifdef this, but it's been in Firefox since version of 56, and Petr Sumbara's explanation as to why it's wrong in the first place is so detailed that it's pretty obvious the code wasn't technically doing things properly to begin with.

Basically, they tried to redefine a system function after including the header file that declares it, and it caused problems on Solaris because libc functions are imported into the C++ std namespace in a different way that also complies with standards. So the existing implementation is technically bad code on all platforms, the Solaris implementation just uncovered the lack of standards compliance in the Mozilla code.
2019-11-04 11:52:33 +08:00
athenian200 b652dd59ae MoonchildProductions#1251 - Part 7: All the posix_m* memory-related stuff, gathered together.
https://bugzilla.mozilla.org/show_bug.cgi?id=1158445
https://bugzilla.mozilla.org/show_bug.cgi?id=963983
https://bugzilla.mozilla.org/show_bug.cgi?id=1542758

Solaris madvise and malign don't perfectly map to their POSIX counterparts, and some Linux versions (especially Android) don't define the POSIX counterparts at all, so options are limited. Ideally posix_madvise and posix_malign should be the safer and more portable options for all platforms.
2019-11-04 11:52:22 +08:00
athenian200 6de8a0f12d MoonchildProductions#1251 - Part 1: Restore initial Solaris support, fixed up.
Compared with what Pale Moon had for Solaris originally, this is mostly the same zero point I started patching from, but I've made the following changes here after reviewing all this initial code I never looked at closely before.

1. In package-manifest.in for both Basilisk and Pale Moon, I've made the SPARC code for libfreebl not interefere with the x86 code, use the proper build flags, and also updated it to allow a SPARC64 build which is more likely to be used than the 32-bit SPARC code we had there.

2. See Mozilla bug #832272 and the old rules.mk patch from around Firefox 30 in oracle/solaris-userland. I believe they screwed up NSINSTALL on Solaris when they were trying to streamline the NSS buildsystem, because they started having unexplained issues with it around that time after Firefox 22 that they never properly resolved until Mozilla began building NSS with gyp files. I'm actually not even sure how relevant the thing they broke actually is to Solaris at this point, bug 665509 is so old it predates Firefox itself and goes back to the Mozilla suite days. I believe $(INSTALL) -t was wrong, and they meant $(NSINSTALL) -t because that makes more sense and is closer to what was there originally. It's what they have for WINNT, and it's possible a fix more like that could serve for Solaris as well. Alternatively, we could get rid of all these half-broken Makefiles and start building NSS with gyp files like Mozilla did.

3. I've completely cut out support for the Sun compiler and taken into account the reality that everyone builds Firefox (and therefore its forks) with GCC now on Solaris. This alone helped clean up a lot of the uglier parts of the code.

4. I've updated all remaining SOLARIS build flags to the newer XP_SOLARIS, because the SOLARIS flag is no longer set when building Solaris.

5. I've confirmed the workaround in gtxFontconfigFonts.cpp is no longer necessary. The Solaris people got impatient about implementing a half-baked patch for a fontconfig feature that wasn't ready yet back in 2009, and somehow convinced Mozilla to patch their software to work around it when really they should have just fixed or removed their broken fontconfig patch. The feature they wanted has since been implemented properly, and no version of Solaris still uses the broken patch that required this fix. If anyone had ever properly audited this code, it would have been removed a long time ago.
2019-11-04 11:52:13 +08:00
wolfbeast 0a50553673 Issue #187: Remove solaris 1st party code OS checks. 2019-04-04 20:26:29 +08:00
wolfbeast 78d61fd2b1 Issue #187: Remove solaris conditional code. 2019-04-04 20:26:26 +08:00
trav90 cab0faa710 Silence the -Wuninitialized warning in mozjemalloc
GCC 7+ warns about too many false positives.
2019-02-16 00:12:52 +08:00
wolfbeast 1bb41a8652 Revert "Switch to using a single memory allocation arena"
This reverts commit 4ceb21241eacac2911f2fed846359215870f121f.
2019-02-16 00:12:21 +08:00
wolfbeast 91c79f2202 Switch to using a single memory allocation arena 2019-02-16 00:12:05 +08:00
wolfbeast 92fbd042f5 Remove the Dark Matter Detector (DMD) Memeory debugger component.
This resolves #376.
2019-02-15 23:58:31 +08:00
wolfbeast 2531de02eb Remove MOZ_WIDGET_GONK [2/2]
Tag #288
2019-02-15 23:57:10 +08:00
wolfbeast 09f98d848b Remove the unused and rudimentary arena load balancer.
Lock contention is not something we'd easily have to deal with in our application.
This simplifies our code.
2019-02-15 23:52:21 +08:00
wolfbeast 30e71338fd Make our allocator use multiple arenas based on number of CPU cores. 2019-02-15 23:52:20 +08:00
wolfbeast 7ea1703d6b Remove single-threaded considerations.
We assume our applications are always going to have multithreaded access to the malloc.
2019-02-15 23:52:17 +08:00
wolfbeast 46548c6098 Update credits in BSD-licensed files. 2019-02-15 23:52:15 +08:00
wolfbeast dd3affa0db Remove jemalloc 4 leftover conditional. 2019-02-15 23:52:14 +08:00
wolfbeast 7f3296be1d Remove MOZ_REPLACE_JEMALLOC
This was only defined when building jemalloc4 as a replace-malloc library.
2019-02-15 23:52:12 +08:00
wolfbeast d804882857 Remove jemalloc 4 from our tree. 2019-02-15 23:52:10 +08:00
wolfbeast 797ca533f9 Remove support for making jemalloc4 the default memory allocator. 2019-02-15 23:52:09 +08:00
wolfbeast c76d18a40d Remove support for system jemalloc. 2019-02-15 23:52:07 +08:00
Mike Hommey 6837efcaef Bug 1424709 - Force disable the OSX system "nano allocator". r=spohl, a=RyanVM
We're not actually using it, and it messes up with the zone allocator in
mozjemalloc after fork(). See the lengthy analysis in
https://bugzilla.mozilla.org/show_bug.cgi?id=1424709#c34 and following.

--HG--
extra : rebase_source : b191048290a907cc7668ad7ab6369ef8661f31dc
extra : intermediate-source : 45c5d467a46077dcc3ccd59feafd0c2784432fef
extra : source : bf1efa161edb20a83fe8db2f96c51f4e66880153
2019-02-15 23:36:57 +08:00
trav90 cad73db0f2 Use |noexcept| instead of an exception-specification in mozalloc.h
We are using |throw(std::bad_alloc)|, but dynamic exception specifications have been deprecated in C++11. The C++11 equivalent is |noexcept(false)|. This causes build warning spam when using newer compilers such as GCC 7.x.
2019-02-15 23:35:46 +08:00