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

Side by Side Diff: lib/compiler/implementation/constants.dart

Issue 11227042: isEven, isOdd, isNegative, isMaxValue, isMinValue, isInfinite, isPositive, isSingleValue. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebase. Created 8 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 4
5 abstract class ConstantVisitor<R> { 5 abstract class ConstantVisitor<R> {
6 R visitSentinel(SentinelConstant constant); 6 R visitSentinel(SentinelConstant constant);
7 R visitFunction(FunctionConstant constant); 7 R visitFunction(FunctionConstant constant);
8 R visitNull(NullConstant constant); 8 R visitNull(NullConstant constant);
9 R visitInt(IntConstant constant); 9 R visitInt(IntConstant constant);
10 R visitDouble(DoubleConstant constant); 10 R visitDouble(DoubleConstant constant);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 177
178 int get hashCode => value.hashCode; 178 int get hashCode => value.hashCode;
179 DartString toDartString() => new DartString.literal(value.toString()); 179 DartString toDartString() => new DartString.literal(value.toString());
180 180
181 accept(ConstantVisitor visitor) => visitor.visitInt(this); 181 accept(ConstantVisitor visitor) => visitor.visitInt(this);
182 } 182 }
183 183
184 class DoubleConstant extends NumConstant { 184 class DoubleConstant extends NumConstant {
185 final double value; 185 final double value;
186 factory DoubleConstant(double value) { 186 factory DoubleConstant(double value) {
187 if (value.isNaN()) { 187 if (value.isNaN) {
188 return const DoubleConstant._internal(double.NAN); 188 return const DoubleConstant._internal(double.NAN);
189 } else if (value == double.INFINITY) { 189 } else if (value == double.INFINITY) {
190 return const DoubleConstant._internal(double.INFINITY); 190 return const DoubleConstant._internal(double.INFINITY);
191 } else if (value == -double.INFINITY) { 191 } else if (value == -double.INFINITY) {
192 return const DoubleConstant._internal(-double.INFINITY); 192 return const DoubleConstant._internal(-double.INFINITY);
193 } else if (value == 0.0 && !value.isNegative()) { 193 } else if (value == 0.0 && !value.isNegative) {
194 return const DoubleConstant._internal(0.0); 194 return const DoubleConstant._internal(0.0);
195 } else if (value == 1.0) { 195 } else if (value == 1.0) {
196 return const DoubleConstant._internal(1.0); 196 return const DoubleConstant._internal(1.0);
197 } else { 197 } else {
198 return new DoubleConstant._internal(value); 198 return new DoubleConstant._internal(value);
199 } 199 }
200 } 200 }
201 const DoubleConstant._internal(this.value); 201 const DoubleConstant._internal(this.value);
202 bool isDouble() => true; 202 bool isDouble() => true;
203 bool isNaN() => value.isNaN(); 203 bool isNaN() => value.isNaN;
204 // We need to check for the negative sign since -0.0 == 0.0. 204 // We need to check for the negative sign since -0.0 == 0.0.
205 bool isMinusZero() => value == 0.0 && value.isNegative(); 205 bool isMinusZero() => value == 0.0 && value.isNegative;
206 206
207 DartType computeType(Compiler compiler) { 207 DartType computeType(Compiler compiler) {
208 return compiler.doubleClass.computeType(compiler); 208 return compiler.doubleClass.computeType(compiler);
209 } 209 }
210 210
211 bool operator ==(var other) { 211 bool operator ==(var other) {
212 if (other is !DoubleConstant) return false; 212 if (other is !DoubleConstant) return false;
213 DoubleConstant otherDouble = other; 213 DoubleConstant otherDouble = other;
214 double otherValue = otherDouble.value; 214 double otherValue = otherDouble.value;
215 if (value == 0.0 && otherValue == 0.0) { 215 if (value == 0.0 && otherValue == 0.0) {
216 return value.isNegative() == otherValue.isNegative(); 216 return value.isNegative == otherValue.isNegative;
217 } else if (value.isNaN()) { 217 } else if (value.isNaN) {
218 return otherValue.isNaN(); 218 return otherValue.isNaN;
219 } else { 219 } else {
220 return value == otherValue; 220 return value == otherValue;
221 } 221 }
222 } 222 }
223 223
224 int get hashCode => value.hashCode; 224 int get hashCode => value.hashCode;
225 DartString toDartString() => new DartString.literal(value.toString()); 225 DartString toDartString() => new DartString.literal(value.toString());
226 226
227 accept(ConstantVisitor visitor) => visitor.visitDouble(this); 227 accept(ConstantVisitor visitor) => visitor.visitDouble(this);
228 } 228 }
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 for (int i = 0; i < fields.length; i++) { 445 for (int i = 0; i < fields.length; i++) {
446 if (fields[i] != other.fields[i]) return false; 446 if (fields[i] != other.fields[i]) return false;
447 } 447 }
448 return true; 448 return true;
449 } 449 }
450 450
451 List<Constant> getDependencies() => fields; 451 List<Constant> getDependencies() => fields;
452 452
453 accept(ConstantVisitor visitor) => visitor.visitConstructed(this); 453 accept(ConstantVisitor visitor) => visitor.visitConstructed(this);
454 } 454 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698