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

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

Issue 1287673002: Don't delay values and errors from async/await functions. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Update comment. Created 5 years, 4 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 | « no previous file | runtime/vm/parser.cc » ('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 1879 matching lines...) Expand 10 before | Expand all | Expand 10 after
1890 classElement.ensureResolved(compiler); 1890 classElement.ensureResolved(compiler);
1891 return classElement; 1891 return classElement;
1892 } 1892 }
1893 1893
1894 Element getSyncStarIterableConstructor() { 1894 Element getSyncStarIterableConstructor() {
1895 ClassElement classElement = getSyncStarIterable(); 1895 ClassElement classElement = getSyncStarIterable();
1896 classElement.ensureResolved(compiler); 1896 classElement.ensureResolved(compiler);
1897 return classElement.lookupConstructor(""); 1897 return classElement.lookupConstructor("");
1898 } 1898 }
1899 1899
1900 Element getCompleterConstructor() { 1900 Element getSyncCompleterConstructor() {
1901 ClassElement classElement = find(compiler.asyncLibrary, "Completer"); 1901 ClassElement classElement = find(compiler.asyncLibrary, "Completer");
1902 classElement.ensureResolved(compiler); 1902 classElement.ensureResolved(compiler);
1903 return classElement.lookupConstructor(""); 1903 return classElement.lookupConstructor("sync");
1904 } 1904 }
1905 1905
1906 Element getASyncStarController() { 1906 Element getASyncStarController() {
1907 ClassElement classElement = findHelper("AsyncStarStreamController"); 1907 ClassElement classElement = findHelper("AsyncStarStreamController");
1908 classElement.ensureResolved(compiler); 1908 classElement.ensureResolved(compiler);
1909 return classElement; 1909 return classElement;
1910 } 1910 }
1911 1911
1912 Element getASyncStarControllerConstructor() { 1912 Element getASyncStarControllerConstructor() {
1913 ClassElement classElement = getASyncStarController(); 1913 ClassElement classElement = getASyncStarController();
(...skipping 768 matching lines...) Expand 10 before | Expand all | Expand 10 after
2682 String outName = outPath.substring(outPath.lastIndexOf('/') + 1); 2682 String outName = outPath.substring(outPath.lastIndexOf('/') + 1);
2683 String extension = addExtension ? ".part.js" : ""; 2683 String extension = addExtension ? ".part.js" : "";
2684 return "${outName}_$name$extension"; 2684 return "${outName}_$name$extension";
2685 } 2685 }
2686 2686
2687 void registerAsyncMarker(FunctionElement element, 2687 void registerAsyncMarker(FunctionElement element,
2688 Enqueuer enqueuer, 2688 Enqueuer enqueuer,
2689 Registry registry) { 2689 Registry registry) {
2690 if (element.asyncMarker == AsyncMarker.ASYNC) { 2690 if (element.asyncMarker == AsyncMarker.ASYNC) {
2691 enqueue(enqueuer, getAsyncHelper(), registry); 2691 enqueue(enqueuer, getAsyncHelper(), registry);
2692 enqueue(enqueuer, getCompleterConstructor(), registry); 2692 enqueue(enqueuer, getSyncCompleterConstructor(), registry);
2693 enqueue(enqueuer, getStreamIteratorConstructor(), registry); 2693 enqueue(enqueuer, getStreamIteratorConstructor(), registry);
2694 } else if (element.asyncMarker == AsyncMarker.SYNC_STAR) { 2694 } else if (element.asyncMarker == AsyncMarker.SYNC_STAR) {
2695 ClassElement clsSyncStarIterable = getSyncStarIterable(); 2695 ClassElement clsSyncStarIterable = getSyncStarIterable();
2696 clsSyncStarIterable.ensureResolved(compiler); 2696 clsSyncStarIterable.ensureResolved(compiler);
2697 enqueuer.registerInstantiatedType(clsSyncStarIterable.rawType, registry); 2697 enqueuer.registerInstantiatedType(clsSyncStarIterable.rawType, registry);
2698 enqueue(enqueuer, getSyncStarIterableConstructor(), registry); 2698 enqueue(enqueuer, getSyncStarIterableConstructor(), registry);
2699 enqueue(enqueuer, getEndOfIteration(), registry); 2699 enqueue(enqueuer, getEndOfIteration(), registry);
2700 enqueue(enqueuer, getYieldStar(), registry); 2700 enqueue(enqueuer, getYieldStar(), registry);
2701 enqueue(enqueuer, getSyncStarUncaughtError(), registry); 2701 enqueue(enqueuer, getSyncStarUncaughtError(), registry);
2702 } else if (element.asyncMarker == AsyncMarker.ASYNC_STAR) { 2702 } else if (element.asyncMarker == AsyncMarker.ASYNC_STAR) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2737 AsyncRewriterBase rewriter = null; 2737 AsyncRewriterBase rewriter = null;
2738 jsAst.Name name = namer.methodPropertyName(element); 2738 jsAst.Name name = namer.methodPropertyName(element);
2739 switch (element.asyncMarker) { 2739 switch (element.asyncMarker) {
2740 case AsyncMarker.ASYNC: 2740 case AsyncMarker.ASYNC:
2741 rewriter = new AsyncRewriter( 2741 rewriter = new AsyncRewriter(
2742 compiler, 2742 compiler,
2743 compiler.currentElement, 2743 compiler.currentElement,
2744 asyncHelper: 2744 asyncHelper:
2745 emitter.staticFunctionAccess(getAsyncHelper()), 2745 emitter.staticFunctionAccess(getAsyncHelper()),
2746 newCompleter: emitter.staticFunctionAccess( 2746 newCompleter: emitter.staticFunctionAccess(
2747 getCompleterConstructor()), 2747 getSyncCompleterConstructor()),
2748 safeVariableName: namer.safeVariablePrefixForAsyncRewrite, 2748 safeVariableName: namer.safeVariablePrefixForAsyncRewrite,
2749 bodyName: namer.deriveAsyncBodyName(name)); 2749 bodyName: namer.deriveAsyncBodyName(name));
2750 break; 2750 break;
2751 case AsyncMarker.SYNC_STAR: 2751 case AsyncMarker.SYNC_STAR:
2752 rewriter = new SyncStarRewriter( 2752 rewriter = new SyncStarRewriter(
2753 compiler, 2753 compiler,
2754 compiler.currentElement, 2754 compiler.currentElement,
2755 endOfIteration: emitter.staticFunctionAccess( 2755 endOfIteration: emitter.staticFunctionAccess(
2756 getEndOfIteration()), 2756 getEndOfIteration()),
2757 newIterable: emitter.staticFunctionAccess( 2757 newIterable: emitter.staticFunctionAccess(
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
3069 } 3069 }
3070 } 3070 }
3071 3071
3072 /// Records that [constant] is used by the element behind [registry]. 3072 /// Records that [constant] is used by the element behind [registry].
3073 class Dependency { 3073 class Dependency {
3074 final ConstantValue constant; 3074 final ConstantValue constant;
3075 final Element annotatedElement; 3075 final Element annotatedElement;
3076 3076
3077 const Dependency(this.constant, this.annotatedElement); 3077 const Dependency(this.constant, this.annotatedElement);
3078 } 3078 }
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698