FYI: I just committed the last of my outstanding memory work to trunk. Lex kindly agreed to watch the build and do a roll-back for me if something breaks.
On Tue, Apr 7, 2009 at 10:33 PM, Scott Blum <sco...@google.com> wrote: > On Tue, Apr 7, 2009 at 4:12 PM, Lex Spoon <sp...@google.com> wrote: > >> > 5178: Also tightened up the recursive method slightly, and managing the >> > "computed" set better. This works because once a class transitions from >> > hasClinit -> !hasClinit, there's no possible way it can ever go back. >> >> Small problem: I believe line 644-646 in the patched version is >> intended to test "target", not "type". If that sounds right, then the >> rest LGTM. Otherwise, let's discuss how this is supposed to work. >> > > Nice catch! I botched a manual inlining of lines 636-641 in the original. > > >> By the way, this algorithm could be sped up if, it mattered for >> performance. Instead of repeatedly recursing for each type, start by >> marking classes where hasLiveCode() as having clinits. Then, >> propagate clinit-ness backwards along the getClinitTargets() graph. >> Any class not reached does not needs its clinit. The advantage >> probably doesn't matter in this case in practice, but I mention it >> because this funny algorithm pattern keeps coming up. >> > > That is a better approach, I'll have to remember that next time I run into > this pattern. > > Thanks, > Scott > > --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---