Skip to content
  1. Nov 04, 2016
    • Matthew Parkinson's avatar
      Fixes to Visual Studio Project files · d30b3ea5
      Matthew Parkinson authored
      d30b3ea5
    • Jason Evans's avatar
      Use -std=gnu11 if available. · 6d2a57cf
      Jason Evans authored
      This supersedes -std=gnu99, and enables C11 atomics.
      6d2a57cf
    • Jason Evans's avatar
      Update ChangeLog for 4.3.0. · 07608769
      Jason Evans authored
      07608769
    • Jason Evans's avatar
      Fix/simplify extent_recycle() allocation size computations. · a967fae3
      Jason Evans authored
      Do not call s2u() during alloc_size computation, since any necessary
      ceiling increase is taken care of later by extent_first_best_fit() -->
      extent_size_quantize_ceil(), and the s2u() call may erroneously cause a
      higher quantization result.
      
      Remove an overly strict overflow check that was added in
      4a785213 (Fix extent_recycle()'s
      cache-oblivious padding support.).
      a967fae3
    • Jason Evans's avatar
      Fix extent_recycle()'s cache-oblivious padding support. · 4a785213
      Jason Evans authored
      Add padding *after* computing the size class, so that the optimal size
      class isn't skipped during search for a usable extent.  This regression
      was caused by b46261d5 (Implement
      cache-oblivious support for huge size classes.).
      4a785213
    • Jason Evans's avatar
      Fix psz/pind edge cases. · ea9961ac
      Jason Evans authored
      Add an "over-size" extent heap in which to store extents which exceed
      the maximum size class (plus cache-oblivious padding, if enabled).
      Remove psz2ind_clamp() and use psz2ind() instead so that trying to
      allocate the maximum size class can in principle succeed.  In practice,
      this allows assertions to hold so that OOM errors can be successfully
      generated.
      ea9961ac
    • Jason Evans's avatar
      Fix extent_alloc_cache[_locked]() to support decommitted allocation. · 8dd5ea87
      Jason Evans authored
      Fix extent_alloc_cache[_locked]() to support decommitted allocation, and
      use this ability in arena_stash_dirty(), so that decommitted extents are
      not needlessly committed during purging.  In practice this does not
      happen on any currently supported systems, because both extent merging
      and decommit must be implemented; all supported systems implement one
      xor the other.
      8dd5ea87
  2. Nov 03, 2016
  3. Nov 02, 2016
    • Jason Evans's avatar
      Force no lazy-lock on Windows. · eee1ca65
      Jason Evans authored
      Monitoring thread creation is unimplemented for Windows, which means
      lazy-lock cannot function correctly.
      
      This resolves #310.
      eee1ca65
  4. Nov 01, 2016
  5. Oct 31, 2016
  6. Oct 30, 2016
  7. Oct 29, 2016
    • Jason Evans's avatar
      Do not mark malloc_conf as weak on Windows. · 1dcd0aa0
      Jason Evans authored
      This works around malloc_conf not being properly initialized by at least
      the cygwin toolchain.  Prior build system changes to use
      -Wl,--[no-]whole-archive may be necessary for malloc_conf resolution to
      work properly as a non-weak symbol (not tested).
      1dcd0aa0
    • Jason Evans's avatar
      Do not mark malloc_conf as weak for unit tests. · 6ec2d8e2
      Jason Evans authored
      This is generally correct (no need for weak symbols since no jemalloc
      library is involved in the link phase), and avoids linking problems
      (apparently unininitialized non-NULL malloc_conf) when using cygwin with
      gcc.
      6ec2d8e2
    • Dave Watson's avatar
      Support static linking of jemalloc with glibc · 83093884
      Dave Watson authored
      glibc defines its malloc implementation with several weak and strong
      symbols:
      
      strong_alias (__libc_calloc, __calloc) weak_alias (__libc_calloc, calloc)
      strong_alias (__libc_free, __cfree) weak_alias (__libc_free, cfree)
      strong_alias (__libc_free, __free) strong_alias (__libc_free, free)
      strong_alias (__libc_malloc, __malloc) strong_alias (__libc_malloc, malloc)
      
      The issue is not with the weak symbols, but that other parts of glibc
      depend on __libc_malloc explicitly.  Defining them in terms of jemalloc
      API's allows the linker to drop glibc's malloc.o completely from the link,
      and static linking no longer results in symbol collisions.
      
      Another wrinkle: jemalloc during initialization calls sysconf to
      get the number of CPU's.  GLIBC allocates for the first time before
      setting up isspace (and other related) tables, which are used by
      sysconf.  Instead, use the pthread API to get the number of
      CPUs with GLIBC, which seems to work.
      
      This resolves #442.
      83093884
  8. Oct 28, 2016