diff options
| author | spicyjpeg <thatspicyjpeg@gmail.com> | 2022-07-23 23:49:00 +0200 |
|---|---|---|
| committer | spicyjpeg <thatspicyjpeg@gmail.com> | 2022-07-23 23:49:00 +0200 |
| commit | 0e755e9801a2dcf7b9827c90cc38e9f532d06393 (patch) | |
| tree | 8037363ddfc9c03a67bdf0a1cdc3e11a3332687e /libpsn00b/libc/cpp_support.cpp | |
| parent | 49ee8172ebb6c77071be113a01fc29c48b991479 (diff) | |
| download | psn00bsdk-0e755e9801a2dcf7b9827c90cc38e9f532d06393.tar.gz | |
Replace default allocator with psyqo implementation
Diffstat (limited to 'libpsn00b/libc/cpp_support.cpp')
| -rw-r--r-- | libpsn00b/libc/cpp_support.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/libpsn00b/libc/cpp_support.cpp b/libpsn00b/libc/cpp_support.cpp new file mode 100644 index 0000000..f451044 --- /dev/null +++ b/libpsn00b/libc/cpp_support.cpp @@ -0,0 +1,55 @@ +/* + * PSn00bSDK C++ support library + * (C) 2019-2022 Lameguy64, spicyjpeg - MPL licensed + */ + +#include <stdint.h> +#include <stdlib.h> +#include <stdio.h> + +/* GCC builtins */ + +extern "C" void *__builtin_new(size_t size) { + return malloc(size); +} + +extern "C" void __builtin_delete(void *ptr) { + free(ptr); +} + +/* Default new/delete operators */ + +void *operator new(size_t size) noexcept { + return malloc(size); +} + +void *operator new[](size_t size) noexcept { + return malloc(size); +} + +void operator delete(void *ptr) noexcept { + free(ptr); +} + +void operator delete[](void *ptr) noexcept { + free(ptr); +} + +// https://en.cppreference.com/w/cpp/memory/new/operator_delete +void operator delete(void *ptr, size_t size) noexcept { + free(ptr); +} + +void operator delete[](void *ptr, size_t size) noexcept { + free(ptr); +} + +/* Placement new operators */ + +void *operator new(size_t size, void *ptr) noexcept { + return ptr; +} + +void *operator new[](size_t size, void *ptr) noexcept { + return ptr; +} |
