The buffer system is all well and fine, I didn't have any difficulty determining how it works or how to get it functional. However, it has become time to add all the release_buffer calls and with 2798 get_buffer calls I find myself dreading the prospect. I cannot do them a little at a time, as I can't place into production a mud that uses 180megs of ram at startup before the buffers time out and it settles down to 10 megs (which is a nice reduction from before I started adding the buffer system.) A couple ideas I've been considering, in order of difficulty. 1) Write a program to read the source and put all the release_buffer calls in for me. a) search for all get_buffer calls in the file b) with each get_buffer call, read the source until you get another void, int or struct, acmd call (not prototype). 1) if you find a return, either warn or add the release buffers there too c) look backwards for the release_buffer call for that var d) insert the call if it doesn't exist e) goto b 2) Use a call to 'register' the buffers a) update register buffer to allow buffer requests w/o intervening code to count as one entry in structure b) #define RETURN {release_my_buffers;return;} c) remove all buffers from the 'last' entry in a) 3) Store the function being processed in a local var for each function. Use that to figure out what buffers are in use by the function. This would require storing instance data in a static var for recursive routines. #1 seems like a lot of work. any suggestions on a perl script to handle it? Would be a good excuse to finally learn a bit of perl. #2 would probably become a mess and redefining return seems wrong. #3 would waste a lot of memory storing function names and the static int for recursion would be easy to mess up. Anyone got a better idea? :-) -- -- Gary Barnett, MCNE http://www.ptialaska.net/~gbarnett/ -- Mallory@AntaresMUD telnet://antares.kaschynna.com:7000 -- +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST