Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(470)

Unified Diff: pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart

Issue 1385423002: dart2js cps_ir: Use interceptors for is-checks (version 2) (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: fix analyzer warnings Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart
diff --git a/pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart b/pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart
index bc49dc750fd47f5d27e7d8f210fd3d9f9ac60764..4f0be4ad41428b4d8f3bb5a075004aaa377178a1 100644
--- a/pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart
+++ b/pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart
@@ -335,8 +335,13 @@ class LogicalRewriter extends RecursiveTransformer
return isTrue(e) ||
isFalse(e) ||
e is Not ||
- e is LogicalOperator ||
- e is ApplyBuiltinOperator && operatorReturnsBool(e.operator);
+ e is LogicalOperator && isBooleanValuedLogicalOperator(e) ||
+ e is ApplyBuiltinOperator && operatorReturnsBool(e.operator) ||
+ e is TypeOperator && isBooleanValuedTypeOperator(e);
+ }
+
+ bool isBooleanValuedLogicalOperator(LogicalOperator e) {
+ return isBooleanValued(e.left) && isBooleanValued(e.right);
}
/// True if the given operator always returns `true` or `false`.
@@ -361,6 +366,10 @@ class LogicalRewriter extends RecursiveTransformer
}
}
+ bool isBooleanValuedTypeOperator(TypeOperator e) {
+ return e.isTypeTest;
+ }
+
BuiltinOperator negateBuiltin(BuiltinOperator operator) {
switch (operator) {
case BuiltinOperator.StrictEq: return BuiltinOperator.StrictNeq;
@@ -552,4 +561,3 @@ class LogicalRewriter extends RecursiveTransformer
--node.variable.readCount;
}
}
-

Powered by Google App Engine
This is Rietveld 408576698