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