Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Side by Side Diff: pkg/compiler/lib/src/js_backend/backend.dart

Issue 1163833002: Dart2js async-await. Bind the async-body to the current zone. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/compiler/lib/src/js/rewrite_async.dart ('k') | pkg/compiler/lib/src/ssa/builder.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js/rewrite_async.dart ('k') | pkg/compiler/lib/src/ssa/builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698