Skip to content

Commit 5d2cadb

Browse files
committed
auto merge of #6895 : cmr/rust/jemalloc, r=brson
2 parents f2e6c01 + 829b5de commit 5d2cadb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

104 files changed

+44444
-13
lines changed

.gitattributes

+1
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
src/rt/msvc/* -whitespace
88
src/rt/vg/* -whitespace
99
src/rt/linenoise/* -whitespace
10+
src/rt/jemalloc/**/* -whitespace

configure

+2-1
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,8 @@ do
683683
for i in \
684684
isaac linenoise sync test \
685685
arch/i386 arch/x86_64 arch/arm arch/mips \
686-
libuv libuv/src/ares libuv/src/eio libuv/src/ev
686+
libuv libuv/src/ares libuv/src/eio libuv/src/ev \
687+
jemalloc
687688
do
688689
make_dir rt/$t/stage$s/$i
689690
done

mk/platform.mk

+6-6
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ CFG_LIB_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.so
146146
CFG_LIB_DSYM_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.dylib.dSYM
147147
CFG_GCCISH_CFLAGS_x86_64-unknown-linux-gnu := -Wall -Werror -g -fPIC -m64
148148
CFG_GCCISH_CXXFLAGS_x86_64-unknown-linux-gnu := -fno-rtti
149-
CFG_GCCISH_LINK_FLAGS_x86_64-unknown-linux-gnu := -shared -fPIC -ldl -lpthread -lrt -g -m64
149+
CFG_GCCISH_LINK_FLAGS_x86_64-unknown-linux-gnu := -shared -fPIC -ldl -pthread -lrt -g -m64
150150
CFG_GCCISH_DEF_FLAG_x86_64-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list=
151151
CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-whole-archive
152152
CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-no-whole-archive
@@ -172,7 +172,7 @@ CFG_LIB_GLOB_i686-unknown-linux-gnu=lib$(1)-*.so
172172
CFG_LIB_DSYM_GLOB_i686-unknown-linux-gnu=lib$(1)-*.dylib.dSYM
173173
CFG_GCCISH_CFLAGS_i686-unknown-linux-gnu := -Wall -Werror -g -fPIC -m32
174174
CFG_GCCISH_CXXFLAGS_i686-unknown-linux-gnu := -fno-rtti
175-
CFG_GCCISH_LINK_FLAGS_i686-unknown-linux-gnu := -shared -fPIC -ldl -lpthread -lrt -g -m32
175+
CFG_GCCISH_LINK_FLAGS_i686-unknown-linux-gnu := -shared -fPIC -ldl -pthread -lrt -g -m32
176176
CFG_GCCISH_DEF_FLAG_i686-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list=
177177
CFG_GCCISH_PRE_LIB_FLAGS_i686-unknown-linux-gnu := -Wl,-whole-archive
178178
CFG_GCCISH_POST_LIB_FLAGS_i686-unknown-linux-gnu := -Wl,-no-whole-archive
@@ -198,7 +198,7 @@ CFG_LIB_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib
198198
CFG_LIB_DSYM_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib.dSYM
199199
CFG_GCCISH_CFLAGS_x86_64-apple-darwin := -Wall -Werror -g -fPIC -m64 -arch x86_64
200200
CFG_GCCISH_CXXFLAGS_x86_64-apple-darwin := -fno-rtti
201-
CFG_GCCISH_LINK_FLAGS_x86_64-apple-darwin := -dynamiclib -lpthread -framework CoreServices -Wl,-no_compact_unwind -m64
201+
CFG_GCCISH_LINK_FLAGS_x86_64-apple-darwin := -dynamiclib -pthread -framework CoreServices -Wl,-no_compact_unwind -m64
202202
CFG_GCCISH_DEF_FLAG_x86_64-apple-darwin := -Wl,-exported_symbols_list,
203203
CFG_GCCISH_PRE_LIB_FLAGS_x86_64-apple-darwin :=
204204
CFG_GCCISH_POST_LIB_FLAGS_x86_64-apple-darwin :=
@@ -223,7 +223,7 @@ CFG_LIB_GLOB_i686-apple-darwin=lib$(1)-*.dylib
223223
CFG_LIB_DSYM_GLOB_i686-apple-darwin=lib$(1)-*.dylib.dSYM
224224
CFG_GCCISH_CFLAGS_i686-apple-darwin := -Wall -Werror -g -fPIC -m32 -arch i386
225225
CFG_GCCISH_CXXFLAGS_i686-apple-darwin := -fno-rtti
226-
CFG_GCCISH_LINK_FLAGS_i686-apple-darwin := -dynamiclib -lpthread -framework CoreServices -Wl,-no_compact_unwind -m32
226+
CFG_GCCISH_LINK_FLAGS_i686-apple-darwin := -dynamiclib -pthread -framework CoreServices -Wl,-no_compact_unwind -m32
227227
CFG_GCCISH_DEF_FLAG_i686-apple-darwin := -Wl,-exported_symbols_list,
228228
CFG_GCCISH_PRE_LIB_FLAGS_i686-apple-darwin :=
229229
CFG_GCCISH_POST_LIB_FLAGS_i686-apple-darwin :=
@@ -376,13 +376,13 @@ CFG_LIB_NAME_x86_64-unknown-freebsd=lib$(1).so
376376
CFG_LIB_GLOB_x86_64-unknown-freebsd=lib$(1)-*.so
377377
CFG_LIB_DSYM_GLOB_x86_64-unknown-freebsd=$(1)-*.dylib.dSYM
378378
CFG_GCCISH_CFLAGS_x86_64-unknown-freebsd := -Wall -Werror -g -fPIC -I/usr/local/include
379-
CFG_GCCISH_LINK_FLAGS_x86_64-unknown-freebsd := -shared -fPIC -g -lpthread -lrt
379+
CFG_GCCISH_LINK_FLAGS_x86_64-unknown-freebsd := -shared -fPIC -g -pthread -lrt
380380
CFG_GCCISH_DEF_FLAG_x86_64-unknown-freebsd := -Wl,--export-dynamic,--dynamic-list=
381381
CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-freebsd := -Wl,-whole-archive
382382
CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-freebsd := -Wl,-no-whole-archive
383383
CFG_DEF_SUFFIX_x86_64-unknown-freebsd := .bsd.def
384384
CFG_INSTALL_NAME_x86_64-unknown-freebsd =
385-
CFG_LIBUV_LINK_FLAGS_x86_64-unknown-freebsd := -lpthread -lkvm
385+
CFG_LIBUV_LINK_FLAGS_x86_64-unknown-freebsd := -pthread -lkvm
386386
CFG_EXE_SUFFIX_x86_64-unknown-freebsd :=
387387
CFG_WINDOWSY_x86_64-unknown-freebsd :=
388388
CFG_UNIXY_x86_64-unknown-freebsd := 1

mk/rt.mk

+10-5
Original file line numberDiff line numberDiff line change
@@ -106,18 +106,23 @@ RUNTIME_S_$(1)_$(2) := rt/arch/$$(HOST_$(1))/_context.S \
106106
ifeq ($$(CFG_WINDOWSY_$(1)), 1)
107107
LIBUV_OSTYPE_$(1)_$(2) := win
108108
LIBUV_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/libuv/libuv.a
109+
JEMALLOC_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/jemalloc/lib/jemalloc.lib
109110
else ifeq ($(OSTYPE_$(1)), apple-darwin)
110111
LIBUV_OSTYPE_$(1)_$(2) := mac
111112
LIBUV_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/libuv/libuv.a
113+
JEMALLOC_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/jemalloc/lib/libjemalloc_pic.a
112114
else ifeq ($(OSTYPE_$(1)), unknown-freebsd)
113115
LIBUV_OSTYPE_$(1)_$(2) := unix/freebsd
114116
LIBUV_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/libuv/libuv.a
117+
JEMALLOC_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/jemalloc/lib/libjemalloc_pic.a
115118
else ifeq ($(OSTYPE_$(1)), linux-androideabi)
116119
LIBUV_OSTYPE_$(1)_$(2) := unix/android
117120
LIBUV_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/libuv/libuv.a
121+
JEMALLOC_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/jemalloc/lib/libjemalloc_pic.a
118122
else
119123
LIBUV_OSTYPE_$(1)_$(2) := unix/linux
120124
LIBUV_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/libuv/libuv.a
125+
JEMALLOC_LIB_$(1)_$(2) := rt/$(1)/stage$(2)/jemalloc/lib/libjemalloc_pic.a
121126
endif
122127

123128
RUNTIME_DEF_$(1)_$(2) := rt/rustrt$(CFG_DEF_SUFFIX_$(1))
@@ -133,8 +138,6 @@ ALL_OBJ_FILES += $$(RUNTIME_OBJS_$(1)_$(2))
133138
MORESTACK_OBJ_$(1)_$(2) := rt/$(1)/stage$(2)/arch/$$(HOST_$(1))/morestack.o
134139
ALL_OBJ_FILES += $$(MORESTACK_OBJS_$(1)_$(2))
135140

136-
RUNTIME_LIBS_$(1)_$(2) := $$(LIBUV_LIB_$(1)_$(2))
137-
138141
rt/$(1)/stage$(2)/%.o: rt/%.cpp $$(MKFILE_DEPS)
139142
@$$(call E, compile: $$@)
140143
$$(Q)$$(call CFG_COMPILE_CXX_$(1), $$@, $$(RUNTIME_INCS_$(1)_$(2)) \
@@ -155,11 +158,10 @@ rt/$(1)/stage$(2)/arch/$$(HOST_$(1))/libmorestack.a: $$(MORESTACK_OBJ_$(1)_$(2))
155158
$$(Q)$(AR_$(1)) rcs $$@ $$<
156159

157160
rt/$(1)/stage$(2)/$(CFG_RUNTIME_$(1)): $$(RUNTIME_OBJS_$(1)_$(2)) $$(MKFILE_DEPS) \
158-
$$(RUNTIME_DEF_$(1)_$(2)) \
159-
$$(RUNTIME_LIBS_$(1)_$(2))
161+
$$(RUNTIME_DEF_$(1)_$(2)) $$(LIBUV_LIB_$(1)_$(2)) $$(JEMALLOC_LIB_$(1)_$(2))
160162
@$$(call E, link: $$@)
161163
$$(Q)$$(call CFG_LINK_CXX_$(1),$$@, $$(RUNTIME_OBJS_$(1)_$(2)) \
162-
$$(CFG_GCCISH_POST_LIB_FLAGS_$(1)) $$(RUNTIME_LIBS_$(1)_$(2)) \
164+
$$(JEMALLOC_LIB_$(1)_$(2)) $$(CFG_GCCISH_POST_LIB_FLAGS_$(1)) $$(LIBUV_LIB_$(1)_$(2)) \
163165
$$(CFG_LIBUV_LINK_FLAGS_$(1)),$$(RUNTIME_DEF_$(1)_$(2)),$$(CFG_RUNTIME_$(1)))
164166

165167
# FIXME: For some reason libuv's makefiles can't figure out the
@@ -208,6 +210,9 @@ $$(LIBUV_LIB_$(1)_$(2)): $$(LIBUV_DEPS)
208210
V=$$(VERBOSE)
209211
endif
210212

213+
$$(JEMALLOC_LIB_$(1)_$(2)):
214+
cd $$(CFG_BUILD_DIR)/rt/$(1)/stage$(2)/jemalloc; $(S)src/rt/jemalloc/configure --disable-experimental
215+
$$(Q)$$(MAKE) -C $$(CFG_BUILD_DIR)/rt/$(1)/stage$(2)/jemalloc
211216

212217
# These could go in rt.mk or rustllvm.mk, they're needed for both.
213218

src/compiletest/procsrv.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ use core::os;
1717
use core::run;
1818
use core::str;
1919
use core::task;
20+
use core::vec;
2021

2122
#[cfg(target_os = "win32")]
2223
fn target_env(lib_path: &str, prog: &str) -> ~[(~str,~str)] {
@@ -28,7 +29,7 @@ fn target_env(lib_path: &str, prog: &str) -> ~[(~str,~str)] {
2829
let aux_path = prog.slice(0u, prog.len() - 4u).to_owned() + ".libaux";
2930

3031
env = do vec::map(env) |pair| {
31-
let (k,v) = *pair;
32+
let (k,v) = copy *pair;
3233
if k == ~"PATH" { (~"PATH", v + ";" + lib_path + ";" + aux_path) }
3334
else { (k,v) }
3435
};

src/rt/jemalloc/COPYING

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
Unless otherwise specified, files in the jemalloc source distribution are
2+
subject to the following license:
3+
--------------------------------------------------------------------------------
4+
Copyright (C) 2002-2013 Jason Evans <jasone@canonware.com>.
5+
All rights reserved.
6+
Copyright (C) 2007-2012 Mozilla Foundation. All rights reserved.
7+
Copyright (C) 2009-2013 Facebook, Inc. All rights reserved.
8+
9+
Redistribution and use in source and binary forms, with or without
10+
modification, are permitted provided that the following conditions are met:
11+
1. Redistributions of source code must retain the above copyright notice(s),
12+
this list of conditions and the following disclaimer.
13+
2. Redistributions in binary form must reproduce the above copyright notice(s),
14+
this list of conditions and the following disclaimer in the documentation
15+
and/or other materials provided with the distribution.
16+
17+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY EXPRESS
18+
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
20+
EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
21+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25+
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26+
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27+
--------------------------------------------------------------------------------

0 commit comments

Comments
 (0)