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

Unified Diff: pkg/compiler/lib/src/js_backend/backend.dart

Issue 2568723007: Create Namer and Emitter on codegen start. (Closed)
Patch Set: Small fix. Created 4 years 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
« no previous file with comments | « pkg/compiler/lib/src/compiler.dart ('k') | pkg/compiler/lib/src/js_backend/field_naming_mixin.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 f5018bfb143ea7452632e7e86ad220329de18043..1410cb06e222bc7346b9fe12ca48a3e9ee72b26a 100644
--- a/pkg/compiler/lib/src/js_backend/backend.dart
+++ b/pkg/compiler/lib/src/js_backend/backend.dart
@@ -305,7 +305,7 @@ enum SyntheticConstantKind {
class JavaScriptBackend extends Backend {
String get patchVersion => emitter.patchVersion;
- bool get supportsReflection => emitter.emitter.supportsReflection;
+ bool get supportsReflection => emitter.supportsReflection;
final Annotations annotations;
@@ -343,7 +343,13 @@ class JavaScriptBackend extends Backend {
bool needToInitializeIsolateAffinityTag = false;
bool needToInitializeDispatchProperty = false;
- final Namer namer;
+ Namer _namer;
+
+ Namer get namer {
+ assert(invariant(NO_LOCATION_SPANNABLE, _namer != null,
+ message: "Namer has not been created yet."));
+ return _namer;
+ }
/**
* A collection of selectors that must have a one shot interceptor
@@ -558,8 +564,7 @@ class JavaScriptBackend extends Backend {
bool useStartupEmitter: false,
bool useNewSourceInfo: false,
bool useKernel: false})
- : namer = determineNamer(compiler),
- oneShotInterceptors = new Map<jsAst.Name, Selector>(),
+ : oneShotInterceptors = new Map<jsAst.Name, Selector>(),
interceptedElements = new Map<String, Set<Element>>(),
rti = new _RuntimeTypes(compiler),
rtiEncoder = new _RuntimeTypesEncoder(compiler),
@@ -574,8 +579,8 @@ class JavaScriptBackend extends Backend {
impacts = new BackendImpacts(compiler),
frontend = new JSFrontendAccess(compiler),
super(compiler) {
- emitter = new CodeEmitterTask(
- compiler, namer, generateSourceMap, useStartupEmitter);
+ emitter =
+ new CodeEmitterTask(compiler, generateSourceMap, useStartupEmitter);
typeVariableHandler = new TypeVariableHandler(compiler);
customElementsAnalysis = new CustomElementsAnalysis(this);
lookupMapAnalysis = new LookupMapAnalysis(this, reporter);
@@ -640,12 +645,12 @@ class JavaScriptBackend extends Backend {
library == helpers.jsHelperLibrary;
}
- static Namer determineNamer(Compiler compiler) {
+ Namer determineNamer(ClosedWorld closedWorld) {
return compiler.options.enableMinification
? compiler.options.useFrequencyNamer
- ? new FrequencyBasedNamer(compiler)
- : new MinifyNamer(compiler)
- : new Namer(compiler);
+ ? new FrequencyBasedNamer(this, closedWorld)
+ : new MinifyNamer(this, closedWorld)
+ : new Namer(this, closedWorld);
}
/// The backend must *always* call this method when enqueuing an
@@ -1534,8 +1539,8 @@ class JavaScriptBackend extends Backend {
return jsAst.prettyPrint(generatedCode[element], compiler);
}
- int assembleProgram() {
- int programSize = emitter.assembleProgram();
+ int assembleProgram(ClosedWorld closedWorld) {
+ int programSize = emitter.assembleProgram(namer, closedWorld);
noSuchMethodRegistry.emitDiagnostic();
int totalMethodCount = generatedCode.length;
if (totalMethodCount != preMirrorsMethodCount) {
@@ -2357,7 +2362,9 @@ class JavaScriptBackend extends Backend {
jsInteropAnalysis.onQueueClosed();
}
- WorldImpact onCodegenStart() {
+ WorldImpact onCodegenStart(ClosedWorld closedWorld) {
+ _namer = determineNamer(closedWorld);
+ emitter.createEmitter(_namer, closedWorld);
lookupMapAnalysis.onCodegenStart();
if (hasIsolateSupport) {
return enableIsolateSupport(forResolution: false);
« no previous file with comments | « pkg/compiler/lib/src/compiler.dart ('k') | pkg/compiler/lib/src/js_backend/field_naming_mixin.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698