From b1a912a8a6ff472a49b2e0a09cfd433adfc2cb24 Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Sat, 18 May 2024 21:53:38 -0400 Subject: reorganization, cross compiler --- euler/source/memory/delete.cpp | 17 +++++++++++++++++ euler/source/memory/new.cpp | 13 +++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 euler/source/memory/delete.cpp create mode 100644 euler/source/memory/new.cpp (limited to 'euler/source/memory') diff --git a/euler/source/memory/delete.cpp b/euler/source/memory/delete.cpp new file mode 100644 index 0000000..e4cc288 --- /dev/null +++ b/euler/source/memory/delete.cpp @@ -0,0 +1,17 @@ +#include + +void operator delete(void *ptr) { + euler::dealloc((uint8_t *)ptr - 8, *(uint64_t *)((uint8_t *)ptr - 8)); +} + +void operator delete(void *ptr, uint64_t) { + euler::dealloc((uint8_t *)ptr - 8, *(uint64_t *)((uint8_t *)ptr - 8)); +} + +void operator delete[](void *ptr) { + euler::dealloc((uint8_t *)ptr - 8, *(uint64_t *)((uint8_t *)ptr - 8)); +} + +void operator delete[](void *ptr, uint64_t) { + euler::dealloc((uint8_t *)ptr - 8, *(uint64_t *)((uint8_t *)ptr - 8)); +} diff --git a/euler/source/memory/new.cpp b/euler/source/memory/new.cpp new file mode 100644 index 0000000..931328f --- /dev/null +++ b/euler/source/memory/new.cpp @@ -0,0 +1,13 @@ +#include + +void *operator new(uint64_t size) { + void *ptr = euler::alloc(size + 8); + *(uint64_t *)ptr = size + 8; + return (uint8_t *)ptr + 8; +} + +void *operator new[](uint64_t size) { + void *ptr = euler::alloc(size + 8); + *(uint64_t *)ptr = size + 8; + return (uint8_t *)ptr + 8; +} -- cgit v1.2.3