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

Unified Diff: pkg/compiler/lib/src/cps_ir/builtin_operator.dart

Issue 1184963006: dart2js cps: Better 'is int' checks. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Update comment Created 5 years, 6 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
« no previous file with comments | « no previous file | pkg/compiler/lib/src/cps_ir/type_propagation.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/cps_ir/builtin_operator.dart
diff --git a/pkg/compiler/lib/src/cps_ir/builtin_operator.dart b/pkg/compiler/lib/src/cps_ir/builtin_operator.dart
index 60c1ec98b2e9700a9d148cb6919f736a3a0a3a97..0995e342cf047a1cece617ff67e4889119deee57 100644
--- a/pkg/compiler/lib/src/cps_ir/builtin_operator.dart
+++ b/pkg/compiler/lib/src/cps_ir/builtin_operator.dart
@@ -17,6 +17,11 @@ library builtin_operator;
///
/// In all cases, the word "null" refers to the Dart null object, corresponding
/// to both JS null and JS undefined.
+///
+/// Some operators, notably [IsFloor] and [IsNumberAndFloor], take "repeated"
+/// arguments to reflect the number of times the given value is referenced
+/// by the generated code. The tree IR needs to know the number of references
+/// to safely propagate assignments.
enum BuiltinOperator {
/// The numeric binary operators must take two numbers as argument.
/// The bitwise operators coerce the result to an unsigned integer, but
@@ -55,5 +60,30 @@ enum BuiltinOperator {
/// Returns true if the argument is false, +0. -0, NaN, the empty string,
/// or null.
- IsFalsy
+ IsFalsy,
+
+ /// Returns true if the argument is a number.
+ ///
+ /// Compiles to `typeof x === 'number'`
+ IsNumber,
+
+ /// Returns true if the argument is not a number.
+ ///
+ /// Compiles to `typeof x !== 'number'`.
+ IsNotNumber,
+
+ /// Returns true if the argument is an integer, false if it is a double or
+ /// null, and unspecified if it is anything else.
+ ///
+ /// The argument must be repeated 2 times.
+ ///
+ /// Compiles to `Math.floor(x) === x`
+ IsFloor,
+
+ /// Returns true if the argument is an integer.
+ ///
+ /// The argument must be repeated 3 times.
+ ///
+ /// Compiles to `typeof x === 'number' && Math.floor(x) === x`
+ IsNumberAndFloor,
}
« no previous file with comments | « no previous file | pkg/compiler/lib/src/cps_ir/type_propagation.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698