diff options
| author | _ov4 <ov4@ov4.org> | 2026-10-17 08:32:43 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-10-17 08:32:43 +0000 |
| commit | 59e3c50bcd58130e81e1f57b21d6e57b4d4aba6d (patch) | |
| tree | c5f6c5b1bd367feadca0c2e7d0f47c8dedb91b20 /include/cps | |
| parent | e847e4c53cf21fcb96f7ed7765e305a7ec8e6c19 (diff) | |
feat(classes): destroy and release heap objects with DELETE
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'include/cps')
| -rw-r--r-- | include/cps/CodeGen.h | 2 | ||||
| -rw-r--r-- | include/cps/MemoryHandler.h | 1 |
2 files changed, 3 insertions, 0 deletions
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<std::unique_ptr<ExprAST>> &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<std::unique_ptr<ExprAST>> &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); }; |
