Chromium Code Reviews| Index: lib/compiler/implementation/enqueue.dart |
| diff --git a/lib/compiler/implementation/enqueue.dart b/lib/compiler/implementation/enqueue.dart |
| index 855c539fa1d4a28b9b0a875062deca3965ceb5cf..55d15c40361972404aaff42a46bc7b1fc7f507d1 100644 |
| --- a/lib/compiler/implementation/enqueue.dart |
| +++ b/lib/compiler/implementation/enqueue.dart |
| @@ -148,18 +148,21 @@ class Enqueuer { |
| void registerNewSelector(SourceString name, |
| Selector selector, |
| - Map<SourceString, Set<Selector>> selectorsMap) { |
| + Map<SourceString, Set<Selector>> selectorsMap, |
| + [bool inLoop]) { |
|
ngeoffray
2012/06/12 09:17:40
I wouldn't let the enqueuer be aware of such consi
Mads Ager (google)
2012/06/12 11:01:56
Good point. Removed.
|
| Set<Selector> selectors = |
| selectorsMap.putIfAbsent(name, () => new Set<Selector>()); |
| if (!selectors.contains(selector)) { |
| selectors.add(selector); |
| - handleUnseenSelector(name, selector); |
| + handleUnseenSelector(name, selector, inLoop); |
| } |
| } |
| - void registerInvocation(SourceString methodName, Selector selector) { |
| + void registerInvocation(SourceString methodName, |
| + Selector selector, |
| + [bool inLoop]) { |
| task.measure(() { |
| - registerNewSelector(methodName, selector, universe.invokedNames); |
| + registerNewSelector(methodName, selector, universe.invokedNames, inLoop); |
| }); |
| } |
| @@ -187,9 +190,12 @@ class Enqueuer { |
| } |
| } |
| - void handleUnseenSelector(SourceString methodName, Selector selector) { |
| + void handleUnseenSelector(SourceString methodName, |
| + Selector selector, |
| + [bool inLoop]) { |
| processInstanceMembers(methodName, (Element member) { |
| if (selector.applies(member, compiler)) { |
| + if (inLoop && member is FunctionElement) member.calledInLoop = true; |
| addToWorkList(member); |
| return true; |
| } |
| @@ -206,9 +212,11 @@ class Enqueuer { |
| universe.staticFunctionsNeedingGetter.add(element); |
| } |
| - void registerDynamicInvocation(SourceString methodName, Selector selector) { |
| + void registerDynamicInvocation(SourceString methodName, |
| + Selector selector, |
| + [bool inLoop]) { |
| assert(selector !== null); |
| - registerInvocation(methodName, selector); |
| + registerInvocation(methodName, selector, inLoop); |
| } |
| void registerDynamicInvocationOf(Element element) { |