| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 library builtin_operator; | 4 library builtin_operator; |
| 5 // This is shared by the CPS and Tree IRs. | 5 // This is shared by the CPS and Tree IRs. |
| 6 // Both cps_ir_nodes and tree_ir_nodes import and re-export this file. | 6 // Both cps_ir_nodes and tree_ir_nodes import and re-export this file. |
| 7 | 7 |
| 8 /// An operator supported natively in the CPS and Tree IRs using the | 8 /// An operator supported natively in the CPS and Tree IRs using the |
| 9 /// `ApplyBuiltinOperator` instructions. | 9 /// `ApplyBuiltinOperator` instructions. |
| 10 /// | 10 /// |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 /// | 96 /// |
| 97 /// Compiles to `Math.floor(x) === x` | 97 /// Compiles to `Math.floor(x) === x` |
| 98 IsFloor, | 98 IsFloor, |
| 99 | 99 |
| 100 /// Returns true if the argument is an integer. | 100 /// Returns true if the argument is an integer. |
| 101 /// | 101 /// |
| 102 /// The argument must be repeated 3 times. | 102 /// The argument must be repeated 3 times. |
| 103 /// | 103 /// |
| 104 /// Compiles to `typeof x === 'number' && Math.floor(x) === x` | 104 /// Compiles to `typeof x === 'number' && Math.floor(x) === x` |
| 105 IsNumberAndFloor, | 105 IsNumberAndFloor, |
| 106 |
| 107 /// Returns true if the argument is a fixed length Array. |
| 108 /// |
| 109 /// Uses one argument. |
| 110 /// |
| 111 /// Precondition: Argument is a JavaScript Array. |
| 112 IsFixedLengthJSArray, |
| 113 |
| 114 // TODO(sra): Remove this and replace with IsFalsy(IsFixedLengthJSArray(x)). |
| 115 IsExtendableJSArray, |
| 116 |
| 117 /// Returns true if the argument is an unmodifiable Array. |
| 118 /// |
| 119 /// Uses one argument. |
| 120 /// |
| 121 /// Precondition: Argument is a JavaScript Array. |
| 122 IsUnmodifiableJSArray, |
| 123 |
| 124 // TODO(sra): Remove this and replace with IsFalsy(IsUnmodifiableArray(x)). |
| 125 IsModifiableJSArray, |
| 106 } | 126 } |
| 107 | 127 |
| 108 /// A method supported natively in the CPS and Tree IRs using the | 128 /// A method supported natively in the CPS and Tree IRs using the |
| 109 /// `ApplyBuiltinMethod` instructions. | 129 /// `ApplyBuiltinMethod` instructions. |
| 110 /// | 130 /// |
| 111 /// These methods all operate on a distinguished 'object' argument, and | 131 /// These methods all operate on a distinguished 'object' argument, and |
| 112 /// take zero or more additional arguments. | 132 /// take zero or more additional arguments. |
| 113 /// | 133 /// |
| 114 /// These methods may mutate and depend on the state of the object argument, | 134 /// These methods may mutate and depend on the state of the object argument, |
| 115 /// but may not depend on or mutate any other state. An exception is thrown | 135 /// but may not depend on or mutate any other state. An exception is thrown |
| 116 /// if the object is null, but otherwise they cannot throw or diverge. | 136 /// if the object is null, but otherwise they cannot throw or diverge. |
| 117 enum BuiltinMethod { | 137 enum BuiltinMethod { |
| 118 /// Add an item to a native list. | 138 /// Add an item to a native list. |
| 119 /// | 139 /// |
| 120 /// Takes any number of arguments, each argument will be added to the | 140 /// Takes any number of arguments, each argument will be added to the |
| 121 /// list on the order given (as per the JS `push` method). | 141 /// list on the order given (as per the JS `push` method). |
| 122 /// | 142 /// |
| 123 /// Compiles to `object.push(x1, ..., xN)`. | 143 /// Compiles to `object.push(x1, ..., xN)`. |
| 124 Push, | 144 Push, |
| 125 | 145 |
| 126 /// Remove and return the last item from a native list. | 146 /// Remove and return the last item from a native list. |
| 127 /// | 147 /// |
| 128 /// Takes no arguments. | 148 /// Takes no arguments. |
| 129 /// | 149 /// |
| 130 /// Compiles to `object.pop()`. | 150 /// Compiles to `object.pop()`. |
| 131 Pop, | 151 Pop, |
| 132 } | 152 } |
| OLD | NEW |