Go to file
Yinan Zhang c9d56cddf2 Optimize meld in qr module
The goal of `qr_meld()` is to change the following four fields
`(a->prev, a->prev->next, b->prev, b->prev->next)` from the values
`(a->prev, a, b->prev, b)` to `(b->prev, b, a->prev, a)`.

This commit changes

```
a->prev->next = b;
b->prev->next = a;
temp = a->prev;
a->prev = b->prev;
b->prev = temp;
```

to

```
temp = a->prev;
a->prev = b->prev;
b->prev = temp;
a->prev->next = a;
b->prev->next = b;
```

The benefit is that we can use `b->prev->next` for `temp`, and so
there's no need to pass in `a_type`.

The restriction is that `b` cannot be a `qr_next()` macro, so users
of `qr_meld()` must pay attention.  (Before this change, neither `a`
nor `b` could be a `qr_next()` macro.)
2020-04-06 09:50:27 -07:00
bin Fix typo derived from tcmalloc's pprof 2019-04-23 15:29:57 -07:00
build-aux Update config.{guess,sub} from upstream. 2016-11-10 15:08:32 -08:00
doc Implement opt.stats_interval and the _opts options. 2020-01-29 09:57:55 -08:00
include Optimize meld in qr module 2020-04-06 09:50:27 -07:00
m4 Support C++17 over-aligned allocation 2019-11-22 10:14:16 -08:00
msvc Cache_bin: Shouldn't know about tcache. 2020-03-12 11:54:19 -07:00
scripts Add --with-lg-page=16 to CI. 2019-09-22 18:51:03 -07:00
src Add piping API to buffered writer 2020-04-01 09:41:20 -07:00
test Optimize meld in qr module 2020-04-06 09:50:27 -07:00
.appveyor.yml Reorder the configs for AppVeyor. 2019-07-14 23:06:24 -07:00
.autom4te.cfg Disable autom4te cache. 2014-09-02 17:49:29 -07:00
.cirrus.yml Cirrus-CI: test on new freebsd releases. 2020-02-23 20:43:38 -08:00
.gitattributes fix git handling of newlines on windows 2014-05-07 18:48:39 -04:00
.gitignore Kill size_classes.sh. 2018-07-12 20:53:06 -07:00
.travis.yml Add --with-lg-page=16 to CI. 2019-09-22 18:51:03 -07:00
autogen.sh Move repo contents in jemalloc/ to top level. 2011-03-31 20:36:17 -07:00
ChangeLog Update Changelog for 5.2.1. 2019-08-05 12:52:43 -07:00
config.stamp.in Move repo contents in jemalloc/ to top level. 2011-03-31 20:36:17 -07:00
configure.ac configure.ac: Put public symbols on one line. 2020-04-02 13:27:29 -07:00
COPYING Update copyright dates. 2019-01-25 13:25:20 -08:00
INSTALL.md Update INSTALL.md about the default doc build. 2019-08-16 10:03:34 -07:00
jemalloc.pc.in Reformat the version number in jemalloc.pc.in. 2018-05-07 20:12:03 -07:00
Makefile.in Add malloc_conf_2_conf_harder 2020-03-31 06:25:08 -07:00
README Update project URL. 2016-09-12 11:56:24 -07:00
run_tests.sh Introduce scripts to run all possible tests 2017-01-30 17:51:57 -08:00
TUNING.md Add TUNING.md. 2018-05-03 12:52:52 -07:00

jemalloc is a general purpose malloc(3) implementation that emphasizes
fragmentation avoidance and scalable concurrency support.  jemalloc first came
into use as the FreeBSD libc allocator in 2005, and since then it has found its
way into numerous applications that rely on its predictable behavior.  In 2010
jemalloc development efforts broadened to include developer support features
such as heap profiling and extensive monitoring/tuning hooks.  Modern jemalloc
releases continue to be integrated back into FreeBSD, and therefore versatility
remains critical.  Ongoing development efforts trend toward making jemalloc
among the best allocators for a broad range of demanding applications, and
eliminating/mitigating weaknesses that have practical repercussions for real
world applications.

The COPYING file contains copyright and licensing information.

The INSTALL file contains information on how to configure, build, and install
jemalloc.

The ChangeLog file contains a brief summary of changes for each release.

URL: http://jemalloc.net/