http://weknowmemes.com/wp-content/uploads/2012/01/op-will-surely-deliver-lets-just-wait.jpg
Yes, I did actually work on the GVN pass---even got my master's degree. After finally defending my thesis (available at https://github.com/ajvondrak/thesis), I started a teaching job at my university, which proved to be a lot of work. Thus, I didn't find time to clean up the issues I wanted to fix before pushing this to the public. But it's been a long time, and I figured I should actually put *something* out one way or another. So, here it is: https://github.com/ajvondrak/factor/tree/gvn Right now, the global value numbering pass lives in extra/compiler/cfg/gvn, thus you can simply switch out the USING: in compiler.cfg.optimizer to give it a whirl. Now that it's summer, I hope to be able to work on the broken parts some more. To wit, * I never updated the old value-numbering unit tests, so gvn-tests will fail (whether because the global optimization changes test outcomes or just because of the tweaked interface). * The same tests that fail on my personal machine [1] from a load-all test-all without GVN still fail using GVN. The only previously-passing tests that now fail unexpectedly were in math.vectors.simd (memory protection faults), so there's something buggy going on with SIMD stuff. (This failure isn't mentioned in the thesis because I hadn't done a load-all back then.) Otherwise, the work seems interesting, if nothing else: * My thesis lends some documentation to the project, I hope. * With GVN, Factor still bootstraps in about the same amount of time. * The GVN pass should, ideally, replace the compiler.cfg.copy-prop pass. * When I ran them for my thesis a year ago, the benchmarks showed some impressive improvements across the board (summarized in the PDF). These were run on my old single-core 3.2 GHz Pentium 4 machine with 2 GB RAM, running Debian (testing). Nowadays, on my 2.83 GHz Intel Core 2 Quad with 8 GB RAM, I get more erratic / less dramatic results. Not sure why, but it'd probably be interesting to find out. Factor code has been a pleasure to work with. Hope these changes are worth anything. Thanks, --Alex Vondrak [1] Most of the failures were from DLLs I didn't have installed (libpq.so, libsqlite3.so, libudis86.so.0, libncursesw.so, and libblas.so for tests in db, furnace, site-watcher, webapps.mason.backend, math.blas.matrices, math.blas.vectors, tools.disassembler, and curses). Other than that, some http tests failed with 500 errors (expecting 404s), io.launcher.unix had a killed process, and memcached tests fail with Connection refused (111). Nothing that seems like a big deal. ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk