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 ssa; | 5 part of ssa; |
6 | 6 |
7 abstract class OptimizationPhase { | 7 abstract class OptimizationPhase { |
8 String get name; | 8 String get name; |
9 void visitGraph(HGraph graph); | 9 void visitGraph(HGraph graph); |
10 } | 10 } |
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
548 } else if (expressionType.isArray()) { | 548 } else if (expressionType.isArray()) { |
549 if (identical(element, compiler.listClass) | 549 if (identical(element, compiler.listClass) |
550 || Elements.isListSupertype(element, compiler)) { | 550 || Elements.isListSupertype(element, compiler)) { |
551 return graph.addConstantBool(true, constantSystem); | 551 return graph.addConstantBool(true, constantSystem); |
552 } else { | 552 } else { |
553 return graph.addConstantBool(false, constantSystem); | 553 return graph.addConstantBool(false, constantSystem); |
554 } | 554 } |
555 // TODO(karlklose): remove the hasTypeArguments check. | 555 // TODO(karlklose): remove the hasTypeArguments check. |
556 } else if (expressionType.isUseful() | 556 } else if (expressionType.isUseful() |
557 && !expressionType.canBeNull() | 557 && !expressionType.canBeNull() |
558 && !compiler.codegenWorld.rti.hasTypeArguments(type)) { | 558 && !backend.rti.hasTypeArguments(type)) { |
559 DartType receiverType = expressionType.computeType(compiler); | 559 DartType receiverType = expressionType.computeType(compiler); |
560 if (receiverType != null) { | 560 if (receiverType != null) { |
561 if (compiler.types.isSubtype(receiverType, type)) { | 561 if (compiler.types.isSubtype(receiverType, type)) { |
562 return graph.addConstantBool(true, constantSystem); | 562 return graph.addConstantBool(true, constantSystem); |
563 } else if (expressionType.isExact()) { | 563 } else if (expressionType.isExact()) { |
564 return graph.addConstantBool(false, constantSystem); | 564 return graph.addConstantBool(false, constantSystem); |
565 } | 565 } |
566 } | 566 } |
567 } | 567 } |
568 return node; | 568 return node; |
(...skipping 785 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1354 } | 1354 } |
1355 | 1355 |
1356 // For other fields having setters in the generative constructor body, set | 1356 // For other fields having setters in the generative constructor body, set |
1357 // the type to UNKNOWN to avoid relying on the type set in the initializer | 1357 // the type to UNKNOWN to avoid relying on the type set in the initializer |
1358 // list. | 1358 // list. |
1359 allSetters.forEach((Element element) { | 1359 allSetters.forEach((Element element) { |
1360 backend.registerFieldConstructor(element, HType.UNKNOWN); | 1360 backend.registerFieldConstructor(element, HType.UNKNOWN); |
1361 }); | 1361 }); |
1362 } | 1362 } |
1363 } | 1363 } |
OLD | NEW |