From 59e3c50bcd58130e81e1f57b21d6e57b4d4aba6d Mon Sep 17 00:00:00 2001 From: _ov4 Date: Sat, 17 Oct 2026 08:32:43 +0000 Subject: feat(classes): destroy and release heap objects with DELETE Co-Authored-By: Claude Opus 5.5 --- include/cps/CodeGen.h | 2 ++ include/cps/MemoryHandler.h | 1 + 2 files changed, 3 insertions(+) (limited to 'include/cps') diff --git a/include/cps/CodeGen.h b/include/cps/CodeGen.h index a70d191..9d71df7 100644 --- a/include/cps/CodeGen.h +++ b/include/cps/CodeGen.h @@ -40,6 +40,8 @@ class CodeGen { llvm::Value *emitMethodCall(const std::string &Class, llvm::Value *Receiver, const std::string &Name, const std::vector> &Args, int Line); + bool typeNeedsDestruction(const std::string &TypeName) const; + bool emitDestroy(const std::string &TypeName, llvm::Value *Addr, int Line); bool typeNeedsConstruction(const std::string &TypeName) const; bool emitConstruct(const std::string &TypeName, llvm::Value *Addr, const std::vector> &Args, int Line); diff --git a/include/cps/MemoryHandler.h b/include/cps/MemoryHandler.h index 2768ebe..45c24dc 100644 --- a/include/cps/MemoryHandler.h +++ b/include/cps/MemoryHandler.h @@ -38,6 +38,7 @@ public: : Context(C), Builder(B), Module(M), Types(TS), Checker(RC), Exceptions(EH) {} llvm::Value *emitAllocate(llvm::Value *Size, int Line); + void emitValidate(llvm::Value *Address, int Line); llvm::Value *emitRelease(llvm::Value *Address, int Line); llvm::Value *emitResize(llvm::Value *Address, llvm::Value *Size, int Line); }; -- cgit v1.3.1-4-g156e