| Index: pkg/compiler/lib/src/ssa/optimize.dart
|
| diff --git a/pkg/compiler/lib/src/ssa/optimize.dart b/pkg/compiler/lib/src/ssa/optimize.dart
|
| index 0692383acd7320c1f05fc5fd1473c87f5f496630..5dd8092f656518ee44e04df59a96f36f5b2afad5 100644
|
| --- a/pkg/compiler/lib/src/ssa/optimize.dart
|
| +++ b/pkg/compiler/lib/src/ssa/optimize.dart
|
| @@ -1004,6 +1004,13 @@ class SsaDeadCodeEliminator extends HGraphVisitor implements OptimizationPhase {
|
| /// Returns true of [foreign] will throw an noSuchMethod error if
|
| /// receiver is `null` before having any other side-effects.
|
| bool templateThrowsNSMonNull(HForeignCode foreign, HInstruction receiver) {
|
| + if (foreign.inputs.length < 1) return false;
|
| + if (foreign.inputs.first != receiver) return false;
|
| + if (foreign.throwBehavior.isNullNSMGuard) return true;
|
| +
|
| + // TODO(sra): Fix NativeThrowBehavior to distinguish MAY from
|
| + // throws-nsm-on-null-followed-by-MAY and remove all the code below.
|
| +
|
| // We look for a template of the form
|
| //
|
| // #.something -or- #.something()
|
| @@ -1022,7 +1029,7 @@ class SsaDeadCodeEliminator extends HGraphVisitor implements OptimizationPhase {
|
| js.PropertyAccess access = node;
|
| if (access.receiver is js.InterpolatedExpression) {
|
| js.InterpolatedExpression hole = access.receiver;
|
| - return hole.isPositional && foreign.inputs.first == receiver;
|
| + return hole.isPositional && hole.nameOrPosition == 0;
|
| }
|
| }
|
| return false;
|
|
|