| 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.constants.values; | 5 library dart2js.constants.values; |
| 6 | 6 |
| 7 import '../common.dart'; | 7 import '../common.dart'; |
| 8 import '../core_types.dart'; | 8 import '../core_types.dart'; |
| 9 import '../dart_types.dart'; | 9 import '../dart_types.dart'; |
| 10 import '../elements/elements.dart' | 10 import '../elements/elements.dart' |
| (...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 } | 495 } |
| 496 sb.write('])'); | 496 sb.write('])'); |
| 497 return sb.toString(); | 497 return sb.toString(); |
| 498 } | 498 } |
| 499 } | 499 } |
| 500 | 500 |
| 501 class MapConstantValue extends ObjectConstantValue { | 501 class MapConstantValue extends ObjectConstantValue { |
| 502 final List<ConstantValue> keys; | 502 final List<ConstantValue> keys; |
| 503 final List<ConstantValue> values; | 503 final List<ConstantValue> values; |
| 504 final int hashCode; | 504 final int hashCode; |
| 505 Map<ConstantValue, ConstantValue> _lookupMap; |
| 505 | 506 |
| 506 MapConstantValue(InterfaceType type, | 507 MapConstantValue(InterfaceType type, |
| 507 List<ConstantValue> keys, | 508 List<ConstantValue> keys, |
| 508 List<ConstantValue> values) | 509 List<ConstantValue> values) |
| 509 : this.keys = keys, | 510 : this.keys = keys, |
| 510 this.values = values, | 511 this.values = values, |
| 511 this.hashCode = Hashing.listHash(values, | 512 this.hashCode = Hashing.listHash(values, |
| 512 Hashing.listHash(keys, | 513 Hashing.listHash(keys, |
| 513 Hashing.objectHash(type))), | 514 Hashing.objectHash(type))), |
| 514 super(type) { | 515 super(type) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 532 | 533 |
| 533 List<ConstantValue> getDependencies() { | 534 List<ConstantValue> getDependencies() { |
| 534 List<ConstantValue> result = <ConstantValue>[]; | 535 List<ConstantValue> result = <ConstantValue>[]; |
| 535 result.addAll(keys); | 536 result.addAll(keys); |
| 536 result.addAll(values); | 537 result.addAll(values); |
| 537 return result; | 538 return result; |
| 538 } | 539 } |
| 539 | 540 |
| 540 int get length => keys.length; | 541 int get length => keys.length; |
| 541 | 542 |
| 543 ConstantValue lookup(ConstantValue key) { |
| 544 var lookupMap = _lookupMap ??= |
| 545 new Map<ConstantValue, ConstantValue>.fromIterables(keys, values); |
| 546 return lookupMap[key]; |
| 547 } |
| 548 |
| 542 accept(ConstantValueVisitor visitor, arg) => visitor.visitMap(this, arg); | 549 accept(ConstantValueVisitor visitor, arg) => visitor.visitMap(this, arg); |
| 543 | 550 |
| 544 String unparse() { | 551 String unparse() { |
| 545 StringBuffer sb = new StringBuffer(); | 552 StringBuffer sb = new StringBuffer(); |
| 546 _unparseTypeArguments(sb); | 553 _unparseTypeArguments(sb); |
| 547 sb.write('{'); | 554 sb.write('{'); |
| 548 for (int i = 0 ; i < length ; i++) { | 555 for (int i = 0 ; i < length ; i++) { |
| 549 if (i > 0) sb.write(','); | 556 if (i > 0) sb.write(','); |
| 550 sb.write(keys[i].unparse()); | 557 sb.write(keys[i].unparse()); |
| 551 sb.write(':'); | 558 sb.write(':'); |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 745 | 752 |
| 746 @override | 753 @override |
| 747 DartType getType(CoreTypes types) => const DynamicType(); | 754 DartType getType(CoreTypes types) => const DynamicType(); |
| 748 | 755 |
| 749 @override | 756 @override |
| 750 String toStructuredString() => 'NonConstant'; | 757 String toStructuredString() => 'NonConstant'; |
| 751 | 758 |
| 752 @override | 759 @override |
| 753 String unparse() => '>>non-constant<<'; | 760 String unparse() => '>>non-constant<<'; |
| 754 } | 761 } |
| OLD | NEW |