Skip to content

Commit d36bd70

Browse files
committedFeb 15, 2015
Implement C++14's sized deallocation functions, since there are no longer implicitly defined by clang, as of r229241.
llvm-svn: 229281
1 parent f02ad93 commit d36bd70

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed
 

‎libcxx/include/new

+10
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,18 @@ new_handler get_new_handler() noexcept;
5050
void* operator new(std::size_t size); // replaceable
5151
void* operator new(std::size_t size, const std::nothrow_t&) noexcept; // replaceable
5252
void operator delete(void* ptr) noexcept; // replaceable
53+
void operator delete(void* ptr, std::size_t size) noexcept; // replaceable, C++14
5354
void operator delete(void* ptr, const std::nothrow_t&) noexcept; // replaceable
55+
void operator delete(void* ptr, std::size_t size,
56+
const std::nothrow_t&) noexcept; // replaceable, C++14
5457
5558
void* operator new[](std::size_t size); // replaceable
5659
void* operator new[](std::size_t size, const std::nothrow_t&) noexcept; // replaceable
5760
void operator delete[](void* ptr) noexcept; // replaceable
61+
void operator delete[](void* ptr, std::size_t size) noexcept; // replaceable, C++14
5862
void operator delete[](void* ptr, const std::nothrow_t&) noexcept; // replaceable
63+
void operator delete[](void* ptr, std::size_t size,
64+
const std::nothrow_t&) noexcept; // replaceable, C++14
5965
6066
void* operator new (std::size_t size, void* ptr) noexcept;
6167
void* operator new[](std::size_t size, void* ptr) noexcept;
@@ -133,7 +139,9 @@ _LIBCPP_NEW_DELETE_VIS void* operator new(std::size_t __sz)
133139
;
134140
_LIBCPP_NEW_DELETE_VIS void* operator new(std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
135141
_LIBCPP_NEW_DELETE_VIS void operator delete(void* __p) _NOEXCEPT;
142+
_LIBCPP_NEW_DELETE_VIS void operator delete(void* __p, std::size_t __sz) _NOEXCEPT;
136143
_LIBCPP_NEW_DELETE_VIS void operator delete(void* __p, const std::nothrow_t&) _NOEXCEPT;
144+
_LIBCPP_NEW_DELETE_VIS void operator delete(void* __p, std::size_t __sz, const std::nothrow_t&) _NOEXCEPT;
137145

138146
_LIBCPP_NEW_DELETE_VIS void* operator new[](std::size_t __sz)
139147
#if !__has_feature(cxx_noexcept)
@@ -142,7 +150,9 @@ _LIBCPP_NEW_DELETE_VIS void* operator new[](std::size_t __sz)
142150
;
143151
_LIBCPP_NEW_DELETE_VIS void* operator new[](std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
144152
_LIBCPP_NEW_DELETE_VIS void operator delete[](void* __p) _NOEXCEPT;
153+
_LIBCPP_NEW_DELETE_VIS void operator delete[](void* __p, std::size_t __sz) _NOEXCEPT;
145154
_LIBCPP_NEW_DELETE_VIS void operator delete[](void* __p, const std::nothrow_t&) _NOEXCEPT;
155+
_LIBCPP_NEW_DELETE_VIS void operator delete[](void* __p, std::size_t __sz, const std::nothrow_t&) _NOEXCEPT;
146156

147157
inline _LIBCPP_INLINE_VISIBILITY void* operator new (std::size_t, void* __p) _NOEXCEPT {return __p;}
148158
inline _LIBCPP_INLINE_VISIBILITY void* operator new[](std::size_t, void* __p) _NOEXCEPT {return __p;}

‎libcxx/src/new.cpp

+29-1
Original file line numberDiff line numberDiff line change
@@ -124,18 +124,39 @@ operator delete(void* ptr) _NOEXCEPT
124124
::free(ptr);
125125
}
126126

127+
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
128+
void
129+
operator delete(void* ptr, size_t) _NOEXCEPT
130+
{
131+
::operator delete(ptr);
132+
}
133+
127134
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
128135
void
129136
operator delete(void* ptr, const std::nothrow_t&) _NOEXCEPT
130137
{
131138
::operator delete(ptr);
132139
}
133140

141+
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
142+
void
143+
operator delete(void* ptr, size_t, const std::nothrow_t&) _NOEXCEPT
144+
{
145+
::operator delete(ptr);
146+
}
147+
134148
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
135149
void
136150
operator delete[] (void* ptr) _NOEXCEPT
137151
{
138-
::operator delete (ptr);
152+
::operator delete(ptr);
153+
}
154+
155+
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
156+
void
157+
operator delete[] (void* ptr, size_t) _NOEXCEPT
158+
{
159+
::operator delete[](ptr);
139160
}
140161

141162
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
@@ -145,6 +166,13 @@ operator delete[] (void* ptr, const std::nothrow_t&) _NOEXCEPT
145166
::operator delete[](ptr);
146167
}
147168

169+
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
170+
void
171+
operator delete[] (void* ptr, size_t, const std::nothrow_t&) _NOEXCEPT
172+
{
173+
::operator delete[](ptr);
174+
}
175+
148176
#endif // !__GLIBCXX__
149177

150178
namespace std

0 commit comments

Comments
 (0)