📄 changelog
字号:
Wed Dec 9 14:33:34 1992 Per Bothner (bothner@cygnus.com) * src/hash-table.cc, src/bool-array.h: ANSIfy bzero->memset.Thu Dec 3 19:34:12 1992 Per Bothner (bothner@cygnus.com) * Makefile.in (distclean, realclean): Don't delete Makefile before recursing.Fri Nov 6 13:41:49 1992 Per Bothner (bothner@rtl.cygnus.com) * key-list.{h,cc}: Remove MAX_INT (and similar) constant fields from Key_List class, and use INT_MAX (etc) from limits.h. * key-list.{h,cc}, options.{h,cc}, vectors.h: Removed all uses of initialized const fields, as they are non-standard - and their use was easy to do away with. Mostly, just made the constants static non-fields in the .cc file.Mon Nov 2 13:10:11 1992 Per Bothner (bothner@cygnus.com) * tests/Makefile.in: When generating cinset.c, don't pass -C, since -C assumes an ANSI compiler. Add the -C flag (with -a) when generating test.out.3 instead. * tests/expected.out.3: Update accordingly.Wed Aug 12 11:47:54 1992 Per Bothner (bothner@cygnus.com) * Makefile.in: Factor out common flags into $(FLAGS_TO_PASS). * Makefile.in: 'install-info' depends on gperf.info.Mon Aug 10 11:39:52 1992 Ian Lance Taylor (ian@dumbest.cygnus.com) * Makefile.in, src/Makefile.in: always create installation directories.Mon Jul 20 15:33:21 1992 Mike Stump (mrs@cygnus.com) * src/new.cc (operator new): Add cast from void * to char *, since it is not a standard conversion.Wed Jun 17 16:25:30 1992 Per Bothner (bothner@rtl.cygnus.com) * src/gen-perf.cc: #include <_G_config.h> for _G_SYSV. * src/key-list.cc: alloca() hair. * src/main.cc (main): Only call getrlimit if _G_HAVE_SYS_RESOURCE. * Makefile,in, {src,test}/Makefile.in: Fix *clean rules.Fri May 29 13:21:13 1992 Per Bothner (bothner@rtl.cygnus.com) * src/gen-perf.cc: Replace USG -> _G_SYSV.Thu May 14 13:58:36 1992 Per Bothner (bothner@rtl.cygnus.com) * src/Makefile.in: Don't pass obsolete flag -DUNLIMIT_STACK. * tests/Makefile.in (clean): Fix.Sat Mar 7 00:03:56 1992 K. Richard Pixley (rich@rtl.cygnus.com) * gperf.texinfo: added menu item hook.Wed Feb 26 18:04:40 1992 K. Richard Pixley (rich@cygnus.com) * Makefile.in, configure.in: removed traces of namesubdir, -subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced copyrights to '92, changed some from Cygnus to FSF.Sun Jan 26 19:21:58 1992 Per Bothner (bothner at cygnus.com) * tests/Makefile.in: Use re-directed stdin instead of file name in argv. This allows us to remove the filename from the output, the expected output, and hence the diffs. (Note that the input file is in $(srcdir), which we cannot place in the expected out files.) * tests/expected.out.[1235]: Edit out input filename, to match new output.Thu Jun 28 16:17:27 1990 Doug Schmidt (schmidt at brilliant) * Wow, first fix on the new job! There was a dumb error in Key_List::output_lookup_function, where I printed the string "&wordlist[key]" instead of the correct "&wordlist[index]". * Added a couple of #ifdefs for USG support. Sun Jun 3 17:16:36 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) * Updated the version number to 2.5 and sent to Doug Lea for release with the latest GNU libg++. * Changed the error handling when a keyword file cannot be opened (now calls perror).Wed May 30 14:49:40 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) * Instrumented the source code with trace statements automagically inserted using my new automated trace instrumentation tool!Wed May 9 11:47:41 1990 Doug Schmidt (schmidt at siam.ics.uci.edu) * Really fixed the previous bug. Turns out that a small amount of logic had to be duplicated to handle static links that occur as part of dynamic link chains. What a pain!!!Tue May 8 23:11:44 1990 Doug Schmidt (schmidt at siam.ics.uci.edu) * Fixed a stupid bug in Key_List::output_lookup_array that was causing incorrect counts to be generated when there were both static and dynamic links occurring for the same hash value. Also simplified the code that performs the logic in this routine.Mon Apr 30 17:37:24 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) * Fixed stupid bug in Key_List::output_lookup_array that was making the generated lookup[] array contain `chars' even when the values stored in the chars are greater than 127! * Changed the behavior of the -G (global table) option so that it will output the `length[]' array in the global scope along with the `word_list[]' array. * Fixed a stupid bug in Key_List::output_lookup_function that would always output the complicated `duplicate-handling' lookup logic, even when there were no duplicates in the input! * Yikes, had to modify a bunch of stuff in key-list.cc to correctly handle duplicate entries. Changed the generated code so that the MIN_HASH_VALUE is no longer subtracted off when calculating the hash value for a keyword. This required changing some other code by substituting MAX_HASH_VALUE for TOTAL_KEYS in several places. Finally, this means that the generated tables may contain leading null entries, but I suppose it is better to trade-off space to get faster performance...Mon Mar 26 13:08:43 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) * Updated version number to 2.4 to reflect the latest changes. * Changed the main program so that it always prints out gperf's execution timings to the generated output file. Sun Mar 25 12:39:30 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) * Added the -Z option so that users can specify the name of the generated class explicitly. Updated documentation to reflect this change. * Modified the generated C++ class interface so that the functions are declared static (to remove the overhead of passing the `this' pointer). This means that operator()() can no longer be used, since it only works on non-static member functions. Also changed things so that there is no constructor (why waste the extra call, when it doesn't do anything, eh?) * Modified the behavior of Key_List::output when the -L C++ option is enabled. Previously the code generated use const data members to record MIN_WORD_LENGTH, MIN_HASH_VALUE, etc. However, as pointed out by James Clark this may result in suboptimal behavior on the part of C++ compilers that can't inline these values. Therefore, the new behavior is identical to what happens with -L C, i.e., either #defines or function-specific enums are used. Why sacrifice speed for some abstract notion of `code purity?' ;-)Tue Mar 6 18:17:42 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) * Added the -E option that defines constant values using an enum local to the lookup function rather than with #defines. This also means that different lookup functions can reside in the same file. Thanks to James Clark (jjc@ai.mit.edu). Sat Mar 3 20:19:00 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) * Added a special case to key_list::output_switch that doesn't generate extra comparisons when the `-S' is given an argument of 1 (the normal case). This should speed up the generated code output a tad...Fri Feb 23 14:21:28 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) * Renamed all instances of member function get_keysig_size to get_max_keysig_size, since this is more precise... * Changed all occurrences of charset to keysig (stands for ``key signature'') to reflect the new naming convention used in the USENIX paper.Thu Feb 22 11:28:36 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) * Changed the name of the generated associated values table from asso_value to asso_values to reflect conventions in the USENIX C++ paper.Thu Feb 15 23:29:03 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) * Updated the gperf.texinfo file to fix some formatting problems that had crept in since last time.Wed Feb 14 23:27:24 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) * Fixed stupid bug in key-list.cc (get_special_input), wher gperf replaced each '%' with the succeeding character. * Added support for multiple target language generation. Currently handled languages are C and C++, with C as the default. Updated documentation and option handler to reflect the changes. * Added a global destructor to new.cc and removed the #ifdef, since the bloody thing now works with libg++.Mon Feb 14 13:00:00 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) * Found out that my gperf paper was accepted at the upcoming USENIX C++ Conference in San Francisco. Yow!Tue Jan 30 09:00:29 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) * #ifdef'd out the new.cc memory allocator, since there are problems with this and the libg++ stuff. * Changed key-list.h so that class Vectors is a public (rather than private) base class for class Key_List. The previous form was illegal C++, but wasn't being caught by the old g++ compiler. Should work now... ;-)Sun Dec 10 14:08:23 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) * Added several changes from rfg@ics.uci.edu. These changes help to automate the build process.Wed Nov 15 15:49:33 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) * Removed conditional compilation for GATHER_STATISTICS. There's really no good reason to avoid collecting this info at run-time, since that section of code is *hardly* the bottleneck... ;-) * Simplified the C output routines in Key_List::set_output_types and Key_List::output_keyword_table a bit in order to speed-up and clean up the code generation. * Modified function Key_List::get_special_input so that it does not try to `delete' a buffer that turned out to be too short. This is important since the new memory management scheme does not handle deletions. However, adding a small amount of garbage won't hurt anything, since we generally don't do this operation more than a couple times *at most*! * Created a new file (new.cc) which includes my own overloaded operator new. This function should dramatically reduce the number of calls to malloc since it grabs large chunks and doles them out in small pieces. As a result of this change the class-specific `operator new' was removed from class List_Node.Tue Nov 14 21:45:30 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) * Continued to refine the great hack. The latest trick is to try and replace most uses of dynamic memory (i.e., calls to new) with uses of gcc dynamic arrays (i.e., an alloca solution). This makes life much easier for the overall process-size, since it reduces the amount of overhead for memory management. As a side-effect from this change there is no reason to have the Bool_Array::dispose member function, so it's outta here! * Fixed a stupid bug that was an disaster waiting to happen... Instead of making the boolean array large enough to index max_hash_value it was only large enough to index max_hash_value - 1. Once again, an off-by-one mistake in C/C++!!!!Mon Nov 13 19:38:27 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) * Added the final great hack! This allows us to generate hash tables for near-perfect hash functions that contain duplicates, *without* having to use switch statements! Since many compilers die on large switch statements this feature is essential. Furthermore, it appears that the generated code is often *smaller* than that put out by
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -