aboutsummaryrefslogtreecommitdiff
path: root/include/cps
diff options
context:
space:
mode:
Diffstat (limited to 'include/cps')
-rw-r--r--include/cps/CodeGen.h2
-rw-r--r--include/cps/MemoryHandler.h1
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);
};