| Index: pkg/compiler/lib/src/cps_ir/backward_null_check_remover.dart
|
| diff --git a/pkg/compiler/lib/src/cps_ir/backward_null_check_remover.dart b/pkg/compiler/lib/src/cps_ir/backward_null_check_remover.dart
|
| index 6a2c16fac20b8d490159bb4563b712bc30e98610..de027ecdaef4059e88f6c7354f7e1cba0ffd2669 100644
|
| --- a/pkg/compiler/lib/src/cps_ir/backward_null_check_remover.dart
|
| +++ b/pkg/compiler/lib/src/cps_ir/backward_null_check_remover.dart
|
| @@ -50,9 +50,8 @@ class BackwardNullCheckRemover extends BlockVisitor implements Pass {
|
| BlockVisitor.traverseInPostOrder(node, this);
|
| }
|
|
|
| - /// Returns a reference to an operand of [prim], where [prim] throws if null
|
| - /// is passed into that operand.
|
| - Reference<Primitive> getNullCheckedOperand(Primitive prim) {
|
| + /// Returns an operand of [prim] that throws if null is passed into it.
|
| + Primitive getNullCheckedOperand(Primitive prim) {
|
| if (prim is ReceiverCheck) return prim.value;
|
| if (prim is GetLength) return prim.object;
|
| if (prim is GetField) return prim.object;
|
| @@ -60,10 +59,10 @@ class BackwardNullCheckRemover extends BlockVisitor implements Pass {
|
| if (prim is SetField) return prim.object;
|
| if (prim is SetIndex) return prim.object;
|
| if (prim is InvokeMethod && !selectorsOnNull.contains(prim.selector)) {
|
| - return prim.dartReceiverReference;
|
| + return prim.dartReceiver;
|
| }
|
| if (prim is ForeignCode) {
|
| - return prim.isNullGuardOnNullFirstArgument() ? prim.arguments[0] : null;
|
| + return prim.isNullGuardOnNullFirstArgument() ? prim.argument(0) : null;
|
| }
|
| return null;
|
| }
|
| @@ -72,7 +71,7 @@ class BackwardNullCheckRemover extends BlockVisitor implements Pass {
|
| /// [newNullCheck]. Eliminate [prim] if it is not needed any more.
|
| void tryEliminateRedundantNullCheck(Primitive prim, Primitive newNullCheck) {
|
| if (prim is ReceiverCheck && prim.isNullCheck) {
|
| - Primitive value = prim.value.definition;
|
| + Primitive value = prim.value;
|
| LetPrim let = prim.parent;
|
| prim..replaceUsesWith(value)..destroy();
|
| let.remove();
|
| @@ -99,7 +98,7 @@ class BackwardNullCheckRemover extends BlockVisitor implements Pass {
|
|
|
| void visitLetPrim(LetPrim node) {
|
| Primitive prim = node.primitive;
|
| - Primitive receiver = getNullCheckedOperand(prim)?.definition;
|
| + Primitive receiver = getNullCheckedOperand(prim);
|
| if (receiver != null) {
|
| if (nullCheckedValue != null && receiver.sameValue(nullCheckedValue)) {
|
| tryEliminateRedundantNullCheck(prim, nullCheckedValue);
|
| @@ -123,7 +122,7 @@ class BackwardNullCheckRemover extends BlockVisitor implements Pass {
|
|
|
| visitInvokeContinuation(InvokeContinuation node) {
|
| if (!node.isRecursive) {
|
| - nullCheckedValue = nullCheckedValueAt[node.continuation.definition];
|
| + nullCheckedValue = nullCheckedValueAt[node.continuation];
|
| }
|
| }
|
| }
|
|
|