https://bugs.dragonflybsd.org/https://bugs.dragonflybsd.org/favicon.ico?16293952082010-04-04T22:18:27ZDragonFlyBSD bugtrackerDragonFlyBSD - Bug #1532: jemalloc doesn't work on DragonFlyhttps://bugs.dragonflybsd.org/issues/1532?journal_id=83942010-04-04T22:18:27Zsjg
<ul></ul><p>grab</p> DragonFlyBSD - Bug #1532: jemalloc doesn't work on DragonFlyhttps://bugs.dragonflybsd.org/issues/1532?journal_id=100222011-08-01T20:45:46Zalexh
<ul></ul><p>Sam, have you looked into this? jemalloc seems to use _SPINLOCK in some cases,<br />depending on how the defines are set up, short grep:</p>
<p>./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-#else<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c:static<br />malloc_mutex_t init_lock = {_SPINLOCK_INITIALIZER};<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-#endif<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-<br />--<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c- <br />return (true);<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-#elif<br />defined(MOZ_MEMORY_DARWIN)<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c: mutex->lock =<br />OS_SPINLOCK_INIT;<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-#elif<br />defined(MOZ_MEMORY_LINUX) && !defined(MOZ_MEMORY_ANDROID)<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c- <br />pthread_mutexattr_t attr;<br />--<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c- return<br />(true);<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-#else<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c: static const<br />spinlock_t lock = <em>SPINLOCK_INITIALIZER;<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c- mutex->lock = lock;<br />--<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-#else<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c- if (</em>_isthreaded)<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c: <br /><em><abbr title="&mutex->lock">SPINLOCK</abbr>;<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-#endif<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-}<br />--<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c- <br />return (true);<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-#elif<br />defined(MOZ_MEMORY_DARWIN)<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c: lock->lock =<br />OS_SPINLOCK_INIT;<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-#elif<br />defined(MOZ_MEMORY_LINUX) && !defined(MOZ_MEMORY_ANDROID)<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c- <br />pthread_mutexattr_t attr;<br />--<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c- return<br />(true);<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-#else<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c: lock->lock =<br />_SPINLOCK_INITIALIZER;<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-#endif<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c- return (false);<br />--<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-#else<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c- if (</em>_isthreaded)<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c: <br />_SPINLOCK(&lock->lock);<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-#endif<br />./www/firefox/work/mozilla-release/memory/jemalloc/jemalloc.c-}</p>
<p>So in principle it shouldn't be too hard to get it to work. I'll have a look<br />myself tonight and see what can be done, but maybe you've already made some<br />progress on this?</p>
<p>Cheers,<br />Alex</p> DragonFlyBSD - Bug #1532: jemalloc doesn't work on DragonFlyhttps://bugs.dragonflybsd.org/issues/1532?journal_id=100242011-08-02T07:55:41Zvsrinivasvsrinivas@ops101.org
<ul></ul><p>In my homedirectory on leaf, there is a jemalloc subdir; that is a version<br />ported to run on DragonFly. Diff against the version in FreeBSD 8 for exactly<br />what is changed.</p> DragonFlyBSD - Bug #1532: jemalloc doesn't work on DragonFlyhttps://bugs.dragonflybsd.org/issues/1532?journal_id=100252011-08-02T08:14:25Zvsrinivasvsrinivas@ops101.org
<ul></ul><p>Looking into it, my port just uses _SPINLOCK for malloc_mutexes; to be able to<br />do so, we'd need to include /usr/src/lib/libc/include/libc_private.h ; it'd be a<br />bit of a shame if Firefox's code had to do the same.</p>
<p>Under what conditions are _SPINLOCKs used?</p>