From 4e22f464387725a5a282f3d72e11cfb694a31a5a Mon Sep 17 00:00:00 2001 From: _ov4 Date: Sat, 17 Oct 2026 05:33:33 +0000 Subject: feat(memory): add checked REALLOC with failure preservation Co-Authored-By: Claude Fable 5.1 --- include/cps/MemoryHandler.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'include/cps') diff --git a/include/cps/MemoryHandler.h b/include/cps/MemoryHandler.h index fd2c93e..ded838b 100644 --- a/include/cps/MemoryHandler.h +++ b/include/cps/MemoryHandler.h @@ -20,8 +20,9 @@ class MemoryHandler { llvm::IntegerType *SizeTy = nullptr; llvm::StructType *NodeTy = nullptr; llvm::GlobalVariable *Head = nullptr; - llvm::FunctionCallee Malloc, Free; - llvm::Function *AllocateFn = nullptr, *ReleaseFn = nullptr, *FindFn = nullptr; + llvm::FunctionCallee Malloc, Free, Realloc; + llvm::Function *AllocateFn = nullptr, *ReleaseFn = nullptr, *FindFn = nullptr, + *ResizeFn = nullptr; llvm::Value *AllocationError = nullptr, *TrackingError = nullptr, *InvalidAddress = nullptr; void ensureRuntime(); @@ -29,6 +30,7 @@ class MemoryHandler { void buildFind(); void buildAllocate(); void buildRelease(); + void buildResize(); public: MemoryHandler(llvm::LLVMContext &C, llvm::IRBuilder<> &B, llvm::Module &M, @@ -37,6 +39,7 @@ public: llvm::Value *emitAllocate(llvm::Value *Size, int Line); llvm::Value *emitRelease(llvm::Value *Address, int Line); + llvm::Value *emitResize(llvm::Value *Address, llvm::Value *Size, int Line); }; } // namespace cps -- cgit v1.3.1-4-g156e