| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of resolution; | 5 part of resolution; |
| 6 | 6 |
| 7 /// [ResolutionRegistry] collects all resolution information. It stores node | 7 /// [ResolutionRegistry] collects all resolution information. It stores node |
| 8 /// related information in a [TreeElements] mapping and registers calls with | 8 /// related information in a [TreeElements] mapping and registers calls with |
| 9 /// [Backend], [World] and [Enqueuer]. | 9 /// [Backend], [World] and [Enqueuer]. |
| 10 // TODO(johnniwinther): Split this into an interface and implementation class. | 10 // TODO(johnniwinther): Split this into an interface and implementation class. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 | 22 |
| 23 @override | 23 @override |
| 24 Iterable<Element> get otherDependencies => mapping.otherDependencies; | 24 Iterable<Element> get otherDependencies => mapping.otherDependencies; |
| 25 | 25 |
| 26 @override | 26 @override |
| 27 void registerDependency(Element element) { | 27 void registerDependency(Element element) { |
| 28 mapping.registerDependency(element); | 28 mapping.registerDependency(element); |
| 29 } | 29 } |
| 30 | 30 |
| 31 @override | 31 @override |
| 32 void registerDynamicGetter(Selector selector) { | 32 void registerDynamicGetter(UniverseSelector selector) { |
| 33 world.registerDynamicGetter(selector); | 33 world.registerDynamicGetter(selector); |
| 34 } | 34 } |
| 35 | 35 |
| 36 @override | 36 @override |
| 37 void registerDynamicInvocation(Selector selector) { | 37 void registerDynamicInvocation(UniverseSelector selector) { |
| 38 world.registerDynamicInvocation(selector); | 38 world.registerDynamicInvocation(selector); |
| 39 } | 39 } |
| 40 | 40 |
| 41 @override | 41 @override |
| 42 void registerDynamicSetter(Selector selector) { | 42 void registerDynamicSetter(UniverseSelector selector) { |
| 43 world.registerDynamicSetter(selector); | 43 world.registerDynamicSetter(selector); |
| 44 } | 44 } |
| 45 | 45 |
| 46 @override | 46 @override |
| 47 void registerGetOfStaticFunction(FunctionElement element) { | 47 void registerGetOfStaticFunction(FunctionElement element) { |
| 48 world.registerGetOfStaticFunction(element); | 48 world.registerGetOfStaticFunction(element); |
| 49 } | 49 } |
| 50 | 50 |
| 51 @override | 51 @override |
| 52 void registerInstantiation(InterfaceType type) { | 52 void registerInstantiation(InterfaceType type) { |
| 53 // TODO(johnniwinther): Remove the need for passing `this`. | 53 // TODO(johnniwinther): Remove the need for passing `this`. |
| 54 world.registerInstantiatedType(type, this); | 54 world.registerInstantiatedType(type, this); |
| 55 } | 55 } |
| 56 | 56 |
| 57 @override | 57 @override |
| 58 void registerStaticInvocation(Element element) { | 58 void registerStaticInvocation(Element element) { |
| 59 registerDependency(element); | 59 registerDependency(element); |
| 60 world.registerStaticUse(element); | 60 world.registerStaticUse(element); |
| 61 } | 61 } |
| 62 } | 62 } |
| 63 | 63 |
| 64 class ResolutionWorldImpact implements WorldImpact { | 64 class ResolutionWorldImpact implements WorldImpact { |
| 65 final Registry registry; | 65 final Registry registry; |
| 66 Setlet<Selector> _dynamicInvocations; | 66 Setlet<UniverseSelector> _dynamicInvocations; |
| 67 Setlet<Selector> _dynamicGetters; | 67 Setlet<UniverseSelector> _dynamicGetters; |
| 68 Setlet<Selector> _dynamicSetters; | 68 Setlet<UniverseSelector> _dynamicSetters; |
| 69 Setlet<InterfaceType> _instantiatedTypes; | 69 Setlet<InterfaceType> _instantiatedTypes; |
| 70 Setlet<Element> _staticUses; | 70 Setlet<Element> _staticUses; |
| 71 Setlet<DartType> _checkedTypes; | 71 Setlet<DartType> _checkedTypes; |
| 72 Setlet<MethodElement> _closurizedFunctions; | 72 Setlet<MethodElement> _closurizedFunctions; |
| 73 | 73 |
| 74 ResolutionWorldImpact(Compiler compiler, TreeElementMapping mapping) | 74 ResolutionWorldImpact(Compiler compiler, TreeElementMapping mapping) |
| 75 : this.registry = new EagerRegistry(compiler, mapping); | 75 : this.registry = new EagerRegistry(compiler, mapping); |
| 76 | 76 |
| 77 void registerDynamicGetter(Selector selector) { | 77 void registerDynamicGetter(UniverseSelector selector) { |
| 78 if (_dynamicGetters == null) { | 78 if (_dynamicGetters == null) { |
| 79 _dynamicGetters = new Setlet<Selector>(); | 79 _dynamicGetters = new Setlet<UniverseSelector>(); |
| 80 } | 80 } |
| 81 _dynamicGetters.add(selector); | 81 _dynamicGetters.add(selector); |
| 82 } | 82 } |
| 83 | 83 |
| 84 @override | 84 @override |
| 85 Iterable<Selector> get dynamicGetters { | 85 Iterable<UniverseSelector> get dynamicGetters { |
| 86 return _dynamicGetters != null ? _dynamicGetters : const <Selector>[]; | 86 return _dynamicGetters != null |
| 87 ? _dynamicGetters : const <UniverseSelector>[]; |
| 87 } | 88 } |
| 88 | 89 |
| 89 void registerDynamicInvocation(Selector selector) { | 90 void registerDynamicInvocation(UniverseSelector selector) { |
| 90 if (_dynamicInvocations == null) { | 91 if (_dynamicInvocations == null) { |
| 91 _dynamicInvocations = new Setlet<Selector>(); | 92 _dynamicInvocations = new Setlet<UniverseSelector>(); |
| 92 } | 93 } |
| 93 _dynamicInvocations.add(selector); | 94 _dynamicInvocations.add(selector); |
| 94 } | 95 } |
| 95 | 96 |
| 96 @override | 97 @override |
| 97 Iterable<Selector> get dynamicInvocations { | 98 Iterable<UniverseSelector> get dynamicInvocations { |
| 98 return _dynamicInvocations != null | 99 return _dynamicInvocations != null |
| 99 ? _dynamicInvocations : const <Selector>[]; | 100 ? _dynamicInvocations : const <UniverseSelector>[]; |
| 100 } | 101 } |
| 101 | 102 |
| 102 void registerDynamicSetter(Selector selector) { | 103 void registerDynamicSetter(UniverseSelector selector) { |
| 103 if (_dynamicSetters == null) { | 104 if (_dynamicSetters == null) { |
| 104 _dynamicSetters = new Setlet<Selector>(); | 105 _dynamicSetters = new Setlet<UniverseSelector>(); |
| 105 } | 106 } |
| 106 _dynamicSetters.add(selector); | 107 _dynamicSetters.add(selector); |
| 107 } | 108 } |
| 108 | 109 |
| 109 @override | 110 @override |
| 110 Iterable<Selector> get dynamicSetters { | 111 Iterable<UniverseSelector> get dynamicSetters { |
| 111 return _dynamicSetters != null ? _dynamicSetters : const <Selector>[]; | 112 return _dynamicSetters != null |
| 113 ? _dynamicSetters : const <UniverseSelector>[]; |
| 112 } | 114 } |
| 113 | 115 |
| 114 void registerInstantiatedType(InterfaceType type) { | 116 void registerInstantiatedType(InterfaceType type) { |
| 115 // TODO(johnniwinther): Enable this when registration doesn't require a | 117 // TODO(johnniwinther): Enable this when registration doesn't require a |
| 116 // [Registry]. | 118 // [Registry]. |
| 117 throw new UnsupportedError( | 119 throw new UnsupportedError( |
| 118 'Lazy registration of instantiated not supported.'); | 120 'Lazy registration of instantiated not supported.'); |
| 119 if (_instantiatedTypes == null) { | 121 if (_instantiatedTypes == null) { |
| 120 _instantiatedTypes = new Setlet<InterfaceType>(); | 122 _instantiatedTypes = new Setlet<InterfaceType>(); |
| 121 } | 123 } |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 404 } | 406 } |
| 405 | 407 |
| 406 void registerClosure(LocalFunctionElement element) { | 408 void registerClosure(LocalFunctionElement element) { |
| 407 world.registerClosure(element, this); | 409 world.registerClosure(element, this); |
| 408 } | 410 } |
| 409 | 411 |
| 410 void registerSuperUse(Node node) { | 412 void registerSuperUse(Node node) { |
| 411 mapping.addSuperUse(node); | 413 mapping.addSuperUse(node); |
| 412 } | 414 } |
| 413 | 415 |
| 414 void registerDynamicInvocation(Selector selector) { | 416 void registerDynamicInvocation(UniverseSelector selector) { |
| 415 worldImpact.registerDynamicInvocation(selector); | 417 worldImpact.registerDynamicInvocation(selector); |
| 416 } | 418 } |
| 417 | 419 |
| 418 void registerSuperNoSuchMethod() { | 420 void registerSuperNoSuchMethod() { |
| 419 backend.resolutionCallbacks.onSuperNoSuchMethod(this); | 421 backend.resolutionCallbacks.onSuperNoSuchMethod(this); |
| 420 } | 422 } |
| 421 | 423 |
| 422 void registerClassUsingVariableExpression(ClassElement element) { | 424 void registerClassUsingVariableExpression(ClassElement element) { |
| 423 backend.registerClassUsingVariableExpression(element); | 425 backend.registerClassUsingVariableExpression(element); |
| 424 } | 426 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 453 // TODO(johnniwinther): Remove the [ResolverVisitor] dependency. Its only | 455 // TODO(johnniwinther): Remove the [ResolverVisitor] dependency. Its only |
| 454 // needed to lookup types in the current scope. | 456 // needed to lookup types in the current scope. |
| 455 void registerJsBuiltinCall(Node node, ResolverVisitor visitor) { | 457 void registerJsBuiltinCall(Node node, ResolverVisitor visitor) { |
| 456 world.registerJsBuiltinCall(node, visitor); | 458 world.registerJsBuiltinCall(node, visitor); |
| 457 } | 459 } |
| 458 | 460 |
| 459 void registerGetOfStaticFunction(FunctionElement element) { | 461 void registerGetOfStaticFunction(FunctionElement element) { |
| 460 worldImpact.registerClosurizedFunction(element); | 462 worldImpact.registerClosurizedFunction(element); |
| 461 } | 463 } |
| 462 | 464 |
| 463 void registerDynamicGetter(Selector selector) { | 465 void registerDynamicGetter(UniverseSelector selector) { |
| 464 worldImpact.registerDynamicGetter(selector); | 466 worldImpact.registerDynamicGetter(selector); |
| 465 } | 467 } |
| 466 | 468 |
| 467 void registerDynamicSetter(Selector selector) { | 469 void registerDynamicSetter(UniverseSelector selector) { |
| 468 worldImpact.registerDynamicSetter(selector); | 470 worldImpact.registerDynamicSetter(selector); |
| 469 } | 471 } |
| 470 | 472 |
| 471 void registerConstSymbol(String name) { | 473 void registerConstSymbol(String name) { |
| 472 backend.registerConstSymbol(name, this); | 474 backend.registerConstSymbol(name, this); |
| 473 } | 475 } |
| 474 | 476 |
| 475 void registerSymbolConstructor() { | 477 void registerSymbolConstructor() { |
| 476 backend.resolutionCallbacks.onSymbolConstructor(this); | 478 backend.resolutionCallbacks.onSymbolConstructor(this); |
| 477 } | 479 } |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 555 } | 557 } |
| 556 | 558 |
| 557 void registerAsyncMarker(FunctionElement element) { | 559 void registerAsyncMarker(FunctionElement element) { |
| 558 backend.registerAsyncMarker(element, world, this); | 560 backend.registerAsyncMarker(element, world, this); |
| 559 } | 561 } |
| 560 | 562 |
| 561 void registerAsyncForIn(AsyncForIn node) { | 563 void registerAsyncForIn(AsyncForIn node) { |
| 562 backend.resolutionCallbacks.onAsyncForIn(node, this); | 564 backend.resolutionCallbacks.onAsyncForIn(node, this); |
| 563 } | 565 } |
| 564 } | 566 } |
| OLD | NEW |