aboutsummaryrefslogtreecommitdiff
path: root/libsupport/include/CoreLib/Memory/MemAlloc.h
diff options
context:
space:
mode:
Diffstat (limited to 'libsupport/include/CoreLib/Memory/MemAlloc.h')
-rw-r--r--libsupport/include/CoreLib/Memory/MemAlloc.h124
1 files changed, 0 insertions, 124 deletions
diff --git a/libsupport/include/CoreLib/Memory/MemAlloc.h b/libsupport/include/CoreLib/Memory/MemAlloc.h
deleted file mode 100644
index b7183c0..0000000
--- a/libsupport/include/CoreLib/Memory/MemAlloc.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- RCC-Project
-
- Copyright (C) 2026 Richard Qin
-
- This file is part of RCC-Project.
-
- RCC-Project is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at your option) any
- later version.
-
- RCC-Project is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along with
- RCC-Project; see the file COPYING. If not see
- <http://www.gnu.org/licenses/>.
- */
-
-//===- MemAlloc.h - Memory allocation functions -----------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-/// \file
-///
-/// This file defines counterparts of C library allocation functions defined in
-/// the namespace 'std'. The new allocation functions crash on allocation
-/// failure instead of returning null pointer.
-///
-//===----------------------------------------------------------------------===//
-
-#ifndef RCC_SUPPORT_MEMALLOC_H
-#define RCC_SUPPORT_MEMALLOC_H
-
-#include "CoreLib/Compiler/Compiler.h"
-#include "CoreLib/Error/ErrorHandling.h"
-#include <cstdlib>
-
-namespace rcc
-{
-
-RCC_ATTRIBUTE_RETURNS_NONNULL inline void *
-safe_malloc (size_t Sz)
-{
- void *Result = std::malloc (Sz);
- if (Result == nullptr)
- {
- // It is implementation-defined whether allocation occurs if the space
- // requested is zero (ISO/IEC 9899:2018 7.22.3). Retry, requesting
- // non-zero, if the space requested was zero.
- if (Sz == 0)
- {
- return safe_malloc (1);
- }
- report_bad_alloc_error ("Allocation failed");
- }
- return Result;
-}
-
-RCC_ATTRIBUTE_RETURNS_NONNULL inline void *
-safe_calloc (size_t Count, size_t Sz)
-{
- void *Result = std::calloc (Count, Sz);
- if (Result == nullptr)
- {
- // It is implementation-defined whether allocation occurs if the space
- // requested is zero (ISO/IEC 9899:2018 7.22.3). Retry, requesting
- // non-zero, if the space requested was zero.
- if (Count == 0 || Sz == 0)
- {
- return safe_malloc (1);
- }
- report_bad_alloc_error ("Allocation failed");
- }
- return Result;
-}
-
-RCC_ATTRIBUTE_RETURNS_NONNULL inline void *
-safe_realloc (void *Ptr, size_t Sz)
-{
- void *Result = std::realloc (Ptr, Sz);
- if (Result == nullptr)
- {
- // It is implementation-defined whether allocation occurs if the space
- // requested is zero (ISO/IEC 9899:2018 7.22.3). Retry, requesting
- // non-zero, if the space requested was zero.
- if (Sz == 0)
- {
- return safe_malloc (1);
- }
- report_bad_alloc_error ("Allocation failed");
- }
- return Result;
-}
-
-/// Allocate a buffer of memory with the given size and alignment.
-///
-/// When the compiler supports aligned operator new, this will use it to
-/// handle even over-aligned allocations.
-///
-/// However, this doesn't make any attempt to leverage the fancier techniques
-/// like posix_memalign due to portability. It is mostly intended to allow
-/// compatibility with platforms that, after aligned allocation was added, use
-/// reduced default alignment.
-RCC_ABI RCC_ATTRIBUTE_RETURNS_NONNULL RCC_ATTRIBUTE_RETURNS_NOALIAS void *
-allocate_buffer (size_t Size, size_t Alignment);
-
-/// Deallocate a buffer of memory with the given size and alignment.
-///
-/// If supported, this will used the sized delete operator. Also if supported,
-/// this will pass the alignment to the delete operator.
-///
-/// The pointer must have been allocated with the corresponding new operator,
-/// most likely using the above helper.
-RCC_ABI void
-deallocate_buffer (void *Ptr, size_t Size, size_t Alignment);
-
-} // namespace rcc
-#endif