Skip to content

Commit 2a22a4e

Browse files
committed
Split placement-new and allocating new
1 parent 372928a commit 2a22a4e

File tree

7 files changed

+45
-19
lines changed

7 files changed

+45
-19
lines changed

libcxx/include/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,11 +585,12 @@ set(files
585585
__new/allocate.h
586586
__new/destroying_delete_t.h
587587
__new/exceptions.h
588+
__new/global_new_delete.h
588589
__new/interference_size.h
589590
__new/launder.h
590591
__new/new_handler.h
591592
__new/nothrow_t.h
592-
__new/operator_new_delete.h
593+
__new/placement_new_delete.h
593594
__node_handle
594595
__numeric/accumulate.h
595596
__numeric/adjacent_difference.h

libcxx/include/__memory/construct_at.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414
#include <__config>
1515
#include <__iterator/access.h>
1616
#include <__memory/addressof.h>
17+
#include <__new/placement_new_delete.h>
1718
#include <__type_traits/enable_if.h>
1819
#include <__type_traits/is_array.h>
1920
#include <__utility/declval.h>
2021
#include <__utility/forward.h>
2122
#include <__utility/move.h>
22-
#include <new>
2323

2424
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
2525
# pragma GCC system_header

libcxx/include/__new/allocate.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#include <__cstddef/max_align_t.h>
1414
#include <__cstddef/size_t.h>
1515
#include <__new/align_val_t.h>
16-
#include <__new/operator_new_delete.h> // for _LIBCPP_HAS_SIZED_DEALLOCATION
16+
#include <__new/global_new_delete.h> // for _LIBCPP_HAS_SIZED_DEALLOCATION
1717

1818
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
1919
# pragma GCC system_header

libcxx/include/__new/operator_new_delete.h renamed to libcxx/include/__new/global_new_delete.h

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
#ifndef _LIBCPP___NEW_OPERATOR_NEW_DELETE_H
10-
#define _LIBCPP___NEW_OPERATOR_NEW_DELETE_H
9+
#ifndef _LIBCPP___NEW_GLOBAL_NEW_DELETE_H
10+
#define _LIBCPP___NEW_GLOBAL_NEW_DELETE_H
1111

1212
#include <__config>
1313
#include <__cstddef/size_t.h>
@@ -84,17 +84,6 @@ _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::align_val_t,
8484
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT;
8585
# endif
8686
# endif
87-
88-
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void*
89-
operator new(std::size_t, void* __p) _NOEXCEPT {
90-
return __p;
91-
}
92-
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void*
93-
operator new[](std::size_t, void* __p) _NOEXCEPT {
94-
return __p;
95-
}
96-
inline _LIBCPP_HIDE_FROM_ABI void operator delete(void*, void*) _NOEXCEPT {}
97-
inline _LIBCPP_HIDE_FROM_ABI void operator delete[](void*, void*) _NOEXCEPT {}
9887
#endif
9988

100-
#endif // _LIBCPP___NEW_OPERATOR_NEW_DELETE_H
89+
#endif // _LIBCPP___NEW_GLOBAL_NEW_DELETE_H
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#ifndef _LIBCPP___NEW_PLACEMENT_NEW_DELETE_H
10+
#define _LIBCPP___NEW_PLACEMENT_NEW_DELETE_H
11+
12+
#include <__config>
13+
#include <__cstddef/size_t.h>
14+
15+
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
16+
# pragma GCC system_header
17+
#endif
18+
19+
#if defined(_LIBCPP_ABI_VCRUNTIME)
20+
# include <new.h>
21+
#else
22+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void*
23+
operator new(std::size_t, void* __p) _NOEXCEPT {
24+
return __p;
25+
}
26+
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void*
27+
operator new[](std::size_t, void* __p) _NOEXCEPT {
28+
return __p;
29+
}
30+
inline _LIBCPP_HIDE_FROM_ABI void operator delete(void*, void*) _NOEXCEPT {}
31+
inline _LIBCPP_HIDE_FROM_ABI void operator delete[](void*, void*) _NOEXCEPT {}
32+
#endif
33+
34+
#endif // _LIBCPP___NEW_PLACEMENT_NEW_DELETE_H

libcxx/include/module.modulemap

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1607,11 +1607,12 @@ module std [system] {
16071607
module allocate { header "__new/allocate.h" }
16081608
module destroying_delete_t { header "__new/destroying_delete_t.h" }
16091609
module exceptions { header "__new/exceptions.h" }
1610+
module global_new_delete { header "__new/global_new_delete.h" }
16101611
module interference_size { header "__new/interference_size.h" }
16111612
module launder { header "__new/launder.h" }
16121613
module new_handler { header "__new/new_handler.h" }
16131614
module nothrow_t { header "__new/nothrow_t.h" }
1614-
module operator_new_delete { header "__new/operator_new_delete.h" }
1615+
module placement_new_delete { header "__new/placement_new_delete.h" }
16151616

16161617
export *
16171618
}

libcxx/include/new

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,10 @@ void operator delete[](void* ptr, void*) noexcept;
9292
# include <__new/align_val_t.h>
9393
# include <__new/allocate.h>
9494
# include <__new/exceptions.h>
95+
# include <__new/global_new_delete.h>
9596
# include <__new/new_handler.h>
9697
# include <__new/nothrow_t.h>
97-
# include <__new/operator_new_delete.h>
98+
# include <__new/placement_new_delete.h>
9899

99100
# if _LIBCPP_STD_VER >= 17
100101
# include <__new/interference_size.h>

0 commit comments

Comments
 (0)