The Kaleidoscope tutorial has us "interpreting" top-level expressions by
generating a one-shot anonymous procedure and executing that. Once the
expressions have been executed, these procedures will never be called
again.
How can the associated storage for this anonymous procedure be
reclaimed?
shap
All functions in the tutorial are referenced by their Function*. The Function* uniquely identifies a function and is independent of the name.
-Chris
I had understood that.
So now I have compiled and run my top level expression's anonymous
function. How do I go about properly freeing the Function object,
*including* removing the anonymous procedure name from any global symbol
table (if any) and also advising the runtime that the associated IR
module can now be dropped along with everything else that was generated?
Freeing the machine code is straightforward:
http://llvm.org/doxygen/classllvm_1_1JIT.html#a8
Not sure about the Function instance itself. The delete operator would
be my first guess.
Sandro
I believe that may be correct actually, as the Function destructor
invokes "dropAllReferences":
http://llvm.org/doxygen/classllvm_1_1Function.html#a55
Sandro
// Free JIT'd machine code:
EE->freeMachineCodeForFunction(F);
// Delete functions and IR:
F->eraseFromParent();
-Chris