Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 library dart2js.universe.world_impact; | 5 library dart2js.universe.world_impact; |
| 6 | 6 |
| 7 import '../dart_types.dart' show | 7 import '../dart_types.dart' show |
| 8 DartType, | 8 DartType, |
| 9 InterfaceType; | 9 InterfaceType; |
| 10 import '../elements/elements.dart' show | 10 import '../elements/elements.dart' show |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 239 _closures = new Setlet<LocalFunctionElement>(); | 239 _closures = new Setlet<LocalFunctionElement>(); |
| 240 } | 240 } |
| 241 _closures.add(element); | 241 _closures.add(element); |
| 242 } | 242 } |
| 243 | 243 |
| 244 Iterable<LocalFunctionElement> get closures { | 244 Iterable<LocalFunctionElement> get closures { |
| 245 return _closures != null | 245 return _closures != null |
| 246 ? _closures : const <LocalFunctionElement>[]; | 246 ? _closures : const <LocalFunctionElement>[]; |
| 247 } | 247 } |
| 248 } | 248 } |
| 249 | |
|
Johnni Winther
2015/10/26 14:12:37
Moved here from common/resolution.dart
| |
| 250 /// Mutable implementation of [WorldImpact] used to transform | |
| 251 /// [ResolutionImpact] or [CodegenImpact] to [WorldImpact]. | |
| 252 class TransformedWorldImpact implements WorldImpact { | |
| 253 final WorldImpact worldImpact; | |
| 254 | |
| 255 Setlet<Element> _staticUses; | |
| 256 Setlet<InterfaceType> _instantiatedTypes; | |
| 257 Setlet<UniverseSelector> _dynamicGetters; | |
| 258 Setlet<UniverseSelector> _dynamicInvocations; | |
| 259 Setlet<UniverseSelector> _dynamicSetters; | |
| 260 | |
| 261 TransformedWorldImpact(this.worldImpact); | |
| 262 | |
| 263 @override | |
| 264 Iterable<DartType> get asCasts => worldImpact.asCasts; | |
| 265 | |
| 266 @override | |
| 267 Iterable<DartType> get checkedModeChecks => worldImpact.checkedModeChecks; | |
| 268 | |
| 269 @override | |
| 270 Iterable<MethodElement> get closurizedFunctions { | |
| 271 return worldImpact.closurizedFunctions; | |
| 272 } | |
| 273 | |
| 274 @override | |
| 275 Iterable<UniverseSelector> get dynamicGetters { | |
| 276 return _dynamicGetters != null | |
| 277 ? _dynamicGetters : worldImpact.dynamicGetters; | |
| 278 } | |
| 279 | |
| 280 @override | |
| 281 Iterable<UniverseSelector> get dynamicInvocations { | |
| 282 return _dynamicInvocations != null | |
| 283 ? _dynamicInvocations : worldImpact.dynamicInvocations; | |
| 284 } | |
| 285 | |
| 286 @override | |
| 287 Iterable<UniverseSelector> get dynamicSetters { | |
| 288 return _dynamicSetters != null | |
| 289 ? _dynamicSetters : worldImpact.dynamicSetters; | |
| 290 } | |
| 291 | |
| 292 @override | |
| 293 Iterable<DartType> get isChecks => worldImpact.isChecks; | |
| 294 | |
| 295 @override | |
| 296 Iterable<DartType> get onCatchTypes => worldImpact.onCatchTypes; | |
| 297 | |
| 298 _unsupported(String message) => throw new UnsupportedError(message); | |
| 299 | |
| 300 void registerDynamicGetter(UniverseSelector selector) { | |
| 301 if (_dynamicGetters == null) { | |
| 302 _dynamicGetters = new Setlet<UniverseSelector>(); | |
| 303 _dynamicGetters.addAll(worldImpact.dynamicGetters); | |
| 304 } | |
| 305 _dynamicGetters.add(selector); | |
| 306 } | |
| 307 | |
| 308 void registerDynamicInvocation(UniverseSelector selector) { | |
| 309 if (_dynamicInvocations == null) { | |
| 310 _dynamicInvocations = new Setlet<UniverseSelector>(); | |
| 311 _dynamicInvocations.addAll(worldImpact.dynamicInvocations); | |
| 312 } | |
| 313 _dynamicInvocations.add(selector); | |
| 314 } | |
| 315 | |
| 316 void registerDynamicSetter(UniverseSelector selector) { | |
| 317 if (_dynamicSetters == null) { | |
| 318 _dynamicSetters = new Setlet<UniverseSelector>(); | |
| 319 _dynamicSetters.addAll(worldImpact.dynamicSetters); | |
| 320 } | |
| 321 _dynamicSetters.add(selector); | |
| 322 } | |
| 323 | |
| 324 void registerInstantiatedType(InterfaceType type) { | |
| 325 if (_instantiatedTypes == null) { | |
| 326 _instantiatedTypes = new Setlet<InterfaceType>(); | |
| 327 _instantiatedTypes.addAll(worldImpact.instantiatedTypes); | |
| 328 } | |
| 329 _instantiatedTypes.add(type); | |
| 330 } | |
| 331 | |
| 332 @override | |
| 333 Iterable<InterfaceType> get instantiatedTypes { | |
| 334 return _instantiatedTypes != null | |
| 335 ? _instantiatedTypes : worldImpact.instantiatedTypes; | |
| 336 } | |
| 337 | |
| 338 @override | |
| 339 Iterable<DartType> get typeLiterals { | |
| 340 return worldImpact.typeLiterals; | |
| 341 } | |
| 342 | |
| 343 void registerStaticUse(Element element) { | |
| 344 if (_staticUses == null) { | |
| 345 _staticUses = new Setlet<Element>(); | |
| 346 _staticUses.addAll(worldImpact.staticUses); | |
| 347 } | |
| 348 _staticUses.add(element); | |
| 349 } | |
| 350 | |
| 351 @override | |
| 352 Iterable<Element> get staticUses { | |
| 353 return _staticUses != null ? _staticUses : worldImpact.staticUses; | |
| 354 } | |
| 355 | |
| 356 @override | |
| 357 Iterable<LocalFunctionElement> get closures => worldImpact.closures; | |
| 358 | |
| 359 String toString() { | |
| 360 StringBuffer sb = new StringBuffer(); | |
| 361 sb.write('TransformedWorldImpact($worldImpact)'); | |
| 362 WorldImpact.printOn(sb, this); | |
| 363 return sb.toString(); | |
| 364 } | |
| 365 } | |
| OLD | NEW |