Chromium Code Reviews| Index: sdk/lib/_internal/compiler/implementation/compiler.dart |
| =================================================================== |
| --- sdk/lib/_internal/compiler/implementation/compiler.dart (revision 16103) |
| +++ sdk/lib/_internal/compiler/implementation/compiler.dart (working copy) |
| @@ -403,11 +403,6 @@ |
| void enableIsolateSupport(LibraryElement element) { |
| // TODO(ahe): Move this method to Enqueuer. |
| isolateLibrary = element.patch; |
| - isolateHelperLibrary = scanBuiltinLibrary('_isolate_helper'); |
| - importForeignLibrary(isolateHelperLibrary); |
| - importHelperLibrary(isolateHelperLibrary); |
| - |
| - libraryLoader.importLibrary(isolateLibrary, isolateHelperLibrary, null); |
| enqueuer.resolution.addToWorkList( |
| isolateHelperLibrary.find(START_ROOT_ISOLATE)); |
| enqueuer.resolution.addToWorkList( |
| @@ -416,20 +411,6 @@ |
| isolateHelperLibrary.find(const SourceString('_callInIsolate'))); |
| enqueuer.codegen.addToWorkList( |
| isolateHelperLibrary.find(START_ROOT_ISOLATE)); |
| - |
| - // The helper library does not use the native language extension, |
| - // so we manually set the native classes this library defines. |
| - // TODO(ngeoffray): Enable annotations on these classes. |
| - ClassElement cls = isolateHelperLibrary.find(const SourceString('_Window')); |
| - cls.setNative('"*DOMWindow"'); |
| - |
| - cls = isolateHelperLibrary.find(const SourceString('_WorkerStub')); |
| - cls.setNative('"*Worker"'); |
| - |
| - enqueuer.resolution.nativeEnqueuer.processNativeClassesInLibrary( |
| - isolateHelperLibrary); |
| - enqueuer.codegen.nativeEnqueuer.processNativeClassesInLibrary( |
| - isolateHelperLibrary); |
| } |
| bool hasIsolateSupport() => isolateLibrary != null; |
| @@ -485,6 +466,13 @@ |
| jsHelperLibrary = scanBuiltinLibrary('_js_helper'); |
| interceptorsLibrary = scanBuiltinLibrary('_interceptors'); |
| foreignLibrary = scanBuiltinLibrary('_foreign_helper'); |
| + isolateHelperLibrary = scanBuiltinLibrary('_isolate_helper'); |
| + // The helper library does not use the native language extension, |
|
ahe
2012/12/14 08:33:31
The *isolate* helper library...
|
| + // so we manually set the native classes this library defines. |
| + // TODO(ngeoffray): Enable annotations on these classes. |
| + ClassElement cls = |
| + isolateHelperLibrary.find(const SourceString('_WorkerStub')); |
| + cls.setNative('"*Worker"'); |
| // The core library was loaded and patched before jsHelperLibrary was |
| // initialized, so it wasn't imported into those two libraries during |
| @@ -495,6 +483,9 @@ |
| importForeignLibrary(jsHelperLibrary); |
| importForeignLibrary(interceptorsLibrary); |
| + importForeignLibrary(isolateHelperLibrary); |
| + importHelperLibrary(isolateHelperLibrary); |
|
ahe
2012/12/14 08:33:31
importHelperLibrary means "import *JS* helper libr
|
| + |
| assertMethod = jsHelperLibrary.find(const SourceString('assertHelper')); |
| identicalFunction = coreLibrary.find(const SourceString('identical')); |
| @@ -527,6 +518,12 @@ |
| } |
| } |
| + void importIsolateHelperLibrary(LibraryElement library) { |
| + if (isolateHelperLibrary != null) { |
| + libraryLoader.importLibrary(library, isolateHelperLibrary, null); |
| + } |
| + } |
| + |
| // TODO(karlklose,floitsch): move this to the javascript backend. |
| /** Enable the 'JS' helper for a library if needed. */ |
| void maybeEnableJSHelper(LibraryElement library) { |
| @@ -562,12 +559,21 @@ |
| } |
| } |
| + void maybeEnableIsolateHelper(LibraryElement library) { |
| + String libraryName = library.uri.toString(); |
| + if (libraryName == 'dart:isolate' |
| + || libraryName == 'dart:html') { |
| + importIsolateHelperLibrary(library); |
| + } |
| + } |
| + |
| void runCompiler(Uri uri) { |
| log('compiling $uri ($BUILD_ID)'); |
| scanBuiltinLibraries(); |
| mainApp = libraryLoader.loadLibrary(uri, null, uri); |
| libraries.forEach((_, library) { |
| maybeEnableJSHelper(library); |
| + maybeEnableIsolateHelper(library); |
| }); |
| final Element main = mainApp.find(MAIN); |
| if (main == null) { |