| Index: pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart
|
| diff --git a/pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart b/pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart
|
| index 668a0e3d53cd246a5d3817ae8bb29609e2f2b55d..1be615cc3b775e18d9477cb7b377b6dafeddc5e0 100644
|
| --- a/pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart
|
| +++ b/pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart
|
| @@ -46,18 +46,19 @@ class ModelEmitter {
|
| }
|
|
|
| int emitProgram(Program program) {
|
| - List<Output> outputs = program.outputs;
|
| - MainOutput mainUnit = outputs.first;
|
| - js.Statement mainAst = emitMainUnit(program);
|
| + List<Fragment> fragments = program.fragments;
|
| + MainFragment mainFragment = fragments.first;
|
| + js.Statement mainAst = emitMainFragment(program);
|
| String mainCode = js.prettyPrint(mainAst, compiler).getText();
|
| - compiler.outputProvider(mainUnit.outputFileName, 'js')
|
| + compiler.outputProvider(mainFragment.outputFileName, 'js')
|
| ..add(buildGeneratedBy(compiler))
|
| ..add(mainCode)
|
| ..close();
|
| int totalSize = mainCode.length;
|
|
|
| - outputs.skip(1).forEach((DeferredOutput deferredUnit) {
|
| - js.Expression ast = emitDeferredUnit(deferredUnit, mainUnit.holders);
|
| + fragments.skip(1).forEach((DeferredFragment deferredUnit) {
|
| + js.Expression ast =
|
| + emitDeferredFragment(deferredUnit, mainFragment.holders);
|
| String code = js.prettyPrint(ast, compiler).getText();
|
| totalSize += code.length;
|
| compiler.outputProvider(deferredUnit.outputFileName, deferredExtension)
|
| @@ -79,11 +80,11 @@ class ModelEmitter {
|
| return '// Generated by dart2js, the Dart to JavaScript compiler$suffix.\n';
|
| }
|
|
|
| - js.Statement emitMainUnit(Program program) {
|
| - MainOutput unit = program.outputs.first;
|
| - List<js.Expression> elements = unit.libraries.map(emitLibrary).toList();
|
| + js.Statement emitMainFragment(Program program) {
|
| + MainFragment fragment = program.fragments.first;
|
| + List<js.Expression> elements = fragment.libraries.map(emitLibrary).toList();
|
| elements.add(
|
| - emitLazilyInitializedStatics(unit.staticLazilyInitializedFields));
|
| + emitLazilyInitializedStatics(fragment.staticLazilyInitializedFields));
|
|
|
| js.Statement nativeBoilerplate;
|
| if (NativeGenerator.needsIsolateAffinityTagInitialization(backend)) {
|
| @@ -102,16 +103,16 @@ class ModelEmitter {
|
| return js.js.statement(
|
| boilerplate,
|
| {'deferredInitializer': emitDeferredInitializerGlobal(program.loadMap),
|
| - 'holders': emitHolders(unit.holders),
|
| + 'holders': emitHolders(fragment.holders),
|
| 'cyclicThrow':
|
| backend.emitter.staticFunctionAccess(backend.getCyclicThrowHelper()),
|
| 'outputContainsConstantList': program.outputContainsConstantList,
|
| 'embeddedGlobals': emitEmbeddedGlobals(program.loadMap),
|
| - 'constants': emitConstants(unit.constants),
|
| - 'staticNonFinals': emitStaticNonFinalFields(unit.staticNonFinalFields),
|
| + 'constants': emitConstants(fragment.constants),
|
| + 'staticNonFinals': emitStaticNonFinalFields(fragment.staticNonFinalFields),
|
| 'nativeBoilerplate': nativeBoilerplate,
|
| - 'eagerClasses': emitEagerClassInitializations(unit.libraries),
|
| - 'main': unit.main,
|
| + 'eagerClasses': emitEagerClassInitializations(fragment.libraries),
|
| + 'main': fragment.main,
|
| 'code': code});
|
| }
|
|
|
| @@ -145,7 +146,7 @@ class ModelEmitter {
|
| return js.js.uncachedExpressionTemplate('makeConstList(#)');
|
| }
|
|
|
| - js.Block emitEmbeddedGlobals(Map<String, List<Output>> loadMap) {
|
| + js.Block emitEmbeddedGlobals(Map<String, List<Fragment>> loadMap) {
|
| List<js.Property> globals = <js.Property>[];
|
|
|
| if (loadMap.isNotEmpty) {
|
| @@ -165,24 +166,25 @@ class ModelEmitter {
|
| return new js.Block(statements);
|
| }
|
|
|
| - List<js.Property> emitLoadUrisAndHashes(Map<String, List<Output>> loadMap) {
|
| - js.ArrayInitializer outputUris(List<Output> outputs) {
|
| - return js.stringArray(outputs.map((DeferredOutput output) =>
|
| - "${output.outputFileName}$deferredExtension"));
|
| + List<js.Property> emitLoadUrisAndHashes(Map<String, List<Fragment>> loadMap) {
|
| + js.ArrayInitializer outputUris(List<Fragment> fragments) {
|
| + return js.stringArray(fragments.map((DeferredFragment fragment) =>
|
| + "${fragment.outputFileName}$deferredExtension"));
|
| }
|
| - js.ArrayInitializer outputHashes(List<Output> outputs) {
|
| + js.ArrayInitializer outputHashes(List<Fragment> fragments) {
|
| // TODO(floitsch): the hash must depend on the generated code.
|
| return js.numArray(
|
| - outputs.map((DeferredOutput output) => output.hashCode));
|
| + fragments.map((DeferredFragment fragment) => fragment.hashCode));
|
| }
|
|
|
| List<js.Property> uris = new List<js.Property>(loadMap.length);
|
| List<js.Property> hashes = new List<js.Property>(loadMap.length);
|
| int count = 0;
|
| - loadMap.forEach((String loadId, List<Output> outputList) {
|
| - uris[count] = new js.Property(js.string(loadId), outputUris(outputList));
|
| + loadMap.forEach((String loadId, List<Fragment> fragmentList) {
|
| + uris[count] =
|
| + new js.Property(js.string(loadId), outputUris(fragmentList));
|
| hashes[count] =
|
| - new js.Property(js.string(loadId), outputHashes(outputList));
|
| + new js.Property(js.string(loadId), outputHashes(fragmentList));
|
| count++;
|
| });
|
|
|
| @@ -214,16 +216,17 @@ class ModelEmitter {
|
| return new js.Property(js.string(INITIALIZE_LOADED_HUNK), function);
|
| }
|
|
|
| - js.Expression emitDeferredUnit(DeferredOutput unit, List<Holder> holders) {
|
| + js.Expression emitDeferredFragment(DeferredFragment fragment,
|
| + List<Holder> holders) {
|
| // TODO(floitsch): initialize eager classes.
|
| // TODO(floitsch): the hash must depend on the output.
|
| int hash = this.hashCode;
|
| - if (unit.constants.isNotEmpty) {
|
| + if (fragment.constants.isNotEmpty) {
|
| throw new UnimplementedError("constants in deferred units");
|
| }
|
| js.ArrayInitializer content =
|
| - new js.ArrayInitializer(unit.libraries.map(emitLibrary)
|
| - .toList(growable: false));
|
| + new js.ArrayInitializer(fragment.libraries.map(emitLibrary)
|
| + .toList(growable: false));
|
| return js.js("$deferredInitializersGlobal[$hash] = #", content);
|
| }
|
|
|
|
|