| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 js_backend; | 5 part of js_backend; |
| 6 | 6 |
| 7 const VERBOSE_OPTIMIZER_HINTS = false; | 7 const VERBOSE_OPTIMIZER_HINTS = false; |
| 8 | 8 |
| 9 class JavaScriptItemCompilationContext extends ItemCompilationContext { | 9 class JavaScriptItemCompilationContext extends ItemCompilationContext { |
| 10 final Set<HInstruction> boundsChecked = new Set<HInstruction>(); | 10 final Set<HInstruction> boundsChecked = new Set<HInstruction>(); |
| (...skipping 1457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1468 return const WorldImpact(); | 1468 return const WorldImpact(); |
| 1469 } | 1469 } |
| 1470 if (element.isConstructor && | 1470 if (element.isConstructor && |
| 1471 element.enclosingClass == helpers.jsNullClass) { | 1471 element.enclosingClass == helpers.jsNullClass) { |
| 1472 // Work around a problem compiling JSNull's constructor. | 1472 // Work around a problem compiling JSNull's constructor. |
| 1473 return const CodegenImpact(); | 1473 return const CodegenImpact(); |
| 1474 } | 1474 } |
| 1475 if (kind.category == ElementCategory.VARIABLE) { | 1475 if (kind.category == ElementCategory.VARIABLE) { |
| 1476 VariableElement variableElement = element; | 1476 VariableElement variableElement = element; |
| 1477 ConstantExpression constant = variableElement.constant; | 1477 ConstantExpression constant = variableElement.constant; |
| 1478 if (constant != null) { | 1478 // TODO(johnniwinther): ensure `initialValue` is not null. Note that |
| 1479 ConstantValue initialValue = constants.getConstantValue(constant); | 1479 // calling `evaluate` in getConstantValue may trigger issues for deferred |
| 1480 // loading (dartbug.com/26406). |
| 1481 ConstantValue initialValue = |
| 1482 constant == null ? null : constants.getConstantValue(constant); |
| 1483 if (initialValue != null) { |
| 1480 registerCompileTimeConstant(initialValue, work.registry); | 1484 registerCompileTimeConstant(initialValue, work.registry); |
| 1481 addCompileTimeConstantForEmission(initialValue); | 1485 addCompileTimeConstantForEmission(initialValue); |
| 1482 // We don't need to generate code for static or top-level | 1486 // We don't need to generate code for static or top-level |
| 1483 // variables. For instance variables, we may need to generate | 1487 // variables. For instance variables, we may need to generate |
| 1484 // the checked setter. | 1488 // the checked setter. |
| 1485 if (Elements.isStaticOrTopLevel(element)) { | 1489 if (Elements.isStaticOrTopLevel(element)) { |
| 1486 return impactTransformer | 1490 return impactTransformer |
| 1487 .transformCodegenImpact(work.registry.worldImpact); | 1491 .transformCodegenImpact(work.registry.worldImpact); |
| 1488 } | 1492 } |
| 1489 } else { | 1493 } else { |
| (...skipping 1553 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3043 | 3047 |
| 3044 @override | 3048 @override |
| 3045 void onImpactUsed(ImpactUseCase impactUse) { | 3049 void onImpactUsed(ImpactUseCase impactUse) { |
| 3046 if (impactUse == DeferredLoadTask.IMPACT_USE && !supportSerialization) { | 3050 if (impactUse == DeferredLoadTask.IMPACT_USE && !supportSerialization) { |
| 3047 // TODO(johnniwinther): Allow emptying when serialization has been | 3051 // TODO(johnniwinther): Allow emptying when serialization has been |
| 3048 // performed. | 3052 // performed. |
| 3049 resolution.emptyCache(); | 3053 resolution.emptyCache(); |
| 3050 } | 3054 } |
| 3051 } | 3055 } |
| 3052 } | 3056 } |
| OLD | NEW |