The attached patch tweaks ControlFlowAnalyzer to do its upref visiting eagerly. This results in 1-permutation Showcase compiling about 1-2 seconds faster for me, an improvement of 3-6%.
The reason for upref visiting at all is that if you rescue a virtual method, you also need rescue any overriding methods in subclasses. The current algorithm does this by scanning the whole program, in a loop, to find any such overriding methods. The attached patch rescues these methods eagerly. It takes three changes to make this happen: 1. When a method is rescued, immediately scan all overriding methods. 2. To make #1 efficient, build a reverse index of method overriding when the analyzer starts up. 3. When a type is rescued, immediately scan all of its methods, just like upref visitor did. It also adds PerfLogger calls to GWTCompiler, to make it easy to time an entire compile. Can you review it Scott, or toss it to someone else? -Lex --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---
eagerUpRef-r3983.patch
Description: Binary data
