| 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 const VERBOSE_OPTIMIZER_HINTS = false; | 7 const VERBOSE_OPTIMIZER_HINTS = false; | 
| 8 | 8 | 
| 9 const bool USE_CPS_IR = const bool.fromEnvironment("USE_CPS_IR"); | 9 const bool USE_CPS_IR = const bool.fromEnvironment("USE_CPS_IR"); | 
| 10 | 10 | 
| (...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 536   bool isInterceptorClass(ClassElement element) { | 536   bool isInterceptorClass(ClassElement element) { | 
| 537     if (element == null) return false; | 537     if (element == null) return false; | 
| 538     if (Elements.isNativeOrExtendsNative(element)) return true; | 538     if (Elements.isNativeOrExtendsNative(element)) return true; | 
| 539     if (interceptedClasses.contains(element)) return true; | 539     if (interceptedClasses.contains(element)) return true; | 
| 540     if (classesMixedIntoInterceptedClasses.contains(element)) return true; | 540     if (classesMixedIntoInterceptedClasses.contains(element)) return true; | 
| 541     return false; | 541     return false; | 
| 542   } | 542   } | 
| 543 | 543 | 
| 544   String registerOneShotInterceptor(Selector selector) { | 544   String registerOneShotInterceptor(Selector selector) { | 
| 545     Set<ClassElement> classes = getInterceptedClassesOn(selector.name); | 545     Set<ClassElement> classes = getInterceptedClassesOn(selector.name); | 
| 546     String name = namer.nameForGetOneShotInterceptor(selector, classes); | 546     String name = namer.getOneShotInterceptorName(selector, classes); | 
| 547     if (!oneShotInterceptors.containsKey(name)) { | 547     if (!oneShotInterceptors.containsKey(name)) { | 
| 548       registerSpecializedGetInterceptor(classes); | 548       registerSpecializedGetInterceptor(classes); | 
| 549       oneShotInterceptors[name] = selector; | 549       oneShotInterceptors[name] = selector; | 
| 550     } | 550     } | 
| 551     return name; | 551     return name; | 
| 552   } | 552   } | 
| 553 | 553 | 
| 554   /** | 554   /** | 
| 555    * Record that [method] is called from a subclass via `super`. | 555    * Record that [method] is called from a subclass via `super`. | 
| 556    */ | 556    */ | 
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 735     } | 735     } | 
| 736     enqueueClass(enqueuer, cls, registry); | 736     enqueueClass(enqueuer, cls, registry); | 
| 737   } | 737   } | 
| 738 | 738 | 
| 739   Set<ClassElement> get interceptedClasses { | 739   Set<ClassElement> get interceptedClasses { | 
| 740     assert(compiler.enqueuer.resolution.queueIsClosed); | 740     assert(compiler.enqueuer.resolution.queueIsClosed); | 
| 741     return _interceptedClasses; | 741     return _interceptedClasses; | 
| 742   } | 742   } | 
| 743 | 743 | 
| 744   void registerSpecializedGetInterceptor(Set<ClassElement> classes) { | 744   void registerSpecializedGetInterceptor(Set<ClassElement> classes) { | 
| 745     String name = namer.nameForGetInterceptor(classes); | 745     String name = namer.getInterceptorName(getInterceptorMethod, classes); | 
| 746     if (classes.contains(jsInterceptorClass)) { | 746     if (classes.contains(jsInterceptorClass)) { | 
| 747       // We can't use a specialized [getInterceptorMethod], so we make | 747       // We can't use a specialized [getInterceptorMethod], so we make | 
| 748       // sure we emit the one with all checks. | 748       // sure we emit the one with all checks. | 
| 749       specializedGetInterceptors[name] = interceptedClasses; | 749       specializedGetInterceptors[name] = interceptedClasses; | 
| 750     } else { | 750     } else { | 
| 751       specializedGetInterceptors[name] = classes; | 751       specializedGetInterceptors[name] = classes; | 
| 752     } | 752     } | 
| 753   } | 753   } | 
| 754 | 754 | 
| 755   void registerCompileTimeConstant(ConstantValue constant, Registry registry) { | 755   void registerCompileTimeConstant(ConstantValue constant, Registry registry) { | 
| (...skipping 1925 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2681   } | 2681   } | 
| 2682 } | 2682 } | 
| 2683 | 2683 | 
| 2684 /// Records that [constant] is used by the element behind [registry]. | 2684 /// Records that [constant] is used by the element behind [registry]. | 
| 2685 class Dependency { | 2685 class Dependency { | 
| 2686   final ConstantValue constant; | 2686   final ConstantValue constant; | 
| 2687   final Element annotatedElement; | 2687   final Element annotatedElement; | 
| 2688 | 2688 | 
| 2689   const Dependency(this.constant, this.annotatedElement); | 2689   const Dependency(this.constant, this.annotatedElement); | 
| 2690 } | 2690 } | 
| OLD | NEW | 
|---|