dart2js: Reduce assert helpers
Change-Id: Ic2ce0e485e3fd27b8f4e92371eb17a076d5192c1
Reviewed-on: https://dart-review.googlesource.com/c/92668
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
diff --git a/pkg/compiler/lib/src/ssa/optimize.dart b/pkg/compiler/lib/src/ssa/optimize.dart
index 06be15a..007950f 100644
--- a/pkg/compiler/lib/src/ssa/optimize.dart
+++ b/pkg/compiler/lib/src/ssa/optimize.dart
@@ -1369,7 +1369,25 @@
return argument;
}
}
+ } else if (element == commonElements.assertHelper ||
+ element == commonElements.assertTest) {
+ if (node.inputs.length == 1) {
+ HInstruction argument = node.inputs[0];
+ if (argument is HConstant) {
+ ConstantValue constant = argument.constant;
+ if (constant.isBool) {
+ bool value = constant.isTrue;
+ if (element == commonElements.assertTest) {
+ // `assertTest(argument)` effectively negates the argument.
+ return _graph.addConstantBool(!value, _closedWorld);
+ }
+ // `assertHelper(true)` is a no-op, other values throw.
+ if (value) return argument;
+ }
+ }
+ }
}
+
return node;
}