| 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 part of js_backend; | 5 part of js_backend; |
| 6 | 6 |
| 7 typedef void Recompile(Element element); | 7 typedef void Recompile(Element element); |
| 8 | 8 |
| 9 class ReturnInfo { | 9 class ReturnInfo { |
| 10 HType returnType; | 10 HType returnType; |
| (...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 727 // explicit receiver. https://code.google.com/p/dart/issues/detail?id=8942 | 727 // explicit receiver. https://code.google.com/p/dart/issues/detail?id=8942 |
| 728 | 728 |
| 729 /** | 729 /** |
| 730 * A map of specialized versions of the [getInterceptorMethod]. | 730 * A map of specialized versions of the [getInterceptorMethod]. |
| 731 * Since [getInterceptorMethod] is a hot method at runtime, we're | 731 * Since [getInterceptorMethod] is a hot method at runtime, we're |
| 732 * always specializing it based on the incoming type. The keys in | 732 * always specializing it based on the incoming type. The keys in |
| 733 * the map are the names of these specialized versions. Note that | 733 * the map are the names of these specialized versions. Note that |
| 734 * the generic version that contains all possible type checks is | 734 * the generic version that contains all possible type checks is |
| 735 * also stored in this map. | 735 * also stored in this map. |
| 736 */ | 736 */ |
| 737 final Map<String, Collection<ClassElement>> specializedGetInterceptors; | 737 final Map<String, Set<ClassElement>> specializedGetInterceptors; |
| 738 | 738 |
| 739 /** | 739 /** |
| 740 * Set of classes whose methods are intercepted. | 740 * Set of classes whose methods are intercepted. |
| 741 */ | 741 */ |
| 742 final Set<ClassElement> interceptedClasses = new Set<ClassElement>(); | 742 final Set<ClassElement> interceptedClasses = new Set<ClassElement>(); |
| 743 | 743 |
| 744 /** | 744 /** |
| 745 * Set of classes used as mixins on native classes. Methods on these classes | 745 * Set of classes used as mixins on native classes. Methods on these classes |
| 746 * might also be mixed in to non-native classes. | 746 * might also be mixed in to non-native classes. |
| 747 */ | 747 */ |
| (...skipping 12 matching lines...) Expand all Loading... |
| 760 final RuntimeTypes rti; | 760 final RuntimeTypes rti; |
| 761 | 761 |
| 762 JavaScriptBackend(Compiler compiler, bool generateSourceMap, bool disableEval) | 762 JavaScriptBackend(Compiler compiler, bool generateSourceMap, bool disableEval) |
| 763 : namer = determineNamer(compiler), | 763 : namer = determineNamer(compiler), |
| 764 returnInfo = new Map<Element, ReturnInfo>(), | 764 returnInfo = new Map<Element, ReturnInfo>(), |
| 765 invalidateAfterCodegen = new List<Element>(), | 765 invalidateAfterCodegen = new List<Element>(), |
| 766 usedInterceptors = new Set<Selector>(), | 766 usedInterceptors = new Set<Selector>(), |
| 767 oneShotInterceptors = new Map<String, Selector>(), | 767 oneShotInterceptors = new Map<String, Selector>(), |
| 768 interceptedElements = new Map<SourceString, Set<Element>>(), | 768 interceptedElements = new Map<SourceString, Set<Element>>(), |
| 769 rti = new RuntimeTypes(compiler), | 769 rti = new RuntimeTypes(compiler), |
| 770 specializedGetInterceptors = | 770 specializedGetInterceptors = new Map<String, Set<ClassElement>>(), |
| 771 new Map<String, Collection<ClassElement>>(), | |
| 772 super(compiler, JAVA_SCRIPT_CONSTANT_SYSTEM) { | 771 super(compiler, JAVA_SCRIPT_CONSTANT_SYSTEM) { |
| 773 emitter = disableEval | 772 emitter = disableEval |
| 774 ? new CodeEmitterNoEvalTask(compiler, namer, generateSourceMap) | 773 ? new CodeEmitterNoEvalTask(compiler, namer, generateSourceMap) |
| 775 : new CodeEmitterTask(compiler, namer, generateSourceMap); | 774 : new CodeEmitterTask(compiler, namer, generateSourceMap); |
| 776 builder = new SsaBuilderTask(this); | 775 builder = new SsaBuilderTask(this); |
| 777 optimizer = new SsaOptimizerTask(this); | 776 optimizer = new SsaOptimizerTask(this); |
| 778 generator = new SsaCodeGeneratorTask(this); | 777 generator = new SsaCodeGeneratorTask(this); |
| 779 argumentTypes = new ArgumentTypesRegistry(this); | 778 argumentTypes = new ArgumentTypesRegistry(this); |
| 780 fieldTypes = new FieldTypesRegistry(this); | 779 fieldTypes = new FieldTypesRegistry(this); |
| 781 } | 780 } |
| (...skipping 983 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1765 ClassElement get constListImplementation => jsArrayClass; | 1764 ClassElement get constListImplementation => jsArrayClass; |
| 1766 ClassElement get fixedListImplementation => jsFixedArrayClass; | 1765 ClassElement get fixedListImplementation => jsFixedArrayClass; |
| 1767 ClassElement get growableListImplementation => jsExtendableArrayClass; | 1766 ClassElement get growableListImplementation => jsExtendableArrayClass; |
| 1768 ClassElement get mapImplementation => mapLiteralClass; | 1767 ClassElement get mapImplementation => mapLiteralClass; |
| 1769 ClassElement get constMapImplementation => constMapLiteralClass; | 1768 ClassElement get constMapImplementation => constMapLiteralClass; |
| 1770 ClassElement get functionImplementation => jsFunctionClass; | 1769 ClassElement get functionImplementation => jsFunctionClass; |
| 1771 ClassElement get typeImplementation => typeLiteralClass; | 1770 ClassElement get typeImplementation => typeLiteralClass; |
| 1772 ClassElement get boolImplementation => jsBoolClass; | 1771 ClassElement get boolImplementation => jsBoolClass; |
| 1773 ClassElement get nullImplementation => jsNullClass; | 1772 ClassElement get nullImplementation => jsNullClass; |
| 1774 } | 1773 } |
| OLD | NEW |