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

Side by Side Diff: pkg/compiler/lib/src/js_backend/constant_system_javascript.dart

Issue 1121233002: Add ConstantExpression.evaluate. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 7 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 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 library dart2js.constant_system.js; 5 library dart2js.constant_system.js;
6 6
7 import '../constants/constant_system.dart'; 7 import '../constants/constant_system.dart';
8 import '../constants/values.dart'; 8 import '../constants/values.dart';
9 import '../constant_system_dart.dart'; 9 import '../constant_system_dart.dart';
10 import '../dart_types.dart'; 10 import '../dart_types.dart';
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 !constant.isMinusZero) { 233 !constant.isMinusZero) {
234 int intValue = doubleValue.truncate(); 234 int intValue = doubleValue.truncate();
235 if (intValue == doubleValue) { 235 if (intValue == doubleValue) {
236 return new IntConstantValue(intValue); 236 return new IntConstantValue(intValue);
237 } 237 }
238 } 238 }
239 } 239 }
240 return constant; 240 return constant;
241 } 241 }
242 242
243 NumConstantValue createInt(int i) 243 @override
244 => convertToJavaScriptConstant(new IntConstantValue(i)); 244 NumConstantValue createInt(int i) {
245 return convertToJavaScriptConstant(new IntConstantValue(i));
246 }
247
245 NumConstantValue createInt32(int i) => new IntConstantValue(i & BITS32); 248 NumConstantValue createInt32(int i) => new IntConstantValue(i & BITS32);
246 NumConstantValue createDouble(double d) 249 NumConstantValue createDouble(double d)
247 => convertToJavaScriptConstant(new DoubleConstantValue(d)); 250 => convertToJavaScriptConstant(new DoubleConstantValue(d));
248 StringConstantValue createString(DartString string) { 251 StringConstantValue createString(DartString string) {
249 return new StringConstantValue(string); 252 return new StringConstantValue(string);
250 } 253 }
251 BoolConstantValue createBool(bool value) => new BoolConstantValue(value); 254 BoolConstantValue createBool(bool value) => new BoolConstantValue(value);
252 NullConstantValue createNull() => new NullConstantValue(); 255 NullConstantValue createNull() => new NullConstantValue();
253 256
257
258 @override
259 ListConstantValue createList(InterfaceType type,
260 List<ConstantValue> values) {
261 return new ListConstantValue(type, values);
262 }
263
264 @override
265 ConstantValue createType(Compiler compiler, DartType type) {
266 return new TypeConstantValue(
267 type, compiler.backend.typeImplementation.computeType(compiler));
268 }
269
254 // Integer checks don't verify that the number is not -0.0. 270 // Integer checks don't verify that the number is not -0.0.
255 bool isInt(ConstantValue constant) => constant.isInt || constant.isMinusZero; 271 bool isInt(ConstantValue constant) => constant.isInt || constant.isMinusZero;
256 bool isDouble(ConstantValue constant) 272 bool isDouble(ConstantValue constant)
257 => constant.isDouble && !constant.isMinusZero; 273 => constant.isDouble && !constant.isMinusZero;
258 bool isString(ConstantValue constant) => constant.isString; 274 bool isString(ConstantValue constant) => constant.isString;
259 bool isBool(ConstantValue constant) => constant.isBool; 275 bool isBool(ConstantValue constant) => constant.isBool;
260 bool isNull(ConstantValue constant) => constant.isNull; 276 bool isNull(ConstantValue constant) => constant.isNull;
261 277
262 bool isSubtype(DartTypes types, DartType s, DartType t) { 278 bool isSubtype(DartTypes types, DartType s, DartType t) {
263 // At runtime, an integer is both an integer and a double: the 279 // At runtime, an integer is both an integer and a double: the
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 result.add(keyList); 374 result.add(keyList);
359 } else { 375 } else {
360 // Add the keys individually to avoid generating an unused list constant 376 // Add the keys individually to avoid generating an unused list constant
361 // for the keys. 377 // for the keys.
362 result.addAll(keys); 378 result.addAll(keys);
363 } 379 }
364 result.addAll(values); 380 result.addAll(values);
365 return result; 381 return result;
366 } 382 }
367 } 383 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698