[libcxx-commits] [PATCH] D57251: [libunwind] Use placement new to avoid dependency C++ library
Petr Hosek via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Jan 25 12:10:00 PST 2019
phosek created this revision.
phosek added reviewers: mstorsjo, ldionne.
Herald added subscribers: libcxx-commits, christof.
The rest of libunwind already uses placement new, these are the only
places where non-placement new is being used introducing undesirable
C++ library dependency.
Repository:
rUNW libunwind
https://reviews.llvm.org/D57251
Files:
libunwind/src/libunwind.cpp
Index: libunwind/src/libunwind.cpp
===================================================================
--- libunwind/src/libunwind.cpp
+++ libunwind/src/libunwind.cpp
@@ -122,12 +122,14 @@
_LIBUNWIND_EXPORT unw_addr_space_t unw_create_addr_space_for_task(task_t task) {
#if __i386__
if (is64bit(task)) {
- unw_addr_space_x86_64 *as = new unw_addr_space_x86_64(task);
+ unw_addr_space_x86_64 *as = malloc(sizeof(unw_addr_space_x86_64));
+ new (as) unw_addr_space_x86_64(task);
as->taskPort = task;
as->cpuType = CPU_TYPE_X86_64;
//as->oas
} else {
- unw_addr_space_i386 *as = new unw_addr_space_i386(task);
+ unw_addr_space_i386 *as = malloc(sizeof(unw_addr_space_i386));
+ new (as) unw_addr_space_i386(task);
as->taskPort = task;
as->cpuType = CPU_TYPE_I386;
//as->oas
@@ -144,18 +146,21 @@
#if __i386__ || __x86_64__
case CPU_TYPE_I386: {
unw_addr_space_i386 *as = (unw_addr_space_i386 *)asp;
- delete as;
+ as->~unw_addr_space_i386();
+ free(as);
}
break;
case CPU_TYPE_X86_64: {
unw_addr_space_x86_64 *as = (unw_addr_space_x86_64 *)asp;
- delete as;
+ as->~unw_addr_space_x86_64();
+ free(as);
}
break;
#endif
case CPU_TYPE_POWERPC: {
unw_addr_space_ppc *as = (unw_addr_space_ppc *)asp;
- delete as;
+ as->~unw_addr_space_ppc();
+ free(as);
}
break;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D57251.183594.patch
Type: text/x-patch
Size: 1385 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20190125/ad2c765e/attachment.bin>
More information about the libcxx-commits
mailing list