On Tue, Apr 7, 2009 at 4:12 PM, Lex Spoon <[email protected]> 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to