| 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 85564723d9a72109ea6bf4906b45663d38e90e0a..71abe6c3ed5bfa4df8dbb65ad9df38538f69b6fe 100644
|
| --- a/pkg/compiler/lib/src/ssa/types_propagation.dart
|
| +++ b/pkg/compiler/lib/src/ssa/types_propagation.dart
|
| @@ -252,8 +252,7 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
|
| return true;
|
| } else if (instruction.element == null) {
|
| Iterable<Element> targets =
|
| - compiler.world.allFunctions.filter(
|
| - instruction.selector, instruction.mask);
|
| + compiler.world.allFunctions.filter(instruction.selector);
|
| if (targets.length == 1) {
|
| Element target = targets.first;
|
| ClassElement cls = target.enclosingClass;
|
| @@ -336,8 +335,7 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
|
| if (checkReceiver(instruction)) {
|
| addAllUsersBut(instruction, instruction.inputs[1]);
|
| }
|
| - if (!selector.isUnaryOperator &&
|
| - checkArgument(instruction)) {
|
| + if (!selector.isUnaryOperator && checkArgument(instruction)) {
|
| addAllUsersBut(instruction, instruction.inputs[2]);
|
| }
|
| }
|
| @@ -346,13 +344,14 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
|
|
|
| HInstruction receiver = instruction.getDartReceiver(compiler);
|
| TypeMask receiverType = receiver.instructionType;
|
| - instruction.mask = receiverType;
|
| + Selector selector =
|
| + new TypedSelector(receiverType, instruction.selector, classWorld);
|
| + instruction.selector = selector;
|
|
|
| // Try to specialize the receiver after this call.
|
| if (receiver.dominatedUsers(instruction).length != 1
|
| - && !instruction.selector.isClosureCall) {
|
| - TypeMask newType = compiler.world.allFunctions.receiverType(
|
| - instruction.selector, instruction.mask);
|
| + && !selector.isClosureCall) {
|
| + TypeMask newType = compiler.world.allFunctions.receiverType(selector);
|
| newType = newType.intersection(receiverType, classWorld);
|
| var next = instruction.next;
|
| if (next is HTypeKnown && next.checkedInput == receiver) {
|
|
|