| OLD | NEW |
| 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 '../compiler.dart' show Compiler; | 7 import '../compiler.dart' show Compiler; |
| 8 import '../constant_system_dart.dart'; | 8 import '../constant_system_dart.dart'; |
| 9 import '../constants/constant_system.dart'; | 9 import '../constants/constant_system.dart'; |
| 10 import '../constants/values.dart'; | 10 import '../constants/values.dart'; |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 ConstantValue result = _addOperation.fold(left, right); | 117 ConstantValue result = _addOperation.fold(left, right); |
| 118 if (result != null && result.isNum) { | 118 if (result != null && result.isNum) { |
| 119 return JAVA_SCRIPT_CONSTANT_SYSTEM.convertToJavaScriptConstant(result); | 119 return JAVA_SCRIPT_CONSTANT_SYSTEM.convertToJavaScriptConstant(result); |
| 120 } | 120 } |
| 121 return result; | 121 return result; |
| 122 } | 122 } |
| 123 | 123 |
| 124 apply(left, right) => _addOperation.apply(left, right); | 124 apply(left, right) => _addOperation.apply(left, right); |
| 125 } | 125 } |
| 126 | 126 |
| 127 class JavaScriptRemainderOperation extends ArithmeticNumOperation { |
| 128 String get name => 'remainder'; |
| 129 |
| 130 const JavaScriptRemainderOperation(); |
| 131 |
| 132 int foldInts(int left, int right) { |
| 133 if (right == 0) return null; |
| 134 return left.remainder(right); |
| 135 } |
| 136 |
| 137 num foldNums(num left, num right) => left.remainder(right); |
| 138 apply(left, right) => left.remainder(right); |
| 139 } |
| 140 |
| 127 class JavaScriptBinaryArithmeticOperation implements BinaryOperation { | 141 class JavaScriptBinaryArithmeticOperation implements BinaryOperation { |
| 128 final BinaryOperation dartArithmeticOperation; | 142 final BinaryOperation dartArithmeticOperation; |
| 129 | 143 |
| 130 const JavaScriptBinaryArithmeticOperation(this.dartArithmeticOperation); | 144 const JavaScriptBinaryArithmeticOperation(this.dartArithmeticOperation); |
| 131 | 145 |
| 132 String get name => dartArithmeticOperation.name; | 146 String get name => dartArithmeticOperation.name; |
| 133 | 147 |
| 134 ConstantValue fold(ConstantValue left, ConstantValue right) { | 148 ConstantValue fold(ConstantValue left, ConstantValue right) { |
| 135 ConstantValue result = dartArithmeticOperation.fold(left, right); | 149 ConstantValue result = dartArithmeticOperation.fold(left, right); |
| 136 if (result == null) return result; | 150 if (result == null) return result; |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 final identity = const JavaScriptIdentityOperation(); | 240 final identity = const JavaScriptIdentityOperation(); |
| 227 final ifNull = const IfNullOperation(); | 241 final ifNull = const IfNullOperation(); |
| 228 final lessEqual = const LessEqualOperation(); | 242 final lessEqual = const LessEqualOperation(); |
| 229 final less = const LessOperation(); | 243 final less = const LessOperation(); |
| 230 final modulo = | 244 final modulo = |
| 231 const JavaScriptBinaryArithmeticOperation(const ModuloOperation()); | 245 const JavaScriptBinaryArithmeticOperation(const ModuloOperation()); |
| 232 final multiply = | 246 final multiply = |
| 233 const JavaScriptBinaryArithmeticOperation(const MultiplyOperation()); | 247 const JavaScriptBinaryArithmeticOperation(const MultiplyOperation()); |
| 234 final negate = const JavaScriptNegateOperation(); | 248 final negate = const JavaScriptNegateOperation(); |
| 235 final not = const NotOperation(); | 249 final not = const NotOperation(); |
| 250 final remainder = const JavaScriptRemainderOperation(); |
| 236 final shiftLeft = | 251 final shiftLeft = |
| 237 const JavaScriptBinaryBitOperation(const ShiftLeftOperation()); | 252 const JavaScriptBinaryBitOperation(const ShiftLeftOperation()); |
| 238 final shiftRight = const JavaScriptShiftRightOperation(); | 253 final shiftRight = const JavaScriptShiftRightOperation(); |
| 239 final subtract = | 254 final subtract = |
| 240 const JavaScriptBinaryArithmeticOperation(const SubtractOperation()); | 255 const JavaScriptBinaryArithmeticOperation(const SubtractOperation()); |
| 241 final truncatingDivide = const JavaScriptBinaryArithmeticOperation( | 256 final truncatingDivide = const JavaScriptBinaryArithmeticOperation( |
| 242 const TruncatingDivideOperation()); | 257 const TruncatingDivideOperation()); |
| 243 final codeUnitAt = const CodeUnitAtRuntimeOperation(); | 258 final codeUnitAt = const CodeUnitAtRuntimeOperation(); |
| 244 final round = const JavaScriptRoundOperation(); | 259 final round = const JavaScriptRoundOperation(); |
| 245 | 260 |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 439 result.add(keyList); | 454 result.add(keyList); |
| 440 } else { | 455 } else { |
| 441 // Add the keys individually to avoid generating an unused list constant | 456 // Add the keys individually to avoid generating an unused list constant |
| 442 // for the keys. | 457 // for the keys. |
| 443 result.addAll(keys); | 458 result.addAll(keys); |
| 444 } | 459 } |
| 445 result.addAll(values); | 460 result.addAll(values); |
| 446 return result; | 461 return result; |
| 447 } | 462 } |
| 448 } | 463 } |
| OLD | NEW |