mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-01 08:42:13 +00:00
3f1f5c9fc2
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
46 lines
1.5 KiB
C++
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"
|