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

Unified Diff: lib/src/compiler.dart

Issue 19497002: Reducing the amount of code we generate in the compiler: We still continue (Closed) Base URL: git@github.com:dart-lang/web-ui.git@master
Patch Set: Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: lib/src/compiler.dart
diff --git a/lib/src/compiler.dart b/lib/src/compiler.dart
index ef4b0eb134028120fc8f08547f8ca92fdd86c9bb..3559c3d6e51e73b690e21e79f0f40dae26f8a951 100644
--- a/lib/src/compiler.dart
+++ b/lib/src/compiler.dart
@@ -554,7 +554,7 @@ class Compiler {
if (file.isDart || file.isStyleSheet) continue;
_time('Codegen', file.path, () {
var fileInfo = info[file.path];
- fixupHtmlCss(fileInfo, options, getCssPolyfillKind);
+ fixupHtmlCss(fileInfo, options);
_emitComponents(fileInfo);
});
}
@@ -582,9 +582,16 @@ class Compiler {
/** Emit the main .dart file. */
void _emitMainDart(SourceFile file) {
var fileInfo = info[file.path];
- var printer = new EntryPointEmitter(fileInfo, global)
- .run(_pathMapper, _edits[fileInfo.userCode], options.rewriteUrls);
- _emitFileAndSourceMaps(fileInfo, printer, fileInfo.dartCodeUrl);
+
+ var codeInfo = fileInfo.userCode;
+ if (codeInfo != null) {
+ var printer = new CodePrinter(0);
+ if (codeInfo.libraryName == null) {
+ printer.addLine('library ${fileInfo.libraryName};');
+ }
+ printer.add(codeInfo.code);
+ _emitFileAndSourceMaps(fileInfo, printer, fileInfo.dartCodeUrl);
+ }
}
// TODO(jmesserly): refactor this out of Compiler.
@@ -596,14 +603,17 @@ class Compiler {
var bootstrapPath = path.join(path.dirname(file.path), bootstrapName);
var bootstrapOutPath = _pathMapper.outputPath(bootstrapPath, '');
var bootstrapOutName = path.basename(bootstrapOutPath);
- output.add(new OutputFile(bootstrapOutPath, _bootstrapCode(
- _pathMapper.importUrlFor(new FileInfo(
- new UrlInfo('', bootstrapPath, null)), fileInfo))));
+ var bootstrapInfo = new FileInfo(new UrlInfo('', bootstrapPath, null));
+ var printer = generateBootstrapCode(bootstrapInfo, fileInfo, global,
+ _pathMapper, options);
+ printer.build(bootstrapOutPath);
+ output.add(new OutputFile(
+ bootstrapOutPath, printer.text, source: file.path));
var document = file.document;
var hasCss = _emitAllCss();
transformMainHtml(document, fileInfo, _pathMapper, hasCss,
- options.rewriteUrls, _messages);
+ options.rewriteUrls, _messages, global);
document.body.nodes.add(parseFragment(
'<script type="application/dart" src="$bootstrapOutName"></script>'));
@@ -678,7 +688,7 @@ class Compiler {
' Component ${component.tagName} stylesheet \n'
' ==================================================== */\n');
- var polyType = getCssPolyfillKind(component);
+ var cssPolyfillKind = CssPolyfillKind.of(options, component);
var tagName = component.tagName;
if (!component.hasAuthorStyles) {
if (_cssResetStyleSheet != null && !options.mangleCss) {
@@ -687,11 +697,12 @@ class Compiler {
// option was passed).
buff.write('\n/* Start CSS Reset */\n');
buff.write(emitComponentStyleSheet(_cssResetStyleSheet, tagName,
- polyType));
+ cssPolyfillKind));
buff.write('/* End CSS Reset */\n\n');
}
}
- buff.write(emitComponentStyleSheet(styleSheet, tagName, polyType));
+ buff.write(emitComponentStyleSheet(styleSheet, tagName,
+ cssPolyfillKind));
buff.write('\n\n');
}
}
@@ -716,25 +727,13 @@ class Compiler {
'Component has more than one stylesheet - first stylesheet used.',
span);
}
- var polyType = getCssPolyfillKind(component);
- var printer = new WebComponentEmitter(fileInfo, _messages, polyType)
+ var printer = new WebComponentEmitter(fileInfo, _messages,
+ CssPolyfillKind.of(options, component))
.run(component, _pathMapper, _edits[component.userCode]);
_emitFileAndSourceMaps(component, printer, component.externalFile);
}
}
- /** Given a component and CompilerOptions compute the CSS polyfill to emit. */
- CssPolyfillKind getCssPolyfillKind(ComponentInfo component) {
- if (!useCssPolyfill(options, component)) return CssPolyfillKind.NO_POLYFILL;
-
- if (options.mangleCss) return CssPolyfillKind.MANGLED_POLYFILL;
-
- if (!component.hasAuthorStyles && !hasCssReset)
- return CssPolyfillKind.MANGLED_POLYFILL;
-
- return CssPolyfillKind.SCOPED_POLYFILL;
- }
-
/**
* Emits a file that was created using [CodePrinter] and it's corresponding
* source map file.
@@ -775,33 +774,3 @@ class Compiler {
}
}
-// TODO(terry): Replace with enum when supported.
-/** Enum for type of polyfills supported. */
-class CssPolyfillKind {
- final index;
- const CssPolyfillKind(this.index);
-
- /** Emit CSS selectors as seen (no polyfill). */
- static const NO_POLYFILL = const CssPolyfillKind(0);
-
- /** Emit CSS selectors scoped to the "is" attribute of the component. */
- static const SCOPED_POLYFILL = const CssPolyfillKind(1);
-
- /** Emit CSS selectors mangled. */
- static const MANGLED_POLYFILL = const CssPolyfillKind(2);
-}
-
-/**
- * The code that will be used to bootstrap the application, this is inlined in
- * the main.html.html output file.
- */
-String _bootstrapCode(String userMainImport) => """
-library bootstrap;
-
-import '$userMainImport' as userMain;
-
-main() {
- userMain.main();
- userMain.init_autogenerated();
-}
-""";
« lib/polymer_element.dart ('K') | « lib/src/analyzer.dart ('k') | lib/src/emitters.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698