Date: Thu, 15 Jun 2017 10:31:57 +0200 From: "O. Hartmann" <ohartmann@walstatt.org> To: Jason Evans <jasone@FreeBSD.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r319971 - in head: contrib/jemalloc contrib/jemalloc/doc contrib/jemalloc/include/jemalloc contrib/jemalloc/include/jemalloc/internal contrib/jemalloc/src include lib/libc/stdlib/jemalloc Message-ID: <20170615103157.43bf216e@freyja.zeit4.iv.bundesimmobilien.de> In-Reply-To: <201706150715.v5F7F6aT031218@repo.freebsd.org> References: <201706150715.v5F7F6aT031218@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 15 Jun 2017 07:15:06 +0000 (UTC) Jason Evans <jasone@FreeBSD.org> wrote: > Author: jasone > Date: Thu Jun 15 07:15:05 2017 > New Revision: 319971 > URL: https://svnweb.freebsd.org/changeset/base/319971 > > Log: > Update jemalloc to 5.0.0. > > Added: > head/contrib/jemalloc/include/jemalloc/internal/arena_externs.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/arena_inlines_a.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/arena_inlines_b.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/arena_structs_a.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/arena_structs_b.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/arena_types.h (contents, > props changed) head/contrib/jemalloc/include/jemalloc/internal/atomic_c11.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/atomic_gcc_atomic.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/atomic_gcc_sync.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/background_thread_externs.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/background_thread_inlines.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/background_thread_structs.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/base_externs.h (contents, > props changed) > head/contrib/jemalloc/include/jemalloc/internal/base_inlines.h (contents, > props changed) > head/contrib/jemalloc/include/jemalloc/internal/base_structs.h (contents, > props changed) head/contrib/jemalloc/include/jemalloc/internal/base_types.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/bit_util.h (contents, props > changed) head/contrib/jemalloc/include/jemalloc/internal/extent_dss.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/extent_externs.h (contents, > props changed) > head/contrib/jemalloc/include/jemalloc/internal/extent_inlines.h (contents, > props changed) > head/contrib/jemalloc/include/jemalloc/internal/extent_mmap.h (contents, > props changed) > head/contrib/jemalloc/include/jemalloc/internal/extent_structs.h (contents, > props changed) > head/contrib/jemalloc/include/jemalloc/internal/extent_types.h (contents, > props changed) head/contrib/jemalloc/include/jemalloc/internal/hooks.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_externs.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_includes.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_a.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_b.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_c.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_types.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/jemalloc_preamble.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/large_externs.h (contents, > props changed) head/contrib/jemalloc/include/jemalloc/internal/malloc_io.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/mutex_pool.h (contents, > props changed) head/contrib/jemalloc/include/jemalloc/internal/mutex_prof.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/prof_externs.h (contents, > props changed) > head/contrib/jemalloc/include/jemalloc/internal/prof_inlines_a.h (contents, > props changed) > head/contrib/jemalloc/include/jemalloc/internal/prof_inlines_b.h (contents, > props changed) > head/contrib/jemalloc/include/jemalloc/internal/prof_structs.h (contents, > props changed) head/contrib/jemalloc/include/jemalloc/internal/prof_types.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/rtree_tsd.h (contents, > props changed) head/contrib/jemalloc/include/jemalloc/internal/stats_tsd.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/sz.h (contents, props > changed) head/contrib/jemalloc/include/jemalloc/internal/tcache_externs.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/tcache_inlines.h (contents, > props changed) > head/contrib/jemalloc/include/jemalloc/internal/tcache_structs.h (contents, > props changed) > head/contrib/jemalloc/include/jemalloc/internal/tcache_types.h (contents, > props changed) > head/contrib/jemalloc/include/jemalloc/internal/tsd_generic.h (contents, > props changed) > head/contrib/jemalloc/include/jemalloc/internal/tsd_malloc_thread_cleanup.h > (contents, props changed) > head/contrib/jemalloc/include/jemalloc/internal/tsd_tls.h (contents, props > changed) head/contrib/jemalloc/include/jemalloc/internal/tsd_types.h > (contents, props changed) head/contrib/jemalloc/src/background_thread.c > (contents, props changed) head/contrib/jemalloc/src/extent_dss.c (contents, > props changed) head/contrib/jemalloc/src/extent_mmap.c (contents, props > changed) head/contrib/jemalloc/src/hooks.c (contents, props changed) > head/contrib/jemalloc/src/large.c (contents, props changed) > head/contrib/jemalloc/src/malloc_io.c (contents, props changed) > head/contrib/jemalloc/src/mutex_pool.c (contents, props changed) > head/contrib/jemalloc/src/sz.c (contents, props changed) Deleted: > head/contrib/jemalloc/include/jemalloc/internal/arena.h > head/contrib/jemalloc/include/jemalloc/internal/base.h > head/contrib/jemalloc/include/jemalloc/internal/chunk.h > head/contrib/jemalloc/include/jemalloc/internal/chunk_dss.h > head/contrib/jemalloc/include/jemalloc/internal/chunk_mmap.h > head/contrib/jemalloc/include/jemalloc/internal/extent.h > head/contrib/jemalloc/include/jemalloc/internal/huge.h > head/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal.h > head/contrib/jemalloc/include/jemalloc/internal/mb.h > head/contrib/jemalloc/include/jemalloc/internal/prof.h > head/contrib/jemalloc/include/jemalloc/internal/quarantine.h > head/contrib/jemalloc/include/jemalloc/internal/tcache.h > head/contrib/jemalloc/include/jemalloc/internal/valgrind.h > head/contrib/jemalloc/src/atomic.c head/contrib/jemalloc/src/chunk.c > head/contrib/jemalloc/src/chunk_dss.c head/contrib/jemalloc/src/chunk_mmap.c > head/contrib/jemalloc/src/huge.c head/contrib/jemalloc/src/mb.c > head/contrib/jemalloc/src/quarantine.c head/contrib/jemalloc/src/util.c > Modified: head/contrib/jemalloc/COPYING head/contrib/jemalloc/ChangeLog > head/contrib/jemalloc/FREEBSD-Xlist head/contrib/jemalloc/FREEBSD-diffs > head/contrib/jemalloc/FREEBSD-upgrade head/contrib/jemalloc/VERSION > head/contrib/jemalloc/doc/jemalloc.3 > head/contrib/jemalloc/include/jemalloc/internal/assert.h > head/contrib/jemalloc/include/jemalloc/internal/atomic.h > head/contrib/jemalloc/include/jemalloc/internal/bitmap.h > head/contrib/jemalloc/include/jemalloc/internal/ckh.h > head/contrib/jemalloc/include/jemalloc/internal/ctl.h > head/contrib/jemalloc/include/jemalloc/internal/hash.h > head/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_decls.h > head/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_defs.h > head/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_macros.h > head/contrib/jemalloc/include/jemalloc/internal/mutex.h > head/contrib/jemalloc/include/jemalloc/internal/nstime.h > head/contrib/jemalloc/include/jemalloc/internal/pages.h > head/contrib/jemalloc/include/jemalloc/internal/ph.h > head/contrib/jemalloc/include/jemalloc/internal/private_namespace.h > head/contrib/jemalloc/include/jemalloc/internal/prng.h > head/contrib/jemalloc/include/jemalloc/internal/public_namespace.h > head/contrib/jemalloc/include/jemalloc/internal/ql.h > head/contrib/jemalloc/include/jemalloc/internal/qr.h > head/contrib/jemalloc/include/jemalloc/internal/rb.h > head/contrib/jemalloc/include/jemalloc/internal/rtree.h > head/contrib/jemalloc/include/jemalloc/internal/size_classes.h > head/contrib/jemalloc/include/jemalloc/internal/smoothstep.h > head/contrib/jemalloc/include/jemalloc/internal/spin.h > head/contrib/jemalloc/include/jemalloc/internal/stats.h > head/contrib/jemalloc/include/jemalloc/internal/ticker.h > head/contrib/jemalloc/include/jemalloc/internal/tsd.h > head/contrib/jemalloc/include/jemalloc/internal/util.h > head/contrib/jemalloc/include/jemalloc/internal/witness.h > head/contrib/jemalloc/include/jemalloc/jemalloc.h > head/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h > head/contrib/jemalloc/include/jemalloc/jemalloc_typedefs.h > head/contrib/jemalloc/src/arena.c head/contrib/jemalloc/src/base.c > head/contrib/jemalloc/src/bitmap.c head/contrib/jemalloc/src/ckh.c > head/contrib/jemalloc/src/ctl.c head/contrib/jemalloc/src/extent.c > head/contrib/jemalloc/src/hash.c head/contrib/jemalloc/src/jemalloc.c > head/contrib/jemalloc/src/mutex.c head/contrib/jemalloc/src/nstime.c > head/contrib/jemalloc/src/pages.c head/contrib/jemalloc/src/prng.c > head/contrib/jemalloc/src/prof.c head/contrib/jemalloc/src/rtree.c > head/contrib/jemalloc/src/spin.c head/contrib/jemalloc/src/stats.c > head/contrib/jemalloc/src/tcache.c head/contrib/jemalloc/src/ticker.c > head/contrib/jemalloc/src/tsd.c head/contrib/jemalloc/src/witness.c > head/include/malloc_np.h head/lib/libc/stdlib/jemalloc/Makefile.inc > > Modified: head/contrib/jemalloc/COPYING > ============================================================================== > --- head/contrib/jemalloc/COPYING Thu Jun 15 06:48:36 2017 > (r319970) +++ head/contrib/jemalloc/COPYING Thu Jun 15 07:15:05 > 2017 (r319971) @@ -1,10 +1,10 @@ > Unless otherwise specified, files in the jemalloc source distribution are > subject to the following license: > -------------------------------------------------------------------------------- > -Copyright (C) 2002-2016 Jason Evans <jasone@canonware.com>. > +Copyright (C) 2002-2017 Jason Evans <jasone@canonware.com>. > All rights reserved. > Copyright (C) 2007-2012 Mozilla Foundation. All rights reserved. > -Copyright (C) 2009-2016 Facebook, Inc. All rights reserved. > +Copyright (C) 2009-2017 Facebook, Inc. All rights reserved. > > Redistribution and use in source and binary forms, with or without > modification, are permitted provided that the following conditions are met: > > Modified: head/contrib/jemalloc/ChangeLog > ============================================================================== > --- head/contrib/jemalloc/ChangeLog Thu Jun 15 06:48:36 2017 > (r319970) +++ head/contrib/jemalloc/ChangeLog Thu Jun 15 07:15:05 > 2017 (r319971) @@ -4,6 +4,193 @@ brevity. Much more detail can be > found in the git rev > https://github.com/jemalloc/jemalloc > > +* 5.0.0 (June 13, 2017) > + > + Unlike all previous jemalloc releases, this release does not use naturally > + aligned "chunks" for virtual memory management, and instead uses > page-aligned > + "extents". This change has few externally visible effects, but the > internal > + impacts are... extensive. Many other internal changes combine to make this > + the most cohesively designed version of jemalloc so far, with ample > + opportunity for further enhancements. > + > + Continuous integration is now an integral aspect of development thanks to > the > + efforts of @davidtgoldblatt, and the dev branch tends to remain reasonably > + stable on the tested platforms (Linux, FreeBSD, macOS, and Windows). As a > + side effect the official release frequency may decrease over time. > + > + New features: > + - Implement optional per-CPU arena support; threads choose which arena to > use > + based on current CPU rather than on fixed thread-->arena associations. > + (@interwq) > + - Implement two-phase decay of unused dirty pages. Pages transition from > + dirty-->muzzy-->clean, where the first phase transition relies on > + madvise(... MADV_FREE) semantics, and the second phase transition > discards > + pages such that they are replaced with demand-zeroed pages on next > access. > + (@jasone) > + - Increase decay time resolution from seconds to milliseconds. (@jasone) > + - Implement opt-in per CPU background threads, and use them for > asynchronous > + decay-driven unused dirty page purging. (@interwq) > + - Add mutex profiling, which collects a variety of statistics useful for > + diagnosing overhead/contention issues. (@interwq) > + - Add C++ new/delete operator bindings. (@djwatson) > + - Support manually created arena destruction, such that all data and > metadata > + are discarded. Add MALLCTL_ARENAS_DESTROYED for accessing merged stats > + associated with destroyed arenas. (@jasone) > + - Add MALLCTL_ARENAS_ALL as a fixed index for use in accessing > + merged/destroyed arena statistics via mallctl. (@jasone) > + - Add opt.abort_conf to optionally abort if invalid configuration options > are > + detected during initialization. (@interwq) > + - Add opt.stats_print_opts, so that e.g. JSON output can be selected for > the > + stats dumped during exit if opt.stats_print is true. (@jasone) > + - Add --with-version=VERSION for use when embedding jemalloc into another > + project's git repository. (@jasone) > + - Add --disable-thp to support cross compiling. (@jasone) > + - Add --with-lg-hugepage to support cross compiling. (@jasone) > + - Add mallctl interfaces (various authors): > + + background_thread > + + opt.abort_conf > + + opt.retain > + + opt.percpu_arena > + + opt.background_thread > + + opt.{dirty,muzzy}_decay_ms > + + opt.stats_print_opts > + + arena.<i>.initialized > + + arena.<i>.destroy > + + arena.<i>.{dirty,muzzy}_decay_ms > + + arena.<i>.extent_hooks > + + arenas.{dirty,muzzy}_decay_ms > + + arenas.bin.<i>.slab_size > + + arenas.nlextents > + + arenas.lextent.<i>.size > + + arenas.create > + + stats.background_thread.{num_threads,num_runs,run_interval} > + + stats.mutexes.{ctl,background_thread,prof,reset}. > + > {num_ops,num_spin_acq,num_wait,max_wait_time,total_wait_time,max_num_thds, > + num_owner_switch} > + + stats.arenas.<i>.{dirty,muzzy}_decay_ms > + + stats.arenas.<i>.uptime > + + stats.arenas.<i>.{pmuzzy,base,internal,resident} > + + stats.arenas.<i>.{dirty,muzzy}_{npurge,nmadvise,purged} > + + stats.arenas.<i>.bins.<j>.{nslabs,reslabs,curslabs} > + + stats.arenas.<i>.bins.<j>.mutex. > + > {num_ops,num_spin_acq,num_wait,max_wait_time,total_wait_time,max_num_thds, > + num_owner_switch} > + + stats.arenas.<i>.lextents.<j>.{nmalloc,ndalloc,nrequests,curlextents} > + + stats.arenas.i.mutexes.{large,extent_avail,extents_dirty,extents_muzzy, > + extents_retained,decay_dirty,decay_muzzy,base,tcache_list}. > + > {num_ops,num_spin_acq,num_wait,max_wait_time,total_wait_time,max_num_thds, > + num_owner_switch} > + > + Portability improvements: > + - Improve reentrant allocation support, such that deadlock is less likely > if > + e.g. a system library call in turn allocates memory. (@davidtgoldblatt, > + @interwq) > + - Support static linking of jemalloc with glibc. (@djwatson) > + > + Optimizations and refactors: > + - Organize virtual memory as "extents" of virtual memory pages, rather > than as > + naturally aligned "chunks", and store all metadata in arbitrarily distant > + locations. This reduces virtual memory external fragmentation, and will > + interact better with huge pages (not yet explicitly supported). > (@jasone) > + - Fold large and huge size classes together; only small and large size > classes > + remain. (@jasone) > + - Unify the allocation paths, and merge most fast-path branching decisions. > + (@davidtgoldblatt, @interwq) > + - Embed per thread automatic tcache into thread-specific data, which > reduces > + conditional branches and dereferences. Also reorganize tcache to > increase > + fast-path data locality. (@interwq) > + - Rewrite atomics to closely model the C11 API, convert various > + synchronization from mutex-based to atomic, and use the explicit memory > + ordering control to resolve various hypothetical races without increasing > + synchronization overhead. (@davidtgoldblatt) > + - Extensively optimize rtree via various methods: > + + Add multiple layers of rtree lookup caching, since rtree lookups are > now > + part of fast-path deallocation. (@interwq) > + + Determine rtree layout at compile time. (@jasone) > + + Make the tree shallower for common configurations. (@jasone) > + + Embed the root node in the top-level rtree data structure, thus > avoiding > + one level of indirection. (@jasone) > + + Further specialize leaf elements as compared to internal node elements, > + and directly embed extent metadata needed for fast-path deallocation. > + (@jasone) > + + Ignore leading always-zero address bits (architecture-specific). > + (@jasone) > + - Reorganize headers (ongoing work) to make them hermetic, and disentangle > + various module dependencies. (@davidtgoldblatt) > + - Convert various internal data structures such as size class metadata from > + boot-time-initialized to compile-time-initialized. Propagate resulting > data > + structure simplifications, such as making arena metadata fixed-size. > + (@jasone) > + - Simplify size class lookups when constrained to size classes that are > + multiples of the page size. This speeds lookups, but the primary > benefit is > + complexity reduction in code that was the source of numerous regressions. > + (@jasone) > + - Lock individual extents when possible for localized extent operations, > + rather than relying on a top-level arena lock. (@davidtgoldblatt, > @jasone) > + - Use first fit layout policy instead of best fit, in order to improve > + packing. (@jasone) > + - If munmap(2) is not in use, use an exponential series to grow each > arena's > + virtual memory, so that the number of disjoint virtual memory mappings > + remains low. (@jasone) > + - Implement per arena base allocators, so that arenas never share any > virtual > + memory pages. (@jasone) > + - Automatically generate private symbol name mangling macros. (@jasone) > + > + Incompatible changes: > + - Replace chunk hooks with an expanded/normalized set of extent hooks. > + (@jasone) > + - Remove ratio-based purging. (@jasone) > + - Remove --disable-tcache. (@jasone) > + - Remove --disable-tls. (@jasone) > + - Remove --enable-ivsalloc. (@jasone) > + - Remove --with-lg-size-class-group. (@jasone) > + - Remove --with-lg-tiny-min. (@jasone) > + - Remove --disable-cc-silence. (@jasone) > + - Remove --enable-code-coverage. (@jasone) > + - Remove --disable-munmap (replaced by opt.retain). (@jasone) > + - Remove Valgrind support. (@jasone) > + - Remove quarantine support. (@jasone) > + - Remove redzone support. (@jasone) > + - Remove mallctl interfaces (various authors): > + + config.munmap > + + config.tcache > + + config.tls > + + config.valgrind > + + opt.lg_chunk > + + opt.purge > + + opt.lg_dirty_mult > + + opt.decay_time > + + opt.quarantine > + + opt.redzone > + + opt.thp > + + arena.<i>.lg_dirty_mult > + + arena.<i>.decay_time > + + arena.<i>.chunk_hooks > + + arenas.initialized > + + arenas.lg_dirty_mult > + + arenas.decay_time > + + arenas.bin.<i>.run_size > + + arenas.nlruns > + + arenas.lrun.<i>.size > + + arenas.nhchunks > + + arenas.hchunk.<i>.size > + + arenas.extend > + + stats.cactive > + + stats.arenas.<i>.lg_dirty_mult > + + stats.arenas.<i>.decay_time > + + stats.arenas.<i>.metadata.{mapped,allocated} > + + stats.arenas.<i>.{npurge,nmadvise,purged} > + + stats.arenas.<i>.huge.{allocated,nmalloc,ndalloc,nrequests} > + + stats.arenas.<i>.bins.<j>.{nruns,reruns,curruns} > + + stats.arenas.<i>.lruns.<j>.{nmalloc,ndalloc,nrequests,curruns} > + + stats.arenas.<i>.hchunks.<j>.{nmalloc,ndalloc,nrequests,curhchunks} > + > + Bug fixes: > + - Improve interval-based profile dump triggering to dump only one profile > when > + a single allocation's size exceeds the interval. (@jasone) > + - Use prefixed function names (as controlled by --with-jemalloc-prefix) > when > + pruning backtrace frames in jeprof. (@jasone) > + > * 4.5.0 (February 28, 2017) > > This is the first release to benefit from much broader continuous > integration @@ -12,7 +199,7 @@ brevity. Much more detail can be found in the > git rev regressions fixed by this release. > > New features: > - - Add --disable-thp and the opt.thp to provide opt-out mechanisms for > + - Add --disable-thp and the opt.thp mallctl to provide opt-out mechanisms > for transparent huge page integration. (@jasone) > - Update zone allocator integration to work with macOS 10.12. (@glandium) > - Restructure *CFLAGS configuration, so that CFLAGS behaves typically, and > @@ -25,7 +212,7 @@ brevity. Much more detail can be found in the git rev > - Handle race in per size class utilization computation. This > functionality was first released in 4.0.0. (@interwq) > - Fix lock order reversal during gdump. (@jasone) > - - Fix-refactor tcache synchronization. This regression was first released > in > + - Fix/refactor tcache synchronization. This regression was first released > in 4.0.0. (@jasone) > - Fix various JSON-formatted malloc_stats_print() bugs. This functionality > was first released in 4.3.0. (@jasone) > > Modified: head/contrib/jemalloc/FREEBSD-Xlist > ============================================================================== > --- head/contrib/jemalloc/FREEBSD-Xlist Thu Jun 15 06:48:36 > 2017 (r319970) +++ head/contrib/jemalloc/FREEBSD-Xlist Thu Jun > 15 07:15:05 2017 (r319971) @@ -4,7 +4,7 @@ $FreeBSD$ > .git* > .travis.yml > FREEBSD-* > -INSTALL > +INSTALL.md > Makefile* > README > autogen.sh > @@ -13,23 +13,24 @@ bin/ > build-aux/ > config.* > configure* > -coverage.sh > doc/*.in > doc/*.xml > doc/*.xsl > doc/*.html > -include/jemalloc/internal/jemalloc_internal.h.in > +include/jemalloc/internal/atomic_msvc.h > include/jemalloc/internal/jemalloc_internal_defs.h.in > +include/jemalloc/internal/jemalloc_preamble.h.in > include/jemalloc/internal/private_namespace.sh > -include/jemalloc/internal/private_symbols.txt > -include/jemalloc/internal/private_unnamespace.h > -include/jemalloc/internal/private_unnamespace.sh > +include/jemalloc/internal/private_symbols_jet.awk > +include/jemalloc/internal/private_symbols.awk > +include/jemalloc/internal/private_symbols.sh > include/jemalloc/internal/public_namespace.sh > include/jemalloc/internal/public_symbols.txt > include/jemalloc/internal/public_unnamespace.h > include/jemalloc/internal/public_unnamespace.sh > include/jemalloc/internal/size_classes.sh > include/jemalloc/internal/smoothstep.sh > +include/jemalloc/internal/tsd_win.h > include/jemalloc/jemalloc.h.in > include/jemalloc/jemalloc.sh > include/jemalloc/jemalloc_defs.h > @@ -48,8 +49,10 @@ include/jemalloc/jemalloc_typedefs.h.in > include/msvc_compat/ > install-sh > jemalloc.pc* > +m4/ > msvc/ > +run_tests.sh > scripts/ > -src/valgrind.c > +src/jemalloc_cpp.cpp > src/zone.c > test/ > > Modified: head/contrib/jemalloc/FREEBSD-diffs > ============================================================================== > --- head/contrib/jemalloc/FREEBSD-diffs Thu Jun 15 06:48:36 > 2017 (r319970) +++ head/contrib/jemalloc/FREEBSD-diffs Thu Jun > 15 07:15:05 2017 (r319971) @@ -1,21 +1,19 @@ > diff --git a/doc/jemalloc.xml.in b/doc/jemalloc.xml.in > -index c97ab0f..be8dda5 100644 > +index 21e401ac..f977c5f5 100644 > --- a/doc/jemalloc.xml.in > +++ b/doc/jemalloc.xml.in > -@@ -53,11 +53,23 @@ > +@@ -53,11 +53,21 @@ > <para>This manual describes jemalloc @jemalloc_version@. More > information can be found at the <ulink > url="http://jemalloc.net/">jemalloc website</ulink>.</para> > + > + <para>The following configuration options are enabled in libc's built-in > + jemalloc: <option>--enable-fill</option>, > -+ <option>--enable-lazy-lock</option>, <option>--enable-munmap</option>, > -+ <option>--enable-stats</option>, <option>--enable-tcache</option>, > -+ <option>--enable-tls</option>, <option>--enable-utrace</option>, and > -+ <option>--enable-xmalloc</option>. Additionally, > -+ <option>--enable-debug</option> is enabled in development versions of > -+ FreeBSD (controlled by the <constant>MALLOC_PRODUCTION</constant> make > -+ variable).</para> > ++ <option>--enable-lazy-lock</option>, <option>--enable-stats</option>, > ++ <option>--enable-utrace</option>, and <option>--enable-xmalloc</option>. > ++ Additionally, <option>--enable-debug</option> is enabled in development > ++ versions of FreeBSD (controlled by the > ++ <constant>MALLOC_PRODUCTION</constant> make variable).</para> > + > </refsect1> > <refsynopsisdiv> > @@ -27,7 +25,7 @@ index c97ab0f..be8dda5 100644 > <refsect2> > <title>Standard API</title> > <funcprototype> > -@@ -2989,4 +3001,18 @@ malloc_conf = > "lg_chunk:24";]]></programlisting></para> +@@ -3252,4 +3262,18 @@ malloc_conf > = "narenas:1";]]></programlisting></para> <para>The > <function>posix_memalign()</function> function conforms to IEEE Std > 1003.1-2001 (<quote>POSIX.1</quote>).</para> </refsect1> > @@ -46,42 +44,42 @@ index c97ab0f..be8dda5 100644 > + 11.0.</para> > + </refsect1> > </refentry> > -diff --git a/include/jemalloc/internal/arena.h > b/include/jemalloc/internal/arena.h -index 119e3a5..277989f 100644 > ---- a/include/jemalloc/internal/arena.h > -+++ b/include/jemalloc/internal/arena.h > -@@ -731,8 +731,13 @@ arena_miscelm_get_mutable(arena_chunk_t *chunk, size_t > pageind) > - JEMALLOC_ALWAYS_INLINE const arena_chunk_map_misc_t * > - arena_miscelm_get_const(const arena_chunk_t *chunk, size_t pageind) > - { > -+#if 1 /* Work around gcc bug. */ > -+ arena_chunk_t *mchunk = (arena_chunk_t *)chunk; > +diff --git a/include/jemalloc/internal/hooks.h > b/include/jemalloc/internal/hooks.h +index cd49afcb..85e2a991 100644 > +--- a/include/jemalloc/internal/hooks.h > ++++ b/include/jemalloc/internal/hooks.h > +@@ -6,13 +6,6 @@ extern JEMALLOC_EXPORT void (*hooks_libc_hook)(); > > -+ return (arena_miscelm_get_mutable(mchunk, pageind)); > -+#else > - return (arena_miscelm_get_mutable((arena_chunk_t *)chunk, pageind)); > -+#endif > - } > + #define JEMALLOC_HOOK(fn, hook) ((void)(hook != NULL && (hook(), 0)), fn) > > - JEMALLOC_ALWAYS_INLINE size_t > -@@ -791,8 +796,13 @@ arena_mapbitsp_get_mutable(arena_chunk_t *chunk, size_t > pageind) > - JEMALLOC_ALWAYS_INLINE const size_t * > - arena_mapbitsp_get_const(const arena_chunk_t *chunk, size_t pageind) > - { > -+#if 1 /* Work around gcc bug. */ > -+ arena_chunk_t *mchunk = (arena_chunk_t *)chunk; > +-#define open JEMALLOC_HOOK(open, hooks_libc_hook) > +-#define read JEMALLOC_HOOK(read, hooks_libc_hook) > +-#define write JEMALLOC_HOOK(write, hooks_libc_hook) > +-#define readlink JEMALLOC_HOOK(readlink, hooks_libc_hook) > +-#define close JEMALLOC_HOOK(close, hooks_libc_hook) > +-#define creat JEMALLOC_HOOK(creat, hooks_libc_hook) > +-#define secure_getenv JEMALLOC_HOOK(secure_getenv, hooks_libc_hook) > + /* Note that this is undef'd and re-define'd in src/prof.c. */ > + #define _Unwind_Backtrace JEMALLOC_HOOK(_Unwind_Backtrace, hooks_libc_hook) > > -+ return (arena_mapbitsp_get_mutable(mchunk, pageind)); > -+#else > - return (arena_mapbitsp_get_mutable((arena_chunk_t *)chunk, > pageind)); -+#endif > - } > +diff --git a/include/jemalloc/internal/jemalloc_internal_decls.h > b/include/jemalloc/internal/jemalloc_internal_decls.h +index > 1efdb56b..12a7e5a8 100644 +--- > a/include/jemalloc/internal/jemalloc_internal_decls.h ++++ > b/include/jemalloc/internal/jemalloc_internal_decls.h +@@ -1,6 +1,9 @@ > + #ifndef JEMALLOC_INTERNAL_DECLS_H > + #define JEMALLOC_INTERNAL_DECLS_H > > - JEMALLOC_ALWAYS_INLINE size_t > -diff --git a/include/jemalloc/internal/jemalloc_internal.h.in > b/include/jemalloc/internal/jemalloc_internal.h.in -index e3b499a..827fdbf > 100644 ---- a/include/jemalloc/internal/jemalloc_internal.h.in > -+++ b/include/jemalloc/internal/jemalloc_internal.h.in > ++#include "libc_private.h" > ++#include "namespace.h" > ++ > + #include <math.h> > + #ifdef _WIN32 > + # include <windows.h> > +diff --git a/include/jemalloc/internal/jemalloc_preamble.h.in > b/include/jemalloc/internal/jemalloc_preamble.h.in +index 18539a09..c8af8683 > 100644 +--- a/include/jemalloc/internal/jemalloc_preamble.h.in > ++++ b/include/jemalloc/internal/jemalloc_preamble.h.in > @@ -8,6 +8,9 @@ > #include <sys/ktrace.h> > #endif > @@ -89,10 +87,10 @@ index e3b499a..827fdbf 100644 > +#include "un-namespace.h" > +#include "libc_private.h" > + > - #define JEMALLOC_NO_DEMANGLE > + #define JEMALLOC_NO_DEMANGLE > #ifdef JEMALLOC_JET > - # define JEMALLOC_N(n) jet_##n > -@@ -42,13 +45,7 @@ static const bool config_fill = > + # undef JEMALLOC_IS_MALLOC > +@@ -68,13 +71,7 @@ static const bool config_fill = > false > #endif > ; > @@ -107,25 +105,11 @@ index e3b499a..827fdbf 100644 > static const char * const config_malloc_conf = JEMALLOC_CONFIG_MALLOC_CONF; > static const bool config_prof = > #ifdef JEMALLOC_PROF > -diff --git a/include/jemalloc/internal/jemalloc_internal_decls.h > b/include/jemalloc/internal/jemalloc_internal_decls.h -index c907d91..4626632 > 100644 ---- a/include/jemalloc/internal/jemalloc_internal_decls.h > -+++ b/include/jemalloc/internal/jemalloc_internal_decls.h > -@@ -1,6 +1,9 @@ > - #ifndef JEMALLOC_INTERNAL_DECLS_H > - #define JEMALLOC_INTERNAL_DECLS_H > - > -+#include "libc_private.h" > -+#include "namespace.h" > -+ > - #include <math.h> > - #ifdef _WIN32 > - # include <windows.h> > diff --git a/include/jemalloc/internal/mutex.h > b/include/jemalloc/internal/mutex.h -index 2b4b1c3..e03a6d0 100644 > +index 6520c251..0013cbe9 100644 > --- a/include/jemalloc/internal/mutex.h > +++ b/include/jemalloc/internal/mutex.h > -@@ -57,9 +57,6 @@ struct malloc_mutex_s { > +@@ -121,9 +121,6 @@ struct malloc_mutex_s { > > #ifdef JEMALLOC_LAZY_LOCK > extern bool isthreaded; > @@ -134,33 +118,21 @@ index 2b4b1c3..e03a6d0 100644 > -# define isthreaded true > #endif > > - bool malloc_mutex_init(malloc_mutex_t *mutex, const char *name, > -@@ -67,6 +64,7 @@ bool malloc_mutex_init(malloc_mutex_t *mutex, const > char *name, > - void malloc_mutex_prefork(tsdn_t *tsdn, malloc_mutex_t *mutex); > - void malloc_mutex_postfork_parent(tsdn_t *tsdn, malloc_mutex_t > *mutex); > - void malloc_mutex_postfork_child(tsdn_t *tsdn, malloc_mutex_t > *mutex); -+bool malloc_mutex_first_thread(void); > - bool malloc_mutex_boot(void); > + bool malloc_mutex_init(malloc_mutex_t *mutex, const char *name, > +@@ -131,6 +128,7 @@ bool malloc_mutex_init(malloc_mutex_t *mutex, const char > *name, > + void malloc_mutex_prefork(tsdn_t *tsdn, malloc_mutex_t *mutex); > + void malloc_mutex_postfork_parent(tsdn_t *tsdn, malloc_mutex_t *mutex); > + void malloc_mutex_postfork_child(tsdn_t *tsdn, malloc_mutex_t *mutex); > ++bool malloc_mutex_first_thread(void); > + bool malloc_mutex_boot(void); > + void malloc_mutex_prof_data_reset(tsdn_t *tsdn, malloc_mutex_t *mutex); > > - #endif /* JEMALLOC_H_EXTERNS */ > -diff --git a/include/jemalloc/internal/private_symbols.txt > b/include/jemalloc/internal/private_symbols.txt -index 60b57e5..056a8fe 100644 > ---- a/include/jemalloc/internal/private_symbols.txt > -+++ b/include/jemalloc/internal/private_symbols.txt > -@@ -312,7 +312,6 @@ iralloct_realign > - isalloc > - isdalloct > - isqalloc > --isthreaded > - ivsalloc > - ixalloc > - jemalloc_postfork_child > diff --git a/include/jemalloc/jemalloc_FreeBSD.h > b/include/jemalloc/jemalloc_FreeBSD.h new file mode 100644 > -index 0000000..c58a8f3 > +index 00000000..355b565c > --- /dev/null > +++ b/include/jemalloc/jemalloc_FreeBSD.h > -@@ -0,0 +1,162 @@ > +@@ -0,0 +1,185 @@ > +/* > + * Override settings that were generated in jemalloc_defs.h as necessary. > + */ > @@ -173,51 +145,65 @@ index 0000000..c58a8f3 > + > +#undef JEMALLOC_DSS > + > ++#undef JEMALLOC_BACKGROUND_THREAD > ++ > +/* > + * The following are architecture-dependent, so conditionally define them > for > + * each supported architecture. > + */ > +#undef JEMALLOC_TLS_MODEL > +#undef STATIC_PAGE_SHIFT > ++#undef LG_VADDR > +#undef LG_SIZEOF_PTR > +#undef LG_SIZEOF_INT > +#undef LG_SIZEOF_LONG > +#undef LG_SIZEOF_INTMAX_T > + > +#ifdef __i386__ > ++# define LG_VADDR 32 > +# define LG_SIZEOF_PTR 2 > +# define JEMALLOC_TLS_MODEL > __attribute__((tls_model("initial-exec"))) +#endif > +#ifdef __ia64__ > ++# define LG_VADDR 64 > +# define LG_SIZEOF_PTR 3 > +#endif > +#ifdef __sparc64__ > ++# define LG_VADDR 64 > +# define LG_SIZEOF_PTR 3 > +# define JEMALLOC_TLS_MODEL > __attribute__((tls_model("initial-exec"))) +#endif > +#ifdef __amd64__ > ++# define LG_VADDR 48 > +# define LG_SIZEOF_PTR 3 > +# define JEMALLOC_TLS_MODEL > __attribute__((tls_model("initial-exec"))) +#endif > +#ifdef __arm__ > ++# define LG_VADDR 32 > +# define LG_SIZEOF_PTR 2 > +#endif > +#ifdef __aarch64__ > ++# define LG_VADDR 48 > +# define LG_SIZEOF_PTR 3 > +#endif > +#ifdef __mips__ > +#ifdef __mips_n64 > ++# define LG_VADDR 64 > +# define LG_SIZEOF_PTR 3 > +#else > ++# define LG_VADDR 32 > +# define LG_SIZEOF_PTR 2 > +#endif > +#endif > +#ifdef __powerpc64__ > ++# define LG_VADDR 64 > +# define LG_SIZEOF_PTR 3 > +#elif defined(__powerpc__) > ++# define LG_VADDR 32 > +# define LG_SIZEOF_PTR 2 > +#endif > +#ifdef __riscv__ > ++# define LG_VADDR 64 > +# define LG_SIZEOF_PTR 3 > +#endif > + > @@ -291,8 +277,17 @@ index 0000000..c58a8f3 > +#define read _read > +#define write _write > +#define close _close > ++#define pthread_join _pthread_join > ++#define pthread_once _pthread_once > ++#define pthread_self _pthread_self > ++#define pthread_equal _pthread_equal > +#define pthread_mutex_lock _pthread_mutex_lock > ++#define pthread_mutex_trylock _pthread_mutex_trylock > +#define pthread_mutex_unlock _pthread_mutex_unlock > ++#define pthread_cond_init _pthread_cond_init > ++#define pthread_cond_wait _pthread_cond_wait > ++#define pthread_cond_timedwait _pthread_cond_timedwait > ++#define pthread_cond_signal _pthread_cond_signal > + > +#ifdef JEMALLOC_C_ > +/* > @@ -324,7 +319,7 @@ index 0000000..c58a8f3 > +__weak_reference(__nallocm, nallocm); > +#endif > diff --git a/include/jemalloc/jemalloc_rename.sh > b/include/jemalloc/jemalloc_rename.sh -index f943891..47d032c 100755 > +index f9438912..47d032c1 100755 > --- a/include/jemalloc/jemalloc_rename.sh > +++ b/include/jemalloc/jemalloc_rename.sh > @@ -19,4 +19,6 @@ done > @@ -335,10 +330,10 @@ index f943891..47d032c 100755 > +#include "jemalloc_FreeBSD.h" > EOF > diff --git a/src/jemalloc.c b/src/jemalloc.c > -index f73a26c..fcfe204 100644 > +index 52c86aa6..868c9e86 100644 > --- a/src/jemalloc.c > +++ b/src/jemalloc.c > -@@ -4,6 +4,10 @@ > +@@ -20,6 +20,10 @@ > /******************************************************************************/ > /* Data. */ > > @@ -349,7 +344,7 @@ index f73a26c..fcfe204 100644 > /* Runtime configuration options. */ > const char *je_malloc_conf > #ifndef _WIN32 > -@@ -2781,6 +2785,107 @@ je_malloc_usable_size(JEMALLOC_USABLE_SIZE_CONST > void *ptr) +@@ -2981,6 +2985,103 @@ > je_malloc_usable_size(JEMALLOC_USABLE_SIZE_CONST void *ptr) { */ > /******************************************************************************/ > /* > @@ -366,78 +361,74 @@ index f73a26c..fcfe204 100644 > +#define ALLOCM_ERR_NOT_MOVED 2 > + > +int > -+je_allocm(void **ptr, size_t *rsize, size_t size, int flags) > -+{ > -+ void *p; > -+ > ++je_allocm(void **ptr, size_t *rsize, size_t size, int flags) { > + assert(ptr != NULL); > + > -+ p = je_mallocx(size, flags); > -+ if (p == NULL) > ++ void *p = je_mallocx(size, flags); > ++ if (p == NULL) { > + return (ALLOCM_ERR_OOM); > -+ if (rsize != NULL) > -+ *rsize = isalloc(tsdn_fetch(), p, config_prof); > ++ } > ++ if (rsize != NULL) { > ++ *rsize = isalloc(tsdn_fetch(), p); > ++ } > + *ptr = p; > -+ return (ALLOCM_SUCCESS); > ++ return ALLOCM_SUCCESS; > +} > + > +int > -+je_rallocm(void **ptr, size_t *rsize, size_t size, size_t extra, int flags) > -+{ > -+ int ret; > -+ bool no_move = flags & ALLOCM_NO_MOVE; > -+ > ++je_rallocm(void **ptr, size_t *rsize, size_t size, size_t extra, int flags) > { > + assert(ptr != NULL); > + assert(*ptr != NULL); > + assert(size != 0); > + assert(SIZE_T_MAX - size >= extra); > + > ++ int ret; > ++ bool no_move = flags & ALLOCM_NO_MOVE; > ++ > + if (no_move) { > + size_t usize = je_xallocx(*ptr, size, extra, flags); > + ret = (usize >= size) ? ALLOCM_SUCCESS : > ALLOCM_ERR_NOT_MOVED; -+ if (rsize != NULL) > ++ if (rsize != NULL) { > + *rsize = usize; > ++ } > + } else { > + void *p = je_rallocx(*ptr, size+extra, flags); > + if (p != NULL) { > + *ptr = p; > + ret = ALLOCM_SUCCESS; > -+ } else > ++ } else { > + ret = ALLOCM_ERR_OOM; > -+ if (rsize != NULL) > -+ *rsize = isalloc(tsdn_fetch(), *ptr, config_prof); > ++ } > ++ if (rsize != NULL) { > ++ *rsize = isalloc(tsdn_fetch(), *ptr); > ++ } > + } > -+ return (ret); > ++ return ret; > +} > + > +int > -+je_sallocm(const void *ptr, size_t *rsize, int flags) > -+{ > -+ > ++je_sallocm(const void *ptr, size_t *rsize, int flags) { > + assert(rsize != NULL); > + *rsize = je_sallocx(ptr, flags); > -+ return (ALLOCM_SUCCESS); > ++ return ALLOCM_SUCCESS; > +} > + > +int > -+je_dallocm(void *ptr, int flags) > -+{ > -+ > ++je_dallocm(void *ptr, int flags) { > + je_dallocx(ptr, flags); > -+ return (ALLOCM_SUCCESS); > ++ return ALLOCM_SUCCESS; > +} > + > +int > -+je_nallocm(size_t *rsize, size_t size, int flags) > -+{ > -+ size_t usize; > -+ > -+ usize = je_nallocx(size, flags); > -+ if (usize == 0) > -+ return (ALLOCM_ERR_OOM); > -+ if (rsize != NULL) > ++je_nallocm(size_t *rsize, size_t size, int flags) { > ++ size_t usize = je_nallocx(size, flags); > ++ if (usize == 0) { > ++ return ALLOCM_ERR_OOM; > ++ } > ++ if (rsize != NULL) { > + *rsize = usize; > -+ return (ALLOCM_SUCCESS); > ++ } > ++ return ALLOCM_SUCCESS; > +} > + > +#undef ALLOCM_LG_ALIGN > @@ -457,7 +448,7 @@ index f73a26c..fcfe204 100644 > * The following functions are used by threading libraries for protection of > * malloc during fork(). > */ > -@@ -2922,4 +3027,11 @@ jemalloc_postfork_child(void) > +@@ -3141,4 +3242,11 @@ jemalloc_postfork_child(void) { > ctl_postfork_child(tsd_tsdn(tsd)); > } > > @@ -469,11 +460,36 @@ index f73a26c..fcfe204 100644 > +} > + > /******************************************************************************/ > +diff --git a/src/malloc_io.c b/src/malloc_io.c > +index 6b99afcd..4363cb83 100644 > +--- a/src/malloc_io.c > ++++ b/src/malloc_io.c > +@@ -88,6 +88,20 @@ wrtmessage(void *cbopaque, const char *s) { > + > + JEMALLOC_EXPORT void (*je_malloc_message)(void *, const char *s); > + > ++JEMALLOC_ATTR(visibility("hidden")) > ++void > ++wrtmessage_1_0(const char *s1, const char *s2, const char *s3, const char > *s4) { ++ > ++ wrtmessage(NULL, s1); > ++ wrtmessage(NULL, s2); > ++ wrtmessage(NULL, s3); > ++ wrtmessage(NULL, s4); > ++} > ++ > ++void (*__malloc_message_1_0)(const char *s1, const char *s2, const > char *s3, ++ const char *s4) = wrtmessage_1_0; > ++__sym_compat(_malloc_message, __malloc_message_1_0, FBSD_1.0); > ++ > + /* > + * Wrapper around malloc_message() that avoids the need for > + * je_malloc_message(...) throughout the code. > diff --git a/src/mutex.c b/src/mutex.c > -index 6333e73..13f8d79 100644 > +index a528ef0c..820af613 100644 > --- a/src/mutex.c > +++ b/src/mutex.c > -@@ -66,6 +66,17 @@ pthread_create(pthread_t *__restrict thread, > +@@ -40,6 +40,17 @@ pthread_create(pthread_t *__restrict thread, > #ifdef JEMALLOC_MUTEX_INIT_CB > JEMALLOC_EXPORT int _pthread_mutex_init_calloc_cb(pthread_mutex_t > *mutex, void *(calloc_cb)(size_t, size_t)); > @@ -490,55 +506,21 @@ index 6333e73..13f8d79 100644 > +} > #endif > > - bool > -@@ -142,7 +153,7 @@ malloc_mutex_postfork_child(tsdn_t *tsdn, malloc_mutex_t > *mutex) > + void > +@@ -130,6 +141,16 @@ mutex_addr_comp(const witness_t *witness1, void *mutex1, > } > > bool > --malloc_mutex_boot(void) > -+malloc_mutex_first_thread(void) > - { > - > - #ifdef JEMALLOC_MUTEX_INIT_CB > -@@ -156,3 +167,14 @@ malloc_mutex_boot(void) > - #endif > - return (false); > - } > ++malloc_mutex_first_thread(void) { > + > -+bool > -+malloc_mutex_boot(void) > -+{ > -+ > +#ifndef JEMALLOC_MUTEX_INIT_CB > + return (malloc_mutex_first_thread()); > +#else > + return (false); > +#endif > +} > -diff --git a/src/util.c b/src/util.c > -index dd8c236..a4ff287 100644 > ---- a/src/util.c > -+++ b/src/util.c > -@@ -67,6 +67,22 @@ wrtmessage(void *cbopaque, const char *s) > - > - JEMALLOC_EXPORT void (*je_malloc_message)(void *, const char *s); > - > -+JEMALLOC_ATTR(visibility("hidden")) > -+void > -+wrtmessage_1_0(const char *s1, const char *s2, const char *s3, > -+ const char *s4) > -+{ > + > -+ wrtmessage(NULL, s1); > -+ wrtmessage(NULL, s2); > -+ wrtmessage(NULL, s3); > -+ wrtmessage(NULL, s4); > -+} > -+ > -+void (*__malloc_message_1_0)(const char *s1, const char *s2, const > char *s3, -+ const char *s4) = wrtmessage_1_0; > -+__sym_compat(_malloc_message, __malloc_message_1_0, FBSD_1.0); > -+ > - /* > - * Wrapper around malloc_message() that avoids the need for > - * je_malloc_message(...) throughout the code. > ++bool > + malloc_mutex_init(malloc_mutex_t *mutex, const char *name, > + witness_rank_t rank, malloc_mutex_lock_order_t lock_order) { > + mutex_prof_data_init(&mutex->prof_data); > > Modified: head/contrib/jemalloc/FREEBSD-upgrade > ============================================================================== > --- head/contrib/jemalloc/FREEBSD-upgrade Thu Jun 15 06:48:36 > 2017 (r319970) +++ head/contrib/jemalloc/FREEBSD-upgrade Thu > Jun 15 07:15:05 2017 (r319971) @@ -22,19 +22,19 @@ > # > # Extract latest jemalloc release. > # > -# ./FREEBSD-upgrade extract > +# ./FREEBSD-upgrade extract <rev> > # > # Fix patch conflicts as necessary, then regenerate diffs to update line > # offsets: > # > # ./FREEBSD-upgrade rediff > -# ./FREEBSD-upgrade extract > +# ./FREEBSD-upgrade extract <rev> > # > # Do multiple buildworld/installworld rounds. If problems arise and patches > # are needed, edit the code in ${work} as necessary, then: > # > # ./FREEBSD-upgrade rediff > -# ./FREEBSD-upgrade extract > +# ./FREEBSD-upgrade extract <rev> > # > # The rediff/extract order is important because rediff saves the local > # changes, then extract blows away the work tree and re-creates it with the > @@ -45,43 +45,98 @@ > # ./FREEBSD-upgrade clean > > set -e > +set -x > > if [ ! -x "FREEBSD-upgrade" ] ; then > echo "Run from within src/contrib/jemalloc/" >&2 > exit 1 > fi > > +if [ "x${JEMALLOC_REPO}" = "x" ] ; then > + JEMALLOC_REPO=https://github.com/jemalloc/jemalloc.git > +fi > + > src=`pwd` > -workname="jemalloc.git" > -work="${src}/../${workname}" # merge-changes expects ${workname} in "..". > + > +jemalloc_tmp="jemalloc.tmp" > +tmpdir="${src}/../${jemalloc_tmp}" > +bare_repo="${tmpdir}/jemalloc_bare.git" > +work="jemalloc_work.git" > +work_repo="${tmpdir}/${work}" > +namespace_repo="${tmpdir}/jemalloc_namespace.git" > changes="${src}/FREEBSD-changes" > > -do_extract() { > +do_fetch() { > local rev=$1 > - # Clone. > - rm -rf ${work} > - git clone https://github.com/jemalloc/jemalloc.git ${work} > + if [ ! -d "${bare_repo}" ] ; then > + mkdir -p "${bare_repo}" > + git clone --bare ${JEMALLOC_REPO} ${bare_repo} > + fi > ( > - cd ${work} > + cd ${bare_repo} > + git fetch origin ${rev} > + ) > +} > + > +do_extract_helper() { > + local rev=$1 > + local repo=$2 > + do_fetch ${rev} > + rm -rf ${repo} > + git clone ${bare_repo} ${repo} > + ( > + cd ${repo} > if [ "x${rev}" != "x" ] ; then > # Use optional rev argument to check out a revision other than HEAD on > # master. > git checkout ${rev} > fi > + ) > +} > + > +do_autogen() { > + ./autogen.sh --enable-xmalloc --enable-utrace \ > + --with-xslroot=/usr/local/share/xsl/docbook --with-private-namespace=__ \ > + --with-lg-page-sizes=12,13,14,16 > +} > + > +do_extract_diff() { > + local rev=$1 > + local repo=$2 > + do_extract_helper ${rev} ${repo} > + ( > + cd ${repo} > # Apply diffs before generating files. > patch -p1 < "${src}/FREEBSD-diffs" > find . -name '*.orig' -delete > - # Generate various files. > - ./autogen.sh --enable-cc-silence --enable-xmalloc --enable-utrace \ > - --with-xslroot=/usr/local/share/xsl/docbook > --with-private-namespace=__ \ > - --with-lg-page-sizes=12,13,14,16 > + # Generate files. > + do_autogen > gmake dist > ) > } > > +do_extract_namespace() { > + local rev=$1 > + local repo=$2 > + do_extract_helper ${rev} ${repo} > + ( > + cd ${repo} > + # Generate files. > + do_autogen > + gmake include/jemalloc/internal/private_namespace.h > + ) > +} > + > +do_extract() { > + local rev=$1 > + do_fetch ${rev} > + do_extract_diff ${rev} ${work_repo} > + do_extract_namespace ${rev} ${namespace_repo} > +} > + > do_diff() { > ( > - cd ${work} > + cd ${work_repo} > find . -name '*.orig' -delete > find . -name '*.rej' -delete > git add -A > @@ -98,12 +153,12 @@ case "${command}" in > do_extract ${rev} > # Compute local differences to the upstream+patches and apply them. > ( > - cd .. > - diff -ru -X ${src}/FREEBSD-Xlist ${workname} jemalloc > ${changes} || > true > + cd ${tmpdir} > + diff -ru -X ${src}/FREEBSD-Xlist ${work} ../jemalloc > ${changes} || > true ) > ( > - cd ${work} > - patch -p1 < ${changes} > + cd ${work_repo} > + patch -p1 < ${changes} || true > find . -name '*.orig' -delete > ) > # Update diff. > @@ -115,13 +170,17 @@ case "${command}" in > # Delete existing files so that cruft doesn't silently remain. > rm -rf ChangeLog COPYING VERSION doc include src > # Copy files over. > - tar cf - -C ${work} -X FREEBSD-Xlist . |tar xvf - > + tar cf - -C ${work_repo} -X FREEBSD-Xlist . |tar xvf - > + internal_dir="include/jemalloc/internal" > + grep -v ' isthreaded ' \ > + "${namespace_repo}/${internal_dir}/private_namespace.h" \ > + > "${internal_dir}/private_namespace.h" > ;; > rediff) # Regenerate diffs based on working tree. > do_diff > ;; > clean) # Remove working tree and temporary files. > - rm -rf ${work} ${changes} > + rm -rf ${tmpdir} ${changes} > ;; > *) > echo "Unsupported command: \"${command}\"" >&2 > > Modified: head/contrib/jemalloc/VERSION > ============================================================================== > --- head/contrib/jemalloc/VERSION Thu Jun 15 06:48:36 2017 > (r319970) +++ head/contrib/jemalloc/VERSION Thu Jun 15 07:15:05 > 2017 (r319971) @@ -1 +1 @@ > -4.5.0-0-g04380e79f1e2428bd0ad000bbc6e3d2dfc6b66a5 > +5.0.0-4-g84f6c2cae0fb1399377ef6aea9368444c4987cc6 > > Modified: head/contrib/jemalloc/doc/jemalloc.3 > ============================================================================== > --- head/contrib/jemalloc/doc/jemalloc.3 Thu Jun 15 06:48:36 > 2017 (r319970) +++ head/contrib/jemalloc/doc/jemalloc.3 Thu Jun > 15 07:15:05 2017 (r319971) > > *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** > _______________________________________________ > svn-src-head@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/svn-src-head > To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org" On all hosts (running CURRENT: FreeBSD 12.0-CURRENT #15 r319965: Thu Jun 15 05:56:12 CEST 2017 amd64 AND FreeBSD 12.0-CURRENT #20 r319934: Wed Jun 14 06:18:46 CEST 2017 amd64) buildworld fails on [...] Building /usr/obj/usr/src/lib/libgcc_s/_libinstall --- secure/lib/libcrypto__L --- --- all_subdir_secure/lib/libcrypto/engines/libaep --- /usr/obj/usr/src/tmp/usr/bin/ld: error: unable to find library -lgcc_s /usr/obj/usr/src/tmp/usr/bin/ld: error: unable to find library -lgcc_s cc: error: linker command failed with exit code 1 (use -v to see invocation) *** [libaep.so] Error code 1 make[6]: stopped in /usr/src/secure/lib/libcrypto/engines/libaep .ERROR_TARGET='libaep.so'
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20170615103157.43bf216e>