Save 100-300 KB footprint by not force inlining HashTable functions
As is so easy with templates, HashTable methods, and especially the
hash functions that don't depend on the template arguments were
duplicated over and over again in the binary.
My theory is that the performance win by inlining was offset by the
performance hit by larger footprint. It would be interesting to
see performance measurements on this. If it's just a few cases where
performance is hurt, those could be handled specifically.
The gain in a 64 bit Linux content_shell built with gcc 4.8 was:
Total change: -259104 bytes
===========================
502 symbols added, totalling +160399 bytes across 60 sources
582 symbols removed, totalling -208174 bytes across 72 sources
1219 symbols grown, for a net change of +201263 bytes (939884 bytes before, 1141147 bytes after) across 361 sources
2098 symbols shrunk, for a net change of -412592 bytes (1862633 bytes before, 1450041 bytes after) across 683 sources
The reason symbols grow is that as other functions become smaller, they
might suddenly become inlined themselves and the calling function will
then grow.
BUG=
392389