gecko-dev/memory/build/fallback.cpp
Mike Hommey 3f1f5c9fc2 Bug 1423114 - Remove moz_xposix_memalign and moz_xvalloc. r=njn
They are both infallible wrappers of posix_memalign and valloc.
There is also moz_xmemalign, which wraps memalign, which is mostly
always available as of bug 1402647.

None of them are actually used, but it's still desirable to at least
have one infallible variant, so keep moz_xmemalign and remove the other
two.

While here, we actually make both memalign and moz_xmemalign always
available.

--HG--
extra : rebase_source : 1c3ca4b3e3310543145f3181dfa4e764be1d6ff8
2017-12-05 17:34:19 +09:00

46 lines
1.5 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "mozmemory.h"
#include "mozjemalloc.h"
#include <stdlib.h>
#ifndef HAVE_MEMALIGN
MOZ_MEMORY_API void*
memalign(size_t aAlignment, size_t aSize)
{
#ifdef XP_WIN
return _aligned_malloc(aSize, aAlignment);
#else
void* ret;
if (posix_memalign(&ret, aAlignment, aSize) != 0) {
return nullptr;
}
return ret;
#endif
}
#endif
struct SystemMalloc
{
#define MALLOC_DECL(name, return_type, ...) \
static inline return_type name(ARGS_HELPER(TYPED_ARGS, ##__VA_ARGS__)) \
{ \
return ::name(ARGS_HELPER(ARGS, ##__VA_ARGS__)); \
}
#define MALLOC_FUNCS MALLOC_FUNCS_MALLOC_BASE
#include "malloc_decls.h"
};
#define MALLOC_DECL(name, return_type, ...) \
MOZ_JEMALLOC_API return_type name(ARGS_HELPER(TYPED_ARGS, ##__VA_ARGS__)) \
{ \
return DummyArenaAllocator<SystemMalloc>::name( \
ARGS_HELPER(ARGS, ##__VA_ARGS__)); \
}
#define MALLOC_FUNCS MALLOC_FUNCS_ARENA
#include "malloc_decls.h"