Index: pkg/compiler/lib/src/ssa/types_propagation.dart |
diff --git a/pkg/compiler/lib/src/ssa/types_propagation.dart b/pkg/compiler/lib/src/ssa/types_propagation.dart |
index 7db5f0521277a5914cb8028552fd1d8f315427c1..49aa6f99cf3d19f255376d32cdcc2a7465b6ea71 100644 |
--- a/pkg/compiler/lib/src/ssa/types_propagation.dart |
+++ b/pkg/compiler/lib/src/ssa/types_propagation.dart |
@@ -397,12 +397,7 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase { |
addDependentInstructionsToWorkList(next); |
} |
} else { |
- DominatedUses uses; |
- bool hasCandidates() { |
- uses = |
- DominatedUses.of(receiver, instruction, excludeDominator: true); |
- return uses.isNotEmpty; |
- } |
+ bool hasCandidates() => receiver.dominatedUsers(instruction).length > 1; |
if ((receiver.usedBy.length <= _MAX_QUICK_USERS) |
? (hasCandidates() && computeNewType() != receiverType) |
@@ -412,7 +407,7 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase { |
HTypeKnown converted = |
new HTypeKnown.witnessed(newType, receiver, instruction); |
instruction.block.addBefore(instruction.next, converted); |
- uses.replaceWith(converted); |
+ receiver.replaceAllUsersDominatedBy(converted.next, converted); |
addDependentInstructionsToWorkList(converted); |
} |
} |