Index: pkg/compiler/lib/src/js_backend/backend.dart |
diff --git a/pkg/compiler/lib/src/js_backend/backend.dart b/pkg/compiler/lib/src/js_backend/backend.dart |
index 882b80b7668a6e8059a89362f4b55a52390be771..5631c115265a687135bfd77473f7566618cd24ff 100644 |
--- a/pkg/compiler/lib/src/js_backend/backend.dart |
+++ b/pkg/compiler/lib/src/js_backend/backend.dart |
@@ -235,8 +235,8 @@ class JavaScriptBackend extends Backend { |
new Uri(scheme: 'dart', path: '_js_embedded_names'); |
static final Uri DART_ISOLATE_HELPER = |
new Uri(scheme: 'dart', path: '_isolate_helper'); |
- static final Uri DART_HTML = |
- new Uri(scheme: 'dart', path: 'html'); |
+ static final Uri DART_ASYNC = new Uri(scheme: 'dart', path: 'async'); |
+ static final Uri DART_HTML = new Uri(scheme: 'dart', path: 'html'); |
static const String INVOKE_ON = '_getCachedInvocation'; |
static const String START_ROOT_ISOLATE = 'startRootIsolate'; |
@@ -273,6 +273,7 @@ class JavaScriptBackend extends Backend { |
FunctionInlineCache inlineCache = new FunctionInlineCache(); |
LibraryElement jsHelperLibrary; |
+ LibraryElement asyncLibrary; |
LibraryElement interceptorsLibrary; |
LibraryElement foreignLibrary; |
LibraryElement isolateHelperLibrary; |
@@ -669,10 +670,11 @@ class JavaScriptBackend extends Backend { |
// TODO(karlklose): Split into findHelperFunction and findHelperClass and |
// add a check that the element has the expected kind. |
Element findHelper(String name) => find(jsHelperLibrary, name); |
+ Element findAsyncHelper(String name) => find(asyncLibrary, name); |
Element findInterceptor(String name) => find(interceptorsLibrary, name); |
Element find(LibraryElement library, String name) { |
- Element element = library.findLocal(name); |
+ Element element = library.implementation.findLocal(name); |
assert(invariant(library, element != null, |
message: "Element '$name' not found in '${library.canonicalUri}'.")); |
return element; |
@@ -1850,47 +1852,47 @@ class JavaScriptBackend extends Backend { |
} |
Element getAsyncHelper() { |
- return findHelper("asyncHelper"); |
+ return findAsyncHelper("_asyncHelper"); |
} |
Element getWrapBody() { |
- return findHelper("_wrapJsFunctionForAsync"); |
+ return findAsyncHelper("_wrapJsFunctionForAsync"); |
} |
Element getYieldStar() { |
- ClassElement classElement = findHelper("IterationMarker"); |
+ ClassElement classElement = findAsyncHelper("_IterationMarker"); |
classElement.ensureResolved(compiler); |
return classElement.lookupLocalMember("yieldStar"); |
} |
Element getYieldSingle() { |
- ClassElement classElement = findHelper("IterationMarker"); |
+ ClassElement classElement = findAsyncHelper("_IterationMarker"); |
classElement.ensureResolved(compiler); |
return classElement.lookupLocalMember("yieldSingle"); |
} |
Element getSyncStarUncaughtError() { |
- ClassElement classElement = findHelper("IterationMarker"); |
+ ClassElement classElement = findAsyncHelper("_IterationMarker"); |
classElement.ensureResolved(compiler); |
return classElement.lookupLocalMember("uncaughtError"); |
} |
Element getAsyncStarHelper() { |
- return findHelper("asyncStarHelper"); |
+ return findAsyncHelper("_asyncStarHelper"); |
} |
Element getStreamOfController() { |
- return findHelper("streamOfController"); |
+ return findAsyncHelper("_streamOfController"); |
} |
Element getEndOfIteration() { |
- ClassElement classElement = findHelper("IterationMarker"); |
+ ClassElement classElement = findAsyncHelper("_IterationMarker"); |
classElement.ensureResolved(compiler); |
return classElement.lookupLocalMember("endOfIteration"); |
} |
Element getSyncStarIterable() { |
- ClassElement classElement = findHelper("SyncStarIterable"); |
+ ClassElement classElement = findAsyncHelper("_SyncStarIterable"); |
classElement.ensureResolved(compiler); |
return classElement; |
} |
@@ -1908,7 +1910,8 @@ class JavaScriptBackend extends Backend { |
} |
Element getASyncStarController() { |
- ClassElement classElement = findHelper("AsyncStarStreamController"); |
+ ClassElement classElement = |
+ findAsyncHelper("_AsyncStarStreamController"); |
classElement.ensureResolved(compiler); |
return classElement; |
} |
@@ -2022,6 +2025,8 @@ class JavaScriptBackend extends Backend { |
Uri uri = library.canonicalUri; |
if (uri == DART_JS_HELPER) { |
jsHelperLibrary = library; |
+ } else if (uri == DART_ASYNC) { |
+ asyncLibrary = library; |
} else if (uri == DART_INTERNAL) { |
internalLibrary = library; |
} else if (uri == DART_INTERCEPTORS) { |