| OLD | NEW |
| 1 | 1 |
| 2 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 2 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 3 // for details. All rights reserved. Use of this source code is governed by a | 3 // for details. All rights reserved. Use of this source code is governed by a |
| 4 // BSD-style license that can be found in the LICENSE file. | 4 // BSD-style license that can be found in the LICENSE file. |
| 5 | 5 |
| 6 library dart2js.common.resolution; | 6 library dart2js.common.resolution; |
| 7 | 7 |
| 8 import '../common.dart'; | 8 import '../common.dart'; |
| 9 import '../compiler.dart' show | 9 import '../compiler.dart' show |
| 10 Compiler; | 10 Compiler; |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 | 222 |
| 223 @override | 223 @override |
| 224 Iterable<UniverseSelector> get dynamicSetters { | 224 Iterable<UniverseSelector> get dynamicSetters { |
| 225 return _dynamicSetters != null | 225 return _dynamicSetters != null |
| 226 ? _dynamicSetters : worldImpact.dynamicSetters; | 226 ? _dynamicSetters : worldImpact.dynamicSetters; |
| 227 } | 227 } |
| 228 | 228 |
| 229 @override | 229 @override |
| 230 Iterable<DartType> get isChecks => worldImpact.isChecks; | 230 Iterable<DartType> get isChecks => worldImpact.isChecks; |
| 231 | 231 |
| 232 @override | |
| 233 Iterable<Element> get staticUses { | |
| 234 if (_staticUses == null) { | |
| 235 return worldImpact.staticUses; | |
| 236 } | |
| 237 return _staticUses; | |
| 238 } | |
| 239 | |
| 240 _unsupported(String message) => throw new UnsupportedError(message); | 232 _unsupported(String message) => throw new UnsupportedError(message); |
| 241 | 233 |
| 242 void registerDynamicGetter(UniverseSelector selector) { | 234 void registerDynamicGetter(UniverseSelector selector) { |
| 243 if (_dynamicGetters == null) { | 235 if (_dynamicGetters == null) { |
| 244 _dynamicGetters = new Setlet<UniverseSelector>(); | 236 _dynamicGetters = new Setlet<UniverseSelector>(); |
| 245 _dynamicGetters.addAll(worldImpact.dynamicGetters); | 237 _dynamicGetters.addAll(worldImpact.dynamicGetters); |
| 246 } | 238 } |
| 247 _dynamicGetters.add(selector); | 239 _dynamicGetters.add(selector); |
| 248 } | 240 } |
| 249 | 241 |
| 250 void registerDynamicInvocation(UniverseSelector selector) { | 242 void registerDynamicInvocation(UniverseSelector selector) { |
| 251 if (_dynamicInvocations == null) { | 243 if (_dynamicInvocations == null) { |
| 252 _dynamicInvocations = new Setlet<UniverseSelector>(); | 244 _dynamicInvocations = new Setlet<UniverseSelector>(); |
| 253 _dynamicInvocations.addAll(worldImpact.dynamicInvocations); | 245 _dynamicInvocations.addAll(worldImpact.dynamicInvocations); |
| 254 } | 246 } |
| 255 _dynamicInvocations.add(selector); | 247 _dynamicInvocations.add(selector); |
| 256 } | 248 } |
| 257 | 249 |
| 258 void registerDynamicSetter(UniverseSelector selector) { | 250 void registerDynamicSetter(UniverseSelector selector) { |
| 259 if (_dynamicSetters == null) { | 251 if (_dynamicSetters == null) { |
| 260 _dynamicSetters = new Setlet<UniverseSelector>(); | 252 _dynamicSetters = new Setlet<UniverseSelector>(); |
| 261 _dynamicSetters.addAll(worldImpact.dynamicSetters); | 253 _dynamicSetters.addAll(worldImpact.dynamicSetters); |
| 262 } | 254 } |
| 263 _dynamicSetters.add(selector); | 255 _dynamicSetters.add(selector); |
| 264 } | 256 } |
| 265 | 257 |
| 266 void registerInstantiatedType(InterfaceType type) { | 258 void registerInstantiatedType(InterfaceType type) { |
| 267 // TODO(johnniwinther): Remove this when dependency tracking is done on | |
| 268 // the world impact itself. | |
| 269 worldImpact.registerDependency(type.element); | |
| 270 if (_instantiatedTypes == null) { | 259 if (_instantiatedTypes == null) { |
| 271 _instantiatedTypes = new Setlet<InterfaceType>(); | 260 _instantiatedTypes = new Setlet<InterfaceType>(); |
| 261 _instantiatedTypes.addAll(worldImpact.instantiatedTypes); |
| 272 } | 262 } |
| 273 _instantiatedTypes.add(type); | 263 _instantiatedTypes.add(type); |
| 274 } | 264 } |
| 275 | 265 |
| 276 @override | 266 @override |
| 277 Iterable<InterfaceType> get instantiatedTypes { | 267 Iterable<InterfaceType> get instantiatedTypes { |
| 278 return _instantiatedTypes != null | 268 return _instantiatedTypes != null |
| 279 ? _instantiatedTypes : const <InterfaceType>[]; | 269 ? _instantiatedTypes : worldImpact.instantiatedTypes; |
| 280 } | 270 } |
| 281 | 271 |
| 282 @override | 272 @override |
| 283 Iterable<DartType> get typeLiterals { | 273 Iterable<DartType> get typeLiterals { |
| 284 return worldImpact.typeLiterals; | 274 return worldImpact.typeLiterals; |
| 285 } | 275 } |
| 286 | 276 |
| 287 void registerStaticUse(Element element) { | 277 void registerStaticUse(Element element) { |
| 288 // TODO(johnniwinther): Remove this when dependency tracking is done on | |
| 289 // the world impact itself. | |
| 290 worldImpact.registerDependency(element); | |
| 291 if (_staticUses == null) { | 278 if (_staticUses == null) { |
| 292 _staticUses = new Setlet<Element>(); | 279 _staticUses = new Setlet<Element>(); |
| 280 _staticUses.addAll(worldImpact.staticUses); |
| 293 } | 281 } |
| 294 _staticUses.add(element); | 282 _staticUses.add(element); |
| 295 } | 283 } |
| 296 | 284 |
| 297 @override | 285 @override |
| 286 Iterable<Element> get staticUses { |
| 287 return _staticUses != null ? _staticUses : worldImpact.staticUses; |
| 288 } |
| 289 |
| 290 @override |
| 298 Iterable<LocalFunctionElement> get closures => worldImpact.closures; | 291 Iterable<LocalFunctionElement> get closures => worldImpact.closures; |
| 299 | 292 |
| 300 String toString() { | 293 String toString() { |
| 301 StringBuffer sb = new StringBuffer(); | 294 StringBuffer sb = new StringBuffer(); |
| 302 sb.write('TransformedWorldImpact($worldImpact)'); | 295 sb.write('TransformedWorldImpact($worldImpact)'); |
| 303 sb.write(super.toString()); | 296 sb.write(super.toString()); |
| 304 return sb.toString(); | 297 return sb.toString(); |
| 305 } | 298 } |
| 306 } | 299 } |
| 307 | 300 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 322 WorldImpact getWorldImpact(Element element); | 315 WorldImpact getWorldImpact(Element element); |
| 323 WorldImpact computeWorldImpact(Element element); | 316 WorldImpact computeWorldImpact(Element element); |
| 324 } | 317 } |
| 325 | 318 |
| 326 // TODO(johnniwinther): Rename to `Parser` or `ParsingContext`. | 319 // TODO(johnniwinther): Rename to `Parser` or `ParsingContext`. |
| 327 abstract class Parsing { | 320 abstract class Parsing { |
| 328 DiagnosticReporter get reporter; | 321 DiagnosticReporter get reporter; |
| 329 void parsePatchClass(ClassElement cls); | 322 void parsePatchClass(ClassElement cls); |
| 330 measure(f()); | 323 measure(f()); |
| 331 } | 324 } |
| OLD | NEW |