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 class JavaScriptItemCompilationContext extends ItemCompilationContext { | 9 class JavaScriptItemCompilationContext extends ItemCompilationContext { |
10 final Set<HInstruction> boundsChecked = new Set<HInstruction>(); | 10 final Set<HInstruction> boundsChecked = new Set<HInstruction>(); |
(...skipping 1775 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1786 } | 1786 } |
1787 | 1787 |
1788 Element getCyclicThrowHelper() { | 1788 Element getCyclicThrowHelper() { |
1789 return findHelper("throwCyclicInit"); | 1789 return findHelper("throwCyclicInit"); |
1790 } | 1790 } |
1791 | 1791 |
1792 Element getAsyncHelper() { | 1792 Element getAsyncHelper() { |
1793 return findHelper("asyncHelper"); | 1793 return findHelper("asyncHelper"); |
1794 } | 1794 } |
1795 | 1795 |
| 1796 Element getWrapBody() { |
| 1797 return findHelper("_wrapJsFunctionForAsync"); |
| 1798 } |
| 1799 |
1796 Element getYieldStar() { | 1800 Element getYieldStar() { |
1797 ClassElement classElement = findHelper("IterationMarker"); | 1801 ClassElement classElement = findHelper("IterationMarker"); |
1798 classElement.ensureResolved(compiler); | 1802 classElement.ensureResolved(compiler); |
1799 return classElement.lookupLocalMember("yieldStar"); | 1803 return classElement.lookupLocalMember("yieldStar"); |
1800 } | 1804 } |
1801 | 1805 |
1802 Element getYieldSingle() { | 1806 Element getYieldSingle() { |
1803 ClassElement classElement = findHelper("IterationMarker"); | 1807 ClassElement classElement = findHelper("IterationMarker"); |
1804 classElement.ensureResolved(compiler); | 1808 classElement.ensureResolved(compiler); |
1805 return classElement.lookupLocalMember("yieldSingle"); | 1809 return classElement.lookupLocalMember("yieldSingle"); |
(...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2629 return "${outName}_$name$extension"; | 2633 return "${outName}_$name$extension"; |
2630 } | 2634 } |
2631 | 2635 |
2632 void registerAsyncMarker(FunctionElement element, | 2636 void registerAsyncMarker(FunctionElement element, |
2633 Enqueuer enqueuer, | 2637 Enqueuer enqueuer, |
2634 Registry registry) { | 2638 Registry registry) { |
2635 if (element.asyncMarker == AsyncMarker.ASYNC) { | 2639 if (element.asyncMarker == AsyncMarker.ASYNC) { |
2636 enqueue(enqueuer, getAsyncHelper(), registry); | 2640 enqueue(enqueuer, getAsyncHelper(), registry); |
2637 enqueue(enqueuer, getCompleterConstructor(), registry); | 2641 enqueue(enqueuer, getCompleterConstructor(), registry); |
2638 enqueue(enqueuer, getStreamIteratorConstructor(), registry); | 2642 enqueue(enqueuer, getStreamIteratorConstructor(), registry); |
| 2643 enqueue(enqueuer, getWrapBody(), registry); |
2639 } else if (element.asyncMarker == AsyncMarker.SYNC_STAR) { | 2644 } else if (element.asyncMarker == AsyncMarker.SYNC_STAR) { |
2640 enqueuer.registerInstantiatedClass(getSyncStarIterable(), registry); | 2645 enqueuer.registerInstantiatedClass(getSyncStarIterable(), registry); |
2641 enqueue(enqueuer, getSyncStarIterableConstructor(), registry); | 2646 enqueue(enqueuer, getSyncStarIterableConstructor(), registry); |
2642 enqueue(enqueuer, getEndOfIteration(), registry); | 2647 enqueue(enqueuer, getEndOfIteration(), registry); |
2643 enqueue(enqueuer, getYieldStar(), registry); | 2648 enqueue(enqueuer, getYieldStar(), registry); |
2644 enqueue(enqueuer, getSyncStarUncaughtError(), registry); | 2649 enqueue(enqueuer, getSyncStarUncaughtError(), registry); |
2645 } else if (element.asyncMarker == AsyncMarker.ASYNC_STAR) { | 2650 } else if (element.asyncMarker == AsyncMarker.ASYNC_STAR) { |
2646 enqueuer.registerInstantiatedClass(getASyncStarController(), registry); | 2651 enqueuer.registerInstantiatedClass(getASyncStarController(), registry); |
2647 enqueue(enqueuer, getAsyncStarHelper(), registry); | 2652 enqueue(enqueuer, getAsyncStarHelper(), registry); |
2648 enqueue(enqueuer, getStreamOfController(), registry); | 2653 enqueue(enqueuer, getStreamOfController(), registry); |
2649 enqueue(enqueuer, getYieldSingle(), registry); | 2654 enqueue(enqueuer, getYieldSingle(), registry); |
2650 enqueue(enqueuer, getYieldStar(), registry); | 2655 enqueue(enqueuer, getYieldStar(), registry); |
2651 enqueue(enqueuer, getASyncStarControllerConstructor(), registry); | 2656 enqueue(enqueuer, getASyncStarControllerConstructor(), registry); |
2652 enqueue(enqueuer, getStreamIteratorConstructor(), registry); | 2657 enqueue(enqueuer, getStreamIteratorConstructor(), registry); |
| 2658 enqueue(enqueuer, getWrapBody(), registry); |
2653 } | 2659 } |
2654 } | 2660 } |
2655 } | 2661 } |
2656 | 2662 |
2657 /// Handling of special annotations for tests. | 2663 /// Handling of special annotations for tests. |
2658 class Annotations { | 2664 class Annotations { |
2659 static final Uri PACKAGE_EXPECT = | 2665 static final Uri PACKAGE_EXPECT = |
2660 new Uri(scheme: 'package', path: 'expect/expect.dart'); | 2666 new Uri(scheme: 'package', path: 'expect/expect.dart'); |
2661 | 2667 |
2662 ClassElement expectNoInlineClass; | 2668 ClassElement expectNoInlineClass; |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2929 } | 2935 } |
2930 } | 2936 } |
2931 | 2937 |
2932 /// Records that [constant] is used by the element behind [registry]. | 2938 /// Records that [constant] is used by the element behind [registry]. |
2933 class Dependency { | 2939 class Dependency { |
2934 final ConstantValue constant; | 2940 final ConstantValue constant; |
2935 final Element annotatedElement; | 2941 final Element annotatedElement; |
2936 | 2942 |
2937 const Dependency(this.constant, this.annotatedElement); | 2943 const Dependency(this.constant, this.annotatedElement); |
2938 } | 2944 } |
OLD | NEW |