Flow analysis, such as control-flow, data-flow, and exception-flow analysis, usually depends on relational operations on flow sets. Unfortunately, set related operations, such as inclusion and equality, are usually very expensive. They can easily take more than 97% of the total analyzing time, even in a very simple analysis. We attack this performance bottleneck by proposing Godel hashes to enable fast and precise flow analysis. Godel hashes is an ultra compact, partial-order-preserving, fast and perfect hashing mechanism, inspired by the proofs of Godel's incompleteness theorems. Compared with array, tree, traditional hash, and bit vector-backed set implementations, we find Godel hashes to be tens or even hundreds of times faster for performance in the critical operations of inclusion and equality. We apply Godel hashes in real-world analysis for object-oriented programs. The instrumented analysis is tens of times faster than the one with original data structures on DaCapo benchmarks.
['Shuying Liang', 'Weibin Sun', 'Matthew Might']
Fast Flow Analysis with Godel Hashes