summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2014-09-29 12:49:21 +0100
committerSimon Marlow <marlowsd@gmail.com>2014-11-28 14:10:32 +0000
commit9e6e4796437a7fc23e83605a45db9b2663570123 (patch)
treeb78db2642aed0c47bcbca124f99031fcb52d6d9d /includes
parentb5e8b3b162b3ff15ae6caf1afc659565365f54a8 (diff)
downloadhaskell-9e6e4796437a7fc23e83605a45db9b2663570123.tar.gz
Add purgeObj() to remove the symbol table entries for an object
This allows us to replace an object without actually unloading the old object, which is necessary when we know we have references to the old object so it can't be completely unloaded. Using unloadObj() would cause the GC (CheckUnload) to repeatedly and fruitlessly try to unload the old object.
Diffstat (limited to 'includes')
-rw-r--r--includes/rts/Linker.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/includes/rts/Linker.h b/includes/rts/Linker.h
index c53ad4acc5..a0891f46f7 100644
--- a/includes/rts/Linker.h
+++ b/includes/rts/Linker.h
@@ -51,6 +51,9 @@ void *lookupSymbol( char *lbl );
/* delete an object from the pool */
HsInt unloadObj( pathchar *path );
+/* purge an object's symbols from the symbol table, but don't unload it */
+HsInt purgeObj( pathchar *path );
+
/* add an obj (populate the global symbol table, but don't resolve yet) */
HsInt loadObj( pathchar *path );