diff options
author | Paul Smith <psmith@gnu.org> | 2013-05-17 01:20:39 -0400 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2013-05-17 01:20:39 -0400 |
commit | b730fbc6b86d777e80856e997ddc56fc4a851769 (patch) | |
tree | 9ca4f2aae6b0f5d8669c7990f3b2f50f22cd1780 /ChangeLog | |
parent | c21c1455fdfc6e87d75941f48841c72903e1e0f4 (diff) | |
download | gunmake-b730fbc6b86d777e80856e997ddc56fc4a851769.tar.gz |
Remove the dlopen() pointer from struct filedef.
This pointer is almost never needed, and it increases the size of the filedef
struct for all files (of which there are a huge number for large builds).
Instead keep a bit field marking whether the file is a loaded object and if so
call a new function to unload it. In load.c we keep a simple linked list of
loaded objects (of which there will be very few typically) and their dlopen()
pointers.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -1,3 +1,21 @@ +2013-05-17 Paul Smith <psmith@gnu.org> + + * makeint.h: Prototype new unload_file() function. + * load.c (unload_file): Create a function to unload a file. + (struct load_list): Type to remember loaded objects. + (loaded_syms): Global variable of remembered loaded objects so we + can unload them later. We don't have to remove from the list + because the only time we unload is if we're about to re-exec. + (load_object): Remove unneeded extra DLP argument. + (load_file): Remove unneeded extra DLP argument. + * filedef.h (struct file): Remove the DLP pointer and add the + LOADED bit flag. Saves 32/64 bytes per file, as this pointer is + almost never needed. + * read.c (eval): Set the new LOADED bit flag on the file. + * file.c (rehash_file): Merge the loaded bitfield. + * commands.c (execute_file_commands): Call unload_file() instead + of dlclose() directly. + 2013-05-14 Paul Smith <psmith@gnu.org> * doc/make.texi (Loaded Object API): Document the requirement for |