From 2d38faddecfe9dcda35108963261a693eaff95de Mon Sep 17 00:00:00 2001 From: Mike Hommey Date: Tue, 23 Aug 2011 15:43:17 +0200 Subject: [PATCH] Bug 678195 - Remove old style jemalloc. r=khuey --- browser/installer/Makefile.in | 4 - browser/installer/package-manifest.in | 5 - browser/installer/removed-files.in | 11 +- build/win32/Makefile.in | 2 - config/autoconf.mk.in | 2 - configure.in | 60 ++----- memory/jemalloc/Makefile.in | 74 +------- memory/jemalloc/apply-ed-patches.pl | 84 --------- memory/jemalloc/build-crt.py | 20 --- memory/jemalloc/crtvc8sp1-amd64.diff | 235 ------------------------ memory/jemalloc/crtvc8sp1-intel.diff | 229 ----------------------- memory/jemalloc/crtvc9sp1-amd64.diff | 250 -------------------------- memory/jemalloc/crtvc9sp1-intel.diff | 221 ----------------------- memory/jemalloc/ed.exe | Bin 116736 -> 0 bytes memory/jemalloc/jemalloc.c | 14 +- memory/jemalloc/jemalloc.h | 2 +- mobile/installer/Makefile.in | 4 - mobile/installer/package-manifest.in | 5 - mobile/installer/removed-files.in | 11 +- toolkit/mozapps/installer/packager.mk | 4 - 20 files changed, 22 insertions(+), 1215 deletions(-) delete mode 100755 memory/jemalloc/apply-ed-patches.pl delete mode 100644 memory/jemalloc/build-crt.py delete mode 100644 memory/jemalloc/crtvc8sp1-amd64.diff delete mode 100644 memory/jemalloc/crtvc8sp1-intel.diff delete mode 100644 memory/jemalloc/crtvc9sp1-amd64.diff delete mode 100644 memory/jemalloc/crtvc9sp1-intel.diff delete mode 100755 memory/jemalloc/ed.exe diff --git a/browser/installer/Makefile.in b/browser/installer/Makefile.in index ac5880f1302..425dc148063 100644 --- a/browser/installer/Makefile.in +++ b/browser/installer/Makefile.in @@ -88,10 +88,6 @@ endif include $(topsrcdir)/ipc/app/defs.mk DEFINES += -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME) -ifdef WIN32_OLD_STYLE_JEMALLOC -DEFINES += -DWIN32_OLD_STYLE_JEMALLOC=1 -endif - ifneq (,$(filter aurora beta,$(MOZ_UPDATE_CHANNEL))) DEFINES += -DSHIP_FEEDBACK=1 endif diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in index 05a2c8b95ac..bd99d63ebd1 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in @@ -60,10 +60,6 @@ @BINPATH@/@MOZ_CHILD_PROCESS_NAME@ #endif #ifdef XP_WIN32 -#ifdef WIN32_OLD_STYLE_JEMALLOC -@BINPATH@/mozcrt19.dll -@BINPATH@/mozcpp19.dll -#else #ifdef MOZ_MEMORY @BINPATH@/jemalloc.dll #endif @@ -81,7 +77,6 @@ @BINPATH@/msvcp100.dll @BINPATH@/msvcr100.dll #endif -#endif #endif diff --git a/browser/installer/removed-files.in b/browser/installer/removed-files.in index 9fa134ad420..661f2ab7c1e 100644 --- a/browser/installer/removed-files.in +++ b/browser/installer/removed-files.in @@ -1272,15 +1272,8 @@ xpicleanup@BIN_SUFFIX@ components/nsPostUpdateWin.js js3250.dll plugins/npnul32.dll - #ifdef WIN32_OLD_STYLE_JEMALLOC - Microsoft.VC80.CRT.manifest - msvcm80.dll - msvcp80.dll - msvcr80.dll - #else - mozcrt19.dll - mozcpp19.dll - #endif + mozcrt19.dll + mozcpp19.dll #endif @DLL_PREFIX@xpcom_core@DLL_SUFFIX@ components/@DLL_PREFIX@jar50@DLL_SUFFIX@ diff --git a/build/win32/Makefile.in b/build/win32/Makefile.in index 89fecfbc3ec..7f6688b5cb8 100644 --- a/build/win32/Makefile.in +++ b/build/win32/Makefile.in @@ -64,7 +64,6 @@ endif # ENABLE_TESTS include $(topsrcdir)/config/rules.mk -ifndef WIN32_OLD_STYLE_JEMALLOC ifdef WIN32_REDIST_DIR ifndef MOZ_DEBUG @@ -101,4 +100,3 @@ endif endif # ! MOZ_DEBUG endif # WIN32_REDIST_DIR -endif # ! MOZ_MEMORY diff --git a/config/autoconf.mk.in b/config/autoconf.mk.in index 3437b469bd3..01f88cb1296 100644 --- a/config/autoconf.mk.in +++ b/config/autoconf.mk.in @@ -628,9 +628,7 @@ MOZ_TOOLS_DIR = @MOZ_TOOLS_DIR@ MOZ_QUANTIFY = @MOZ_QUANTIFY@ MSMANIFEST_TOOL = @MSMANIFEST_TOOL@ WIN32_REDIST_DIR = @WIN32_REDIST_DIR@ -WIN32_CRT_SRC_DIR = @WIN32_CRT_SRC_DIR@ MOZ_MEMORY_LDFLAGS = @MOZ_MEMORY_LDFLAGS@ -WIN32_OLD_STYLE_JEMALLOC = @WIN32_OLD_STYLE_JEMALLOC@ WIN32_CRT_LIBS = @WIN32_CRT_LIBS@ MOZ_CRT_CPU_ARCH = @MOZ_CRT_CPU_ARCH@ diff --git a/configure.in b/configure.in index 85baedb3f13..660ca13bd26 100644 --- a/configure.in +++ b/configure.in @@ -7418,54 +7418,20 @@ else ;; *-mingw*) AC_DEFINE(MOZ_MEMORY_WINDOWS) - AC_MSG_CHECKING([for VC2005/2008++ CRT source]) - if test "$CC_VERSION" == "14.00.50727.762" -o "$CC_VERSION" == "15.00.30729.01"; then - if test -z "$WIN32_CRT_SRC_DIR" -a -n "$VCINSTALLDIR"; then - WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src" - fi - if test -n "$WIN32_CRT_SRC_DIR" -a -d "$WIN32_CRT_SRC_DIR"; then - AC_MSG_RESULT([yes]) - dnl cpu check - case "${target_cpu}" in - i*86) - MOZ_CRT_CPU_ARCH=intel - ;; - x86_64) - MOZ_CRT_CPU_ARCH=amd64 - ;; - *) - AC_MSG_ERROR([--enable-jemalloc not supported on ${target}]) - ;; - esac - AC_SUBST(MOZ_CRT_CPU_ARCH) - WIN32_OLD_STYLE_JEMALLOC=1 - AC_DEFINE(WIN32_OLD_STYLE_JEMALLOC) - WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd -W` - _objdir_win=`pwd -W` - WIN32_CUSTOM_CRT_DIR="$_objdir_win/memory/jemalloc/crtsrc/build/$MOZ_CRT_CPU_ARCH" - MOZ_MEMORY_LDFLAGS="-MANIFEST:NO -LIBPATH:\"$WIN32_CUSTOM_CRT_DIR\" -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt19 -DEFAULTLIB:mozcpp19" - fi + if test -z "$MOZ_DEBUG"; then + WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib" + else + WIN32_CRT_LIBS="msvcrtd.lib msvcprtd.lib" fi - if test -z "$WIN32_OLD_STYLE_JEMALLOC"; then - AC_MSG_RESULT([no]) - WIN32_NEW_STYLE_JEMALLOC=1 - AC_DEFINE(WIN32_NEW_STYLE_JEMALLOC) - WIN32_CRT_SRC_DIR= - if test -z "$MOZ_DEBUG"; then - WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib" - else - WIN32_CRT_LIBS="msvcrtd.lib msvcprtd.lib" - fi - dnl Look for a broken crtdll.obj - WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj` - lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH - if grep -q '__imp__\{0,1\}free' crtdll.obj; then - MOZ_MEMORY_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt' - else - MOZ_MEMORY_LDFLAGS='$(DIST)/../memory/jemalloc/jemalloc.lib' - fi - rm crtdll.obj + dnl Look for a broken crtdll.obj + WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj` + lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH + if grep -q '__imp__\{0,1\}free' crtdll.obj; then + MOZ_MEMORY_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt' + else + MOZ_MEMORY_LDFLAGS='$(DIST)/../memory/jemalloc/jemalloc.lib' fi + rm crtdll.obj dnl Also pass this to NSPR/NSS DLLFLAGS="$DLLFLAGS $MOZ_MEMORY_LDFLAGS" @@ -7485,9 +7451,7 @@ else fi # MOZ_MEMORY AC_SUBST(MOZ_MEMORY) AC_SUBST(MOZ_MEMORY_LDFLAGS) -AC_SUBST(WIN32_OLD_STYLE_JEMALLOC) AC_SUBST(WIN32_CRT_LIBS) -AC_SUBST(WIN32_CRT_SRC_DIR) dnl Need to set this for make because NSS doesn't have configure AC_SUBST(DLLFLAGS) diff --git a/memory/jemalloc/Makefile.in b/memory/jemalloc/Makefile.in index fc2d4a36e67..63726824600 100644 --- a/memory/jemalloc/Makefile.in +++ b/memory/jemalloc/Makefile.in @@ -49,70 +49,11 @@ MODULE = jemalloc # symbols. VISIBILITY_FLAGS= -ifeq (WINNT,$(OS_TARGET)) -ifdef WIN32_OLD_STYLE_JEMALLOC -# Building the CRT from source -CRT_OBJ_DIR = $(CURDIR)/crtsrc -MOZ_CRT_DLL_NAME = mozcrt19 -MOZ_CRTCPP_DLL_NAME = mozcpp19 -MOZ_CRT_STATIC_LIBS = libcmt libcpmt -MOZ_CRT_DLL = $(CRT_OBJ_DIR)/build/$(MOZ_CRT_CPU_ARCH)/$(MOZ_CRT_DLL_NAME).dll -MOZ_CRT_IMPORT_LIB = $(CRT_OBJ_DIR)/build/$(MOZ_CRT_CPU_ARCH)/$(MOZ_CRT_DLL_NAME).lib -MOZ_CRTCPP_DLL = $(CRT_OBJ_DIR)/build/$(MOZ_CRT_CPU_ARCH)/$(MOZ_CRTCPP_DLL_NAME).dll -MOZ_CRTCPP_IMPORT_LIB = $(CRT_OBJ_DIR)/build/$(MOZ_CRT_CPU_ARCH)/$(MOZ_CRTCPP_DLL_NAME).lib - -# copy the CRT DLLs to dist/bin, -# copy the import libs to dist/lib -libs:: $(MOZ_CRT_DLL) $(MOZ_CRT_IMPORT_LIB) - $(INSTALL) $(MOZ_CRT_DLL) $(MOZ_CRTCPP_DLL) $(FINAL_TARGET) - $(INSTALL) $(MOZ_CRT_IMPORT_LIB) $(MOZ_CRTCPP_IMPORT_LIB) $(DIST)/lib - -$(MOZ_CRT_IMPORT_LIB): $(MOZ_CRT_DLL) - -define EXTRACT_CMD -cd $(CRT_OBJ_DIR)/$(MOZ_CRT_CPU_ARCH)/$(i)_lib && lib "-extract:..\\build\\$(MOZ_CRT_CPU_ARCH)\\$(i)_obj\\unhandld.obj" eh.lib - -endef # don't touch the blank line. actually, don't touch anything in this file. - -# patch if necessary -ifeq ($(CC_VERSION), 14.00.50727.762) -CRTDIFF=crtvc8sp1-$(MOZ_CRT_CPU_ARCH).diff -else -CRTDIFF=crtvc9sp1-$(MOZ_CRT_CPU_ARCH).diff -endif - -$(CRT_OBJ_DIR)/jemalloc.c: $(srcdir)/$(CRTDIFF) - rm -rf $(CRT_OBJ_DIR) - cp -R "$(WIN32_CRT_SRC_DIR)" $(CRT_OBJ_DIR) -# per http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1189363&SiteID=1 - $(foreach i,dll mt xdll xmt,$(EXTRACT_CMD)) -# truly awful -#XXX: get ed into mozillabuild, bug 415123 - $(PERL) $(srcdir)/apply-ed-patches.pl $(srcdir)/$(CRTDIFF) \ - $(CRT_OBJ_DIR) $(srcdir)/ed.exe - -$(MOZ_CRT_DLL): \ - $(CRT_OBJ_DIR)/jemalloc.c $(srcdir)/jemalloc.c $(srcdir)/jemalloc.h \ - $(srcdir)/jemalloc_types.h $(srcdir)/rb.h - cp $(srcdir)/jemalloc.c $(srcdir)/jemalloc.h $(srcdir)/jemalloc_types.h $(srcdir)/rb.h \ - $(CRT_OBJ_DIR) -# this pretty much sucks, but nmake and make don't play well together - $(PYTHON) $(srcdir)/build-crt.py $(CRT_OBJ_DIR) -# XXX: these don't link right for some reason; the problem is likely -# that not all the standard symbols are exported; looks like MSFT -# never updated the sample.def files; could probably fix if someone -# were ever bored enough. :-) - rm -f $(addsuffix .lib, $(addprefix $(CRT_OBJ_DIR)/build/$(MOZ_CRT_CPU_ARCH)/, $(MOZ_CRT_STATIC_LIBS))) - rm -f $(addsuffix .pdb, $(addprefix $(CRT_OBJ_DIR)/build/$(MOZ_CRT_CPU_ARCH)/, $(MOZ_CRT_STATIC_LIBS))) - -# but still export jemalloc.h -EXPORTS = jemalloc.h jemalloc_types.h - -else - CSRCS = jemalloc.c EXPORTS = jemalloc.h jemalloc_types.h LIBRARY_NAME = jemalloc + +ifeq (WINNT,$(OS_TARGET)) FORCE_SHARED_LIB = 1 MOZ_MEMORY_LDFLAGS = # Don't link against ourselves @@ -122,8 +63,6 @@ DEFFILE = $(srcdir)/jemalloc.def LDFLAGS += -ENTRY:DllMain NO_INSTALL_IMPORT_LIBRARY = 1 - -endif else # Not Windows ifeq ($(OS_ARCH),SunOS) @@ -132,8 +71,6 @@ MODULE_OPTIMIZE_FLAGS = -xO5 endif endif -LIBRARY_NAME = jemalloc - # Build jemalloc as a shared lib. This is mandatory for Darwin, since a library # init function is used on that platform. ifeq ($(OS_ARCH),Darwin) @@ -143,9 +80,6 @@ DIST_INSTALL = 1 FORCE_STATIC_LIB= 1 endif -EXPORTS = jemalloc.h jemalloc_types.h -CSRCS = jemalloc.c - #XXX: PGO on Linux causes problems here # See bug 419470 NO_PROFILE_GUIDED_OPTIMIZE = 1 @@ -162,8 +96,6 @@ LDFLAGS += -init _jemalloc_darwin_init endif ifeq (WINNT,$(OS_TARGET)) -ifndef WIN32_OLD_STYLE_JEMALLOC - # Roll our own custom logic here for the import library ############################################################################### @@ -240,6 +172,4 @@ crtdll.obj: msvc_combined.lib # Grab both CRT libraries and combine them into one library to simplify things msvc_combined.lib: lib -OUT:$@ $(WIN32_CRT_LIBS) - -endif endif diff --git a/memory/jemalloc/apply-ed-patches.pl b/memory/jemalloc/apply-ed-patches.pl deleted file mode 100755 index 394a4ce0229..00000000000 --- a/memory/jemalloc/apply-ed-patches.pl +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/perl -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is Mozilla build system. -# -# The Initial Developer of the Original Code is -# Mozilla Foundation. -# Portions created by the Initial Developer are Copyright (C) 2008 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Ted Mielczarek -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** - -# Usage: apply-ed-patches.pl - -use FileHandle; - -sub do_patch { - my ($ed, $target_file, $patch_file, $fh) = @_; - # these keep winding up read only for me - chmod 0666, $target_file; - print $fh "w\n"; - $fh->close(); - print "$ed -s $target_file < $patch_file\n"; - system "$ed -s $target_file < $patch_file\n"; -} - -my $header_done = 0; -my ($target_file,$patch_file) = ('',''); -my $source_patch = $ARGV[0]; -my $srcdir = $ARGV[1]; -my $ed = $ARGV[2]; -$srcdir = "$srcdir/" unless $srcdir =~ m|/$|; -my $pfh = new FileHandle($source_patch, 'r'); -while(<$pfh>) { - # skip initial comment header - next if !$header_done && /^#/; - $header_done = 1; - - next if /^Only in/; - if (/^diff -re (\S+)/) { - my $new_file = $1; - $new_file =~ s|^crt/src/||; - $new_file = "$srcdir$new_file"; - my $new_patch_file = "$new_file.patch"; - - if ($target_file ne '') { - do_patch $ed, $target_file, $patch_file, $fh; - } - $target_file = $new_file; - $patch_file = $new_patch_file; - $fh = new FileHandle($patch_file, 'w'); - next; - } - - print $fh $_ if $fh; -} - -do_patch $ed, $target_file, $patch_file, $fh; diff --git a/memory/jemalloc/build-crt.py b/memory/jemalloc/build-crt.py deleted file mode 100644 index 0a1e10a2732..00000000000 --- a/memory/jemalloc/build-crt.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env python - -import os, sys -from subprocess import Popen, STDOUT, PIPE - -if 'MAKEFLAGS' in os.environ: - del os.environ['MAKEFLAGS'] -proc = Popen(['nmake', 'dll_', 'dll_p', 'mt'], stdout=PIPE, stderr=STDOUT, - cwd=sys.argv[1]) - -while True: - line = proc.stdout.readline() - if line == '': - break - line = line.rstrip() - # explicitly ignore this fatal-sounding non-fatal error - if line == "NMAKE : fatal error U1052: file 'makefile.sub' not found" or line == "Stop.": - continue - print line -sys.exit(proc.wait()) diff --git a/memory/jemalloc/crtvc8sp1-amd64.diff b/memory/jemalloc/crtvc8sp1-amd64.diff deleted file mode 100644 index adc17718d44..00000000000 --- a/memory/jemalloc/crtvc8sp1-amd64.diff +++ /dev/null @@ -1,235 +0,0 @@ -diff -re crt/src/AMD64/_sample_.def crtsrc/AMD64/_sample_.def -1160d -717,718d -663a - posix_memalign -. -637a - memalign -. -494a - malloc_usable_size - jemalloc_stats -. -330,335d -318d -307,308d -75d -9c -LIBRARY MOZCRT19 -. -diff -re crt/src/_sample_.rc crtsrc/_sample_.rc -41c - VALUE "ProductName", "Mozilla Custom C Runtime" -. -39c - VALUE "OriginalFilename", "MOZCRT19.DLL" -. -37c - VALUE "OriginalFilename", "MOZCRT19D.DLL" -. -33c - VALUE "InternalName", "MOZCRT19.DLL" -. -31c - VALUE "InternalName", "MOZCRT19D.DLL" -. -27c - VALUE "CompanyName", "Mozilla Foundation" -. -Only in crtsrc/: build -diff -re crt/src/crt0.c crtsrc/crt0.c -273c - /* - * this used to happen in _mtinit, but we need it before malloc - */ - _init_pointers(); /* initialize global function pointers */ - - if ( malloc_init_hard() ) /* initialize heap */ -. -101a -extern BOOL malloc_init_hard(void); -. -diff -re crt/src/crt0dat.c crtsrc/crt0dat.c -789d -778d -diff -re crt/src/crtexe.c crtsrc/crtexe.c -333,335d -diff -re crt/src/crtheap.c crtsrc/crtheap.c -61c - pv = calloc(count, size); -. -58,59d -diff -re crt/src/crtlib.c crtsrc/crtlib.c -781,788d -416d -400a - malloc_shutdown(); - -. -359d -340d -310,311d -300d -287c - /* - * this used to happen in _mtinit, but we need it before malloc - */ - _init_pointers(); /* initialize global function pointers */ - - if ( malloc_init_hard() ) /* initialize heap */ -. -43a -extern BOOL malloc_init_hard(void); -extern void malloc_shutdown(void); - -. -diff -re crt/src/dllcrt0.c crtsrc/dllcrt0.c -236,237d -183d -173d -158d -153,155d -diff -re crt/src/gs_report.c crtsrc/gs_report.c -23,41d -diff -re crt/src/internal.h crtsrc/internal.h -407a -#endif -. -403a -#if 0 -. -diff -re crt/src/invarg.c crtsrc/invarg.c -103a -VOID NTAPI RtlCaptureContext (PCONTEXT ContextRecord); -. -diff -re crt/src/makefile crtsrc/makefile -1840c --def:$(DEFFILE2_DIR)\sample_p.def -. -1816c - $(DEFFILE2_DIR)\sample_p.def $(CPPSRC_OBJS_DLL:*=dll) \ -. -1745a -$(DEFFILE_DIR)\$(RETAIL_LIB_NAME).def : $(DEFFILE_DIR)\_sample_.def - copy $** $@ -. -1274d -1228,1230d -754c -dll_ :: $(OBJROOT) $(OBJCPUDIR) $(OBJDIR_DLL) $(OBJDIR_DLL)\$(PURE_OBJ_DIR) \ - $(OBJDIR_DLL)\$(CPP_OBJ_DIR) \ - $(RELDIR_CPU) $(PDBDIR_CPU_DLL) $(MAKE_DIRS_DLL) -. -334c -CC_OPTS_BASE=-c -nologo -Zlp8 -W3 -GFy -DWIND32 -. -307,309c -LINKER=link -LINKLIB=link -lib -LINKIMPLIB=link -lib -. -302,304c -LINKER=link -nologo -LINKLIB=link -lib -nologo -LINKIMPLIB=link -lib -nologo -. -209d -21,24c -RETAIL_DLL_NAME=MOZCRT19 -RETAIL_LIB_NAME=mozcrt19 -RETAIL_DLLCPP_NAME=MOZCPP19 -RETAIL_LIBCPP_NAME=mozcpp19 -. -diff -re crt/src/makefile.inc crtsrc/makefile.inc -1624a -$(OBJDIR)\unhandld.obj: $(PREOBJDIR)\unhandld.obj - copy $(PREOBJDIR)\unhandld.obj $@ - -. -1134a - $(OBJDIR)\memmove.obj \ -. -618d -402d -342,353c - $(OBJDIR)\jemalloc.obj \ -. -334,335d -329,330d -327d -323d -320d -diff -re crt/src/makefile.sub crtsrc/makefile.sub -103c -LIB=link -lib -nologo -. -69c -CFLAGS=$(CFLAGS) -O2 -DMOZ_MEMORY=1 -DMOZ_MEMORY_WINDOWS=1 -DMOZ_MEMORY_SIZEOF_PTR_2POW=3 -. -67c -CFLAGS=$(CFLAGS) -O2 -DMOZ_MEMORY=1 -DMOZ_MEMORY_WINDOWS=1 -DMOZ_MEMORY_SIZEOF_PTR_2POW=3 -. -diff -re crt/src/malloc.h crtsrc/malloc.h -189a -#endif -. -177a - -#if 0 -. -161d -83a -#endif -. -70a -#if 0 -. -diff -re crt/src/mlock.c crtsrc/mlock.c -274c -#endif -. -262a -#if 0 -. -diff -re crt/src/new.cpp crtsrc/new.cpp -60d -52,55d -37,38c - break; -. -diff -re crt/src/nothrownew.cpp crtsrc/nothrownew.cpp -37a -#endif -. -31a -#if 1 - break; -#else - -. -diff -re crt/src/sample_p.def crtsrc/sample_p.def -8c -LIBRARY MOZCPP19 -. -diff -re crt/src/sample_p.rc crtsrc/sample_p.rc -41c - VALUE "ProductName", "Mozilla Custom C++ Runtime" -. -39c - VALUE "OriginalFilename", "MOZCPP19.DLL" -. -37c - VALUE "OriginalFilename", "MOZCPP19D.DLL" -. -33c - VALUE "InternalName", "MOZCPP19.DLL" -. -31c - VALUE "InternalName", "MOZCPP19D.DLL" -. -27c - VALUE "CompanyName", "Mozilla Foundation" -. -diff -re crt/src/tidtable.c crtsrc/tidtable.c -393,394d diff --git a/memory/jemalloc/crtvc8sp1-intel.diff b/memory/jemalloc/crtvc8sp1-intel.diff deleted file mode 100644 index a6a64410a61..00000000000 --- a/memory/jemalloc/crtvc8sp1-intel.diff +++ /dev/null @@ -1,229 +0,0 @@ -# The Microsoft C Runtime source code to which this document refers is available -# directly from Microsoft Corporation, under a separate license. -# Please ensure that if you are using that source code, you have appropriate -# rights to use it. By providing you access to this file, Mozilla Corporation -# and its affiliates do not purport to grant any rights in that source code. -# Binaries are available under separate licenses at -# http://www.microsoft.com/downloads/details.aspx?familyid=200b2fd9-ae1a-4a14-984d-389c36f85647&displaylang=en -diff -re crt/src/_sample_.rc ./crtsrc/_sample_.rc -41c - VALUE "ProductName", "Mozilla Custom C Runtime" -. -39c - VALUE "OriginalFilename", "MOZCRT19.DLL" -. -37c - VALUE "OriginalFilename", "MOZCRT19D.DLL" -. -33c - VALUE "InternalName", "MOZCRT19.DLL" -. -31c - VALUE "InternalName", "MOZCRT19D.DLL" -. -27c - VALUE "CompanyName", "Mozilla Foundation" -. -diff -re crt/src/crt0.c ./crtsrc/crt0.c -273c - /* - * this used to happen in _mtinit, but we need it before malloc - */ - _init_pointers(); /* initialize global function pointers */ - - if ( malloc_init_hard() ) /* initialize heap */ -. -101a -extern BOOL malloc_init_hard(void); -. -diff -re crt/src/crt0dat.c ./crtsrc/crt0dat.c -789d -778d -diff -re crt/src/crtexe.c ./crtsrc/crtexe.c -333,335d -diff -re crt/src/crtheap.c ./crtsrc/crtheap.c -61c - pv = calloc(count, size); -. -58,59d -diff -re crt/src/crtlib.c ./crtsrc/crtlib.c -781,788d -416d -400a - malloc_shutdown(); - -. -359d -340d -310,311d -300d -287c - /* - * this used to happen in _mtinit, but we need it before malloc - */ - _init_pointers(); /* initialize global function pointers */ - - if ( malloc_init_hard() ) /* initialize heap */ -. -43a -extern BOOL malloc_init_hard(void); -extern void malloc_shutdown(void); - -. -diff -re crt/src/dllcrt0.c ./crtsrc/dllcrt0.c -236,237d -183d -173d -158d -153,155d -diff -re crt/src/intel/_sample_.def ./crtsrc/intel/_sample_.def -1208d -723,724d -669a - posix_memalign -. -643a - memalign -. -500a - malloc_usable_size - jemalloc_stats -. -336,341d -324d -313,314d -81d -9c -LIBRARY MOZCRT19 -. -diff -re crt/src/internal.h ./crtsrc/internal.h -407a -#endif -. -403a -#if 0 -. -diff -re crt/src/makefile ./crtsrc/makefile -1840c --def:$(DEFFILE2_DIR)\sample_p.def -. -1816c - $(DEFFILE2_DIR)\sample_p.def $(CPPSRC_OBJS_DLL:*=dll) \ -. -1745a -$(DEFFILE_DIR)\$(RETAIL_LIB_NAME).def : $(DEFFILE_DIR)\_sample_.def - copy $** $@ -. -1274d -1228,1230d -754c -dll_ :: $(OBJROOT) $(OBJCPUDIR) $(OBJDIR_DLL) $(OBJDIR_DLL)\$(PURE_OBJ_DIR) \ - $(OBJDIR_DLL)\$(CPP_OBJ_DIR) \ - $(RELDIR_CPU) $(PDBDIR_CPU_DLL) $(MAKE_DIRS_DLL) -. -334c -CC_OPTS_BASE=-c -nologo -Zlp8 -W3 -GFy -DWIND32 -. -307,309c -LINKER=link -LINKLIB=link -lib -LINKIMPLIB=link -lib -. -302,304c -LINKER=link -nologo -LINKLIB=link -lib -nologo -LINKIMPLIB=link -lib -nologo -. -209d -21,24c -RETAIL_DLL_NAME=MOZCRT19 -RETAIL_LIB_NAME=mozcrt19 -RETAIL_DLLCPP_NAME=MOZCPP19 -RETAIL_LIBCPP_NAME=mozcpp19 -. -diff -re crt/src/makefile.inc ./crtsrc/makefile.inc -1624a -$(OBJDIR)\unhandld.obj: $(PREOBJDIR)\unhandld.obj - copy $(PREOBJDIR)\unhandld.obj $@ - -. -618d -402d -342,353c - $(OBJDIR)\jemalloc.obj \ -. -334,335d -329,330d -327d -323d -320d -diff -re crt/src/makefile.sub ./crtsrc/makefile.sub -103c -LIB=link -lib -nologo -. -69c -CFLAGS=$(CFLAGS) -O2 -DMOZ_MEMORY=1 -DMOZ_MEMORY_WINDOWS=1 -. -diff -re crt/src/malloc.h ./crtsrc/malloc.h -189a -#endif -. -177a - -#if 0 -. -161d -83a -#endif -. -70a -#if 0 -. -diff -re crt/src/mlock.c ./crtsrc/mlock.c -274c -#endif -. -262a -#if 0 -. -diff -re crt/src/new.cpp ./crtsrc/new.cpp -60d -52,55d -37,38c - break; -. -diff -re crt/src/nothrownew.cpp ./crtsrc/nothrownew.cpp -37a -#endif -. -31a -#if 1 - break; -#else - -. -diff -re crt/src/sample_p.def ./crtsrc/sample_p.def -8c -LIBRARY MOZCPP19 -. -diff -re crt/src/sample_p.rc ./crtsrc/sample_p.rc -41c - VALUE "ProductName", "Mozilla Custom C++ Runtime" -. -39c - VALUE "OriginalFilename", "MOZCPP19.DLL" -. -37c - VALUE "OriginalFilename", "MOZCPP19D.DLL" -. -33c - VALUE "InternalName", "MOZCPP19.DLL" -. -31c - VALUE "InternalName", "MOZCPP19D.DLL" -. -27c - VALUE "CompanyName", "Mozilla Foundation" -. -diff -re crt/src/tidtable.c ./crtsrc/tidtable.c -393,394d diff --git a/memory/jemalloc/crtvc9sp1-amd64.diff b/memory/jemalloc/crtvc9sp1-amd64.diff deleted file mode 100644 index 72696b4662a..00000000000 --- a/memory/jemalloc/crtvc9sp1-amd64.diff +++ /dev/null @@ -1,250 +0,0 @@ -diff -re crt/src/AMD64/_sample_.def crtsrc/AMD64/_sample_.def -1150d -712,713d -658a - posix_memalign -. -632a - memalign -. -489a - malloc_usable_size -. -461a - jemalloc_stats -. -325,330d -313d -307,308d -75d -9c -LIBRARY MOZCRT19 -. -diff -re crt/src/_sample_.rc crtsrc/_sample_.rc -41c - VALUE "ProductName", "Mozilla Custom C Runtime" -. -39c - VALUE "OriginalFilename", "MOZCRT19.DLL" -. -37c - VALUE "OriginalFilename", "MOZCRT19D.DLL" -. -33c - VALUE "InternalName", "MOZCRT19.DLL" -. -31c - VALUE "InternalName", "MOZCRT19D.DLL" -. -27c - VALUE "CompanyName", "Mozilla Foundation" -. -diff -re crt/src/crt0.c crtsrc/crt0.c -212c - /* - * this used to happen in _mtinit, but we need it before malloc - */ - _init_pointers(); /* initialize global function pointers */ - - if ( malloc_init_hard() ) /* initialize heap */ -. -87a -extern BOOL malloc_init_hard(void); -. -diff -re crt/src/crt0dat.c crtsrc/crt0dat.c -837d -826d -diff -re crt/src/crtdll.c crtsrc/crtdll.c -31,40d -diff -re crt/src/crtexe.c crtsrc/crtexe.c -322,324d -35,45d -diff -re crt/src/crtheap.c crtsrc/crtheap.c -61c - pv = calloc(count, size); -. -58,59d -diff -re crt/src/crtlib.c crtsrc/crtlib.c -686,693d -355d -339a - malloc_shutdown(); - -. -298d -279d -249,250d -239d -226c - /* - * this used to happen in _mtinit, but we need it before malloc - */ - _init_pointers(); /* initialize global function pointers */ - - if ( malloc_init_hard() ) /* initialize heap */ -. -43a -extern BOOL malloc_init_hard(void); -extern void malloc_shutdown(void); - -. -diff -re crt/src/dllcrt0.c crtsrc/dllcrt0.c -189,190d -136d -126d -111d -106,108d -diff -re crt/src/gs_report.c crtsrc/gs_report.c -41c -#endif -. -22c -#if 0 -. -diff -re crt/src/intel/_sample_.def crtsrc/intel/_sample_.def -1198d -718,719d -664a - posix_memalign -. -638a - memalign -. -495a - malloc_usable_size -. -467a - jemalloc_stats -. -331,336d -319d -313,314d -81d -9c -LIBRARY MOZCRT19 -. -diff -re crt/src/internal.h crtsrc/internal.h -413a -#endif -. -409c -#if 0 -. -diff -re crt/src/invarg.c crtsrc/invarg.c -53c -#endif -. -34c -#if 0 -. -diff -re crt/src/makefile crtsrc/makefile -1873c --def:$(DEFFILE2_DIR)\sample_p.def -. -1841c - $(DEFFILE2_DIR)\sample_p.def $(CPPSRC_OBJS_DLL:*=dll) \ -. -1771a -$(DEFFILE_DIR)\$(RETAIL_LIB_NAME).def : $(DEFFILE_DIR)\_sample_.def - copy $** $@ -. -1290d -1235,1237d -760c -dll_ :: $(OBJROOT) $(OBJCPUDIR) $(OBJDIR_DLL) $(OBJDIR_DLL)\$(PURE_OBJ_DIR) \ - $(OBJDIR_DLL)\$(CPP_OBJ_DIR) \ - $(RELDIR_CPU) $(PDBDIR_CPU_DLL) $(MAKE_DIRS_DLL) -. -340c -CC_OPTS_BASE=-c -nologo -Zlp8 -W3 -GFy -DWIND32 -. -213d -21,24c -RETAIL_DLL_NAME=MOZCRT19 -RETAIL_LIB_NAME=mozcrt19 -RETAIL_DLLCPP_NAME=MOZCPP19 -RETAIL_LIBCPP_NAME=mozcpp19 -. -diff -re crt/src/makefile.inc crtsrc/makefile.inc -1636a -$(OBJDIR)\unhandld.obj: $(PREOBJDIR)\unhandld.obj - copy $(PREOBJDIR)\unhandld.obj $@ - -. -623d -621d -405d -344,356c - $(OBJDIR)\jemalloc.obj \ -. -336,337d -331,332d -329d -325d -321,322d -diff -re crt/src/makefile.sub crtsrc/makefile.sub -66c -CFLAGS=$(CFLAGS) -O2 -DMOZ_MEMORY=1 -DMOZ_MEMORY_WINDOWS=1 -DMOZ_MEMORY_SIZEOF_PTR_2POW=3 -. -diff -re crt/src/malloc.h crtsrc/malloc.h -189a -#endif -. -177a - -#if 0 -. -83a -#endif -. -70a -#if 0 -. -diff -re crt/src/mlock.c crtsrc/mlock.c -274c -#endif -. -262a -#if 0 -. -diff -re crt/src/new.cpp crtsrc/new.cpp -60d -52,55d -37,38c - break; -. -diff -re crt/src/nothrownew.cpp crtsrc/nothrownew.cpp -38c -#endif -. -31a -#if 1 - break; -#else - -. -diff -re crt/src/sample_p.def crtsrc/sample_p.def -8c -LIBRARY mozcpp19 -. -diff -re crt/src/sample_p.rc crtsrc/sample_p.rc -41c - VALUE "ProductName", "Mozilla Custom C++ Runtime" -. -39c - VALUE "OriginalFilename", "MOZCPP19.DLL" -. -37c - VALUE "OriginalFilename", "MOZCPP19D.DLL" -. -33c - VALUE "InternalName", "MOZCPP19.DLL" -. -31c - VALUE "InternalName", "MOZCPP19D.DLL" -. -27c - VALUE "CompanyName", "Mozilla Foundation" -. -diff -re crt/src/tidtable.c crtsrc/tidtable.c -360,361d diff --git a/memory/jemalloc/crtvc9sp1-intel.diff b/memory/jemalloc/crtvc9sp1-intel.diff deleted file mode 100644 index dc6b19a1e80..00000000000 --- a/memory/jemalloc/crtvc9sp1-intel.diff +++ /dev/null @@ -1,221 +0,0 @@ -# The Microsoft C Runtime source code to which this document refers is available -# directly from Microsoft Corporation, under a separate license. -# Please ensure that if you are using that source code, you have appropriate -# rights to use it. By providing you access to this file, Mozilla Corporation -# and its affiliates do not purport to grant any rights in that source code. -# Binaries are available under separate licenses at -# http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=en -diff -re crt/src/_sample_.rc crtsrc/_sample_.rc -41c - VALUE "ProductName", "Mozilla Custom C Runtime" -. -39c - VALUE "OriginalFilename", "MOZCRT19.DLL" -. -37c - VALUE "OriginalFilename", "MOZCRT19D.DLL" -. -33c - VALUE "InternalName", "MOZCRT19.DLL" -. -31c - VALUE "InternalName", "MOZCRT19D.DLL" -. -27c - VALUE "CompanyName", "Mozilla Foundation" -. -diff -re crt/src/crt0.c crtsrc/crt0.c -212c - /* - * this used to happen in _mtinit, but we need it before malloc - */ - _init_pointers(); /* initialize global function pointers */ - - if ( malloc_init_hard() ) /* initialize heap */ -. -87a -extern BOOL malloc_init_hard(void); -. -diff -re crt/src/crt0dat.c crtsrc/crt0dat.c -837d -826d -diff -re crt/src/crtdll.c crtsrc/crtdll.c -31,40d -diff -re crt/src/crtexe.c crtsrc/crtexe.c -322,324d -35,45d -diff -re crt/src/crtheap.c crtsrc/crtheap.c -61c - pv = calloc(count, size); -. -58,59d -diff -re crt/src/crtlib.c crtsrc/crtlib.c -686,693d -355d -339a - malloc_shutdown(); - -. -298d -279d -249,250d -239d -226c - /* - * this used to happen in _mtinit, but we need it before malloc - */ - _init_pointers(); /* initialize global function pointers */ - - if ( malloc_init_hard() ) /* initialize heap */ -. -43a -extern BOOL malloc_init_hard(void); -extern void malloc_shutdown(void); - -. -diff -re crt/src/dllcrt0.c crtsrc/dllcrt0.c -189,190d -136d -126d -111d -106,108d -diff -re crt/src/intel/_sample_.def crtsrc/intel/_sample_.def -1198d -718,719d -664a - posix_memalign -. -638a - memalign -. -495a - malloc_usable_size -. -467a - jemalloc_stats -. -331,336d -319d -313,314d -81d -9c -LIBRARY MOZCRT19 -. -diff -re crt/src/internal.h crtsrc/internal.h -413a -#endif -. -409c -#if 0 -. -diff -re crt/src/makefile crtsrc/makefile -1873c --def:$(DEFFILE2_DIR)\sample_p.def -. -1841c - $(DEFFILE2_DIR)\sample_p.def $(CPPSRC_OBJS_DLL:*=dll) \ -. -1771a -$(DEFFILE_DIR)\$(RETAIL_LIB_NAME).def : $(DEFFILE_DIR)\_sample_.def - copy $** $@ -. -1290d -1235,1237d -760c -dll_ :: $(OBJROOT) $(OBJCPUDIR) $(OBJDIR_DLL) $(OBJDIR_DLL)\$(PURE_OBJ_DIR) \ - $(OBJDIR_DLL)\$(CPP_OBJ_DIR) \ - $(RELDIR_CPU) $(PDBDIR_CPU_DLL) $(MAKE_DIRS_DLL) -. -340c -CC_OPTS_BASE=-c -nologo -Zlp8 -W3 -GFy -DWIND32 -. -213d -21,24c -RETAIL_DLL_NAME=MOZCRT19 -RETAIL_LIB_NAME=mozcrt19 -RETAIL_DLLCPP_NAME=MOZCPP19 -RETAIL_LIBCPP_NAME=mozcpp19 -. -diff -re crt/src/makefile.inc crtsrc/makefile.inc -1636a -$(OBJDIR)\unhandld.obj: $(PREOBJDIR)\unhandld.obj - copy $(PREOBJDIR)\unhandld.obj $@ - -. -623d -621d -405d -344,356c - $(OBJDIR)\jemalloc.obj \ -. -336,337d -331,332d -329d -325d -321,322d -diff -re crt/src/makefile.sub crtsrc/makefile.sub -66c -CFLAGS=$(CFLAGS) -O2 -DMOZ_MEMORY=1 -DMOZ_MEMORY_WINDOWS=1 -. -diff -re crt/src/malloc.h crtsrc/malloc.h -189a -#endif -. -177a - -#if 0 -. -83a -#endif -. -70a -#if 0 -. -diff -re crt/src/mlock.c crtsrc/mlock.c -274c -#endif -. -262a -#if 0 -. -diff -re crt/src/new.cpp crtsrc/new.cpp -60d -52,55d -37,38c - break; -. -diff -re crt/src/nothrownew.cpp crtsrc/nothrownew.cpp -38c -#endif -. -31a -#if 1 - break; -#else - -. -diff -re crt/src/sample_p.def crtsrc/sample_p.def -8c -LIBRARY mozcpp19 -. -diff -re crt/src/sample_p.rc crtsrc/sample_p.rc -41c - VALUE "ProductName", "Mozilla Custom C++ Runtime" -. -39c - VALUE "OriginalFilename", "MOZCPP19.DLL" -. -37c - VALUE "OriginalFilename", "MOZCPP19D.DLL" -. -33c - VALUE "InternalName", "MOZCPP19.DLL" -. -31c - VALUE "InternalName", "MOZCPP19D.DLL" -. -27c - VALUE "CompanyName", "Mozilla Foundation" -. -diff -re crt/src/tidtable.c crtsrc/tidtable.c -360,361d diff --git a/memory/jemalloc/ed.exe b/memory/jemalloc/ed.exe deleted file mode 100755 index fc812ea2dbbfe486643cf38a8f6ee68886e24819..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116736 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 diff --git a/memory/jemalloc/jemalloc.c b/memory/jemalloc/jemalloc.c index ad7c4505b81..c7c9b7a4767 100644 --- a/memory/jemalloc/jemalloc.c +++ b/memory/jemalloc/jemalloc.c @@ -203,17 +203,9 @@ #ifdef MOZ_MEMORY_WINDOWS -/* XXXkhuey switch to not patching the CRT for jemalloc all the time */ -/* We use ifndef NEW_STYLE here because when we're build as part of the CRT - we don't have access to AC_DEFINEs */ -#ifndef WIN32_NEW_STYLE_JEMALLOC -#include -#include -#else /* Some defines from the CRT internal headers that we need here. */ #define _CRT_SPINCOUNT 5000 #define __crtInitCritSecAndSpinCount InitializeCriticalSectionAndSpinCount -#endif #include #include @@ -5849,10 +5841,10 @@ malloc_shutdown() * Mangle standard interfaces, in order to avoid linking problems. */ #if defined(MOZ_MEMORY_DARWIN) || defined(MOZ_MEMORY_ANDROID) || \ - defined(WRAP_MALLOC) || defined(WIN32_NEW_STYLE_JEMALLOC) + defined(WRAP_MALLOC) || defined(MOZ_MEMORY_WINDOWS) inline void sys_free(void* ptr) {return free(ptr);} #define malloc(a) je_malloc(a) -#if defined(WIN32_NEW_STYLE_JEMALLOC) || defined(MOZ_MEMORY_DARWIN) +#if defined(MOZ_MEMORY_WINDOWS) || defined(MOZ_MEMORY_DARWIN) #define memalign(a, b) je_memalign(a, b) #endif #define posix_memalign(a, b, c) je_posix_memalign(a, b, c) @@ -6795,7 +6787,7 @@ void *(*__memalign_hook)(size_t alignment, size_t size) = MEMALIGN; # error "Interposing malloc is unsafe on this system without libc malloc hooks." #endif -#ifdef WIN32_NEW_STYLE_JEMALLOC +#ifdef MOZ_MEMORY_WINDOWS /* * In the new style jemalloc integration jemalloc is built as a separate * shared library. Since we're no longer hooking into the CRT binary, diff --git a/memory/jemalloc/jemalloc.h b/memory/jemalloc/jemalloc.h index 6f6dac22c31..a5ea1fe579d 100644 --- a/memory/jemalloc/jemalloc.h +++ b/memory/jemalloc/jemalloc.h @@ -51,7 +51,7 @@ int posix_memalign(void **memptr, size_t alignment, size_t size); #endif /* MOZ_MEMORY_DARWIN, MOZ_MEMORY_LINUX */ #if defined(MOZ_MEMORY_DARWIN) || defined(MOZ_MEMORY_ANDROID) || \ - defined(WRAP_MALLOC) || defined(WIN32_NEW_STYLE_JEMALLOC) + defined(WRAP_MALLOC) || defined(MOZ_MEMORY_WINDOWS) void *je_malloc(size_t size); void *je_valloc(size_t size); void *je_calloc(size_t num, size_t size); diff --git a/mobile/installer/Makefile.in b/mobile/installer/Makefile.in index e2a15528d3c..585e712363e 100644 --- a/mobile/installer/Makefile.in +++ b/mobile/installer/Makefile.in @@ -78,10 +78,6 @@ DEFINES += -DJAREXT=$(JAREXT) include $(topsrcdir)/ipc/app/defs.mk DEFINES += -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME) -ifdef WIN32_OLD_STYLE_JEMALLOC -DEFINES += -DWIN32_OLD_STYLE_JEMALLOC=1 -endif - ifdef MOZ_PKG_MANIFEST_P MOZ_PKG_MANIFEST = package-manifest endif diff --git a/mobile/installer/package-manifest.in b/mobile/installer/package-manifest.in index ffb0b0aa340..464d14220d4 100644 --- a/mobile/installer/package-manifest.in +++ b/mobile/installer/package-manifest.in @@ -58,10 +58,6 @@ @BINPATH@/@MOZ_CHILD_PROCESS_NAME@ #endif #ifdef XP_WIN32 -#ifdef WIN32_OLD_STYLE_JEMALLOC -@BINPATH@/mozcrt19.dll -@BINPATH@/mozcpp19.dll -#else #ifdef MOZ_MEMORY @BINPATH@/jemalloc.dll #endif @@ -79,7 +75,6 @@ @BINPATH@/msvcp100.dll @BINPATH@/msvcr100.dll #endif -#endif #endif diff --git a/mobile/installer/removed-files.in b/mobile/installer/removed-files.in index 616e03f740c..2b487cf56b8 100644 --- a/mobile/installer/removed-files.in +++ b/mobile/installer/removed-files.in @@ -3,13 +3,6 @@ README.txt extensions/feedback@mobile.mozilla.org.xpi #endif #ifdef XP_WIN - #ifdef WIN32_OLD_STYLE_JEMALLOC - Microsoft.VC80.CRT.manifest - msvcm80.dll - msvcp80.dll - msvcr80.dll - #else - mozcrt19.dll - mozcpp19.dll - #endif + mozcrt19.dll + mozcpp19.dll #endif diff --git a/toolkit/mozapps/installer/packager.mk b/toolkit/mozapps/installer/packager.mk index e28df32e20d..4813a6f7a42 100644 --- a/toolkit/mozapps/installer/packager.mk +++ b/toolkit/mozapps/installer/packager.mk @@ -90,9 +90,6 @@ JSSHELL_BINS = \ ifndef MOZ_NATIVE_NSPR JSSHELL_BINS += $(DIST)/bin/$(LIB_PREFIX)nspr4$(DLL_SUFFIX) ifeq ($(OS_ARCH),WINNT) -ifdef WIN32_OLD_STYLE_JEMALLOC -JSSHELL_BINS += $(DIST)/bin/mozcrt19$(DLL_SUFFIX) -else ifdef MOZ_MEMORY JSSHELL_BINS += $(DIST)/bin/jemalloc$(DLL_SUFFIX) endif @@ -107,7 +104,6 @@ endif ifeq ($(_MSC_VER),1500) JSSHELL_BINS += $(DIST)/bin/msvcr100.dll endif -endif else JSSHELL_BINS += \ $(DIST)/bin/$(LIB_PREFIX)plds4$(DLL_SUFFIX) \