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

Side by Side Diff: pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart

Issue 2972523002: Implement JsKernelToElementMap through KernelToElementMapBase (Closed)
Patch Set: Updated cf. comments Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dart2js.js_emitter.program_builder; 5 library dart2js.js_emitter.program_builder;
6 6
7 import 'dart:io'; 7 import 'dart:io';
8 import 'dart:convert' show JSON; 8 import 'dart:convert' show JSON;
9 9
10 import '../../closure.dart' show ClosureConversionTask, ClosureFieldElement; 10 import '../../closure.dart' show ClosureConversionTask, ClosureFieldElement;
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 final RuntimeTypesEncoder _rtiEncoder; 94 final RuntimeTypesEncoder _rtiEncoder;
95 final RuntimeTypesSubstitutions _rtiSubstitutions; 95 final RuntimeTypesSubstitutions _rtiSubstitutions;
96 final JsInteropAnalysis _jsInteropAnalysis; 96 final JsInteropAnalysis _jsInteropAnalysis;
97 final OneShotInterceptorData _oneShotInterceptorData; 97 final OneShotInterceptorData _oneShotInterceptorData;
98 final CustomElementsCodegenAnalysis _customElementsCodegenAnalysis; 98 final CustomElementsCodegenAnalysis _customElementsCodegenAnalysis;
99 final Map<MemberEntity, js.Expression> _generatedCode; 99 final Map<MemberEntity, js.Expression> _generatedCode;
100 final Namer _namer; 100 final Namer _namer;
101 final CodeEmitterTask _task; 101 final CodeEmitterTask _task;
102 final ClosedWorld _closedWorld; 102 final ClosedWorld _closedWorld;
103 103
104 /// The [Sorter] used for ordering elements in the generated JavaScript.
105 final Sorter _sorter;
106
104 /// Contains the collected information the program builder used to build 107 /// Contains the collected information the program builder used to build
105 /// the model. 108 /// the model.
106 // The collector will be filled on the first call to `buildProgram`. 109 // The collector will be filled on the first call to `buildProgram`.
107 // It is stored and publicly exposed for backwards compatibility. New code 110 // It is stored and publicly exposed for backwards compatibility. New code
108 // (and in particular new emitters) should not use it. 111 // (and in particular new emitters) should not use it.
109 final Collector collector; 112 final Collector collector;
110 113
111 final Registry _registry; 114 final Registry _registry;
112 115
113 final FunctionEntity _mainFunction; 116 final FunctionEntity _mainFunction;
(...skipping 22 matching lines...) Expand all
136 this._rtiChecks, 139 this._rtiChecks,
137 this._rtiEncoder, 140 this._rtiEncoder,
138 this._rtiSubstitutions, 141 this._rtiSubstitutions,
139 this._jsInteropAnalysis, 142 this._jsInteropAnalysis,
140 this._oneShotInterceptorData, 143 this._oneShotInterceptorData,
141 this._customElementsCodegenAnalysis, 144 this._customElementsCodegenAnalysis,
142 this._generatedCode, 145 this._generatedCode,
143 this._namer, 146 this._namer,
144 this._task, 147 this._task,
145 this._closedWorld, 148 this._closedWorld,
149 this._sorter,
146 Set<ClassEntity> rtiNeededClasses, 150 Set<ClassEntity> rtiNeededClasses,
147 this._mainFunction, 151 this._mainFunction,
148 {bool isMockCompilation}) 152 {bool isMockCompilation})
149 : this._isMockCompilation = isMockCompilation, 153 : this._isMockCompilation = isMockCompilation,
150 this.collector = new Collector( 154 this.collector = new Collector(
151 _options, 155 _options,
152 _commonElements, 156 _commonElements,
153 _elementEnvironment, 157 _elementEnvironment,
154 _deferredLoadTask, 158 _deferredLoadTask,
155 _worldBuilder, 159 _worldBuilder,
156 _namer, 160 _namer,
157 _task.emitter, 161 _task.emitter,
158 _constantHandler, 162 _constantHandler,
159 _nativeData, 163 _nativeData,
160 _interceptorData, 164 _interceptorData,
161 _oneShotInterceptorData, 165 _oneShotInterceptorData,
162 _mirrorsData, 166 _mirrorsData,
163 _closedWorld, 167 _closedWorld,
164 rtiNeededClasses, 168 rtiNeededClasses,
165 _generatedCode, 169 _generatedCode,
166 _task.sorter), 170 _sorter),
167 this._registry = new Registry(_deferredLoadTask, _task.sorter); 171 this._registry = new Registry(_deferredLoadTask, _sorter);
168 172
169 /// Mapping from [ClassEntity] to constructed [Class]. We need this to 173 /// Mapping from [ClassEntity] to constructed [Class]. We need this to
170 /// update the superclass in the [Class]. 174 /// update the superclass in the [Class].
171 final Map<ClassEntity, Class> _classes = <ClassEntity, Class>{}; 175 final Map<ClassEntity, Class> _classes = <ClassEntity, Class>{};
172 176
173 /// Mapping from [OutputUnit] to constructed [Fragment]. We need this to 177 /// Mapping from [OutputUnit] to constructed [Fragment]. We need this to
174 /// generate the deferredLoadingMap (to know which hunks to load). 178 /// generate the deferredLoadingMap (to know which hunks to load).
175 final Map<OutputUnit, Fragment> _outputs = <OutputUnit, Fragment>{}; 179 final Map<OutputUnit, Fragment> _outputs = <OutputUnit, Fragment>{};
176 180
177 /// Mapping from [ConstantValue] to constructed [Constant]. We need this to 181 /// Mapping from [ConstantValue] to constructed [Constant]. We need this to
(...skipping 10 matching lines...) Expand all
188 Set<Class> _unneededNativeClasses; 192 Set<Class> _unneededNativeClasses;
189 193
190 /// Classes that have been allocated during a profile run. 194 /// Classes that have been allocated during a profile run.
191 /// 195 ///
192 /// These classes should not be soft-deferred. 196 /// These classes should not be soft-deferred.
193 /// 197 ///
194 /// Also contains classes that are not tracked by the profile run (like 198 /// Also contains classes that are not tracked by the profile run (like
195 /// interceptors, ...). 199 /// interceptors, ...).
196 Set<ClassElement> _notSoftDeferred; 200 Set<ClassElement> _notSoftDeferred;
197 201
198 Sorter get _sorter => _task.sorter;
199
200 Program buildProgram({bool storeFunctionTypesInMetadata: false}) { 202 Program buildProgram({bool storeFunctionTypesInMetadata: false}) {
201 collector.collect(); 203 collector.collect();
202 _initializeSoftDeferredMap(); 204 _initializeSoftDeferredMap();
203 205
204 this._storeFunctionTypesInMetadata = storeFunctionTypesInMetadata; 206 this._storeFunctionTypesInMetadata = storeFunctionTypesInMetadata;
205 // Note: In rare cases (mostly tests) output units can be empty. This 207 // Note: In rare cases (mostly tests) output units can be empty. This
206 // happens when the deferred code is dead-code eliminated but we still need 208 // happens when the deferred code is dead-code eliminated but we still need
207 // to check that the library has been loaded. 209 // to check that the library has been loaded.
208 _deferredLoadTask.allOutputUnits.forEach(_registry.registerOutputUnit); 210 _deferredLoadTask.allOutputUnits.forEach(_registry.registerOutputUnit);
209 collector.outputClassLists.forEach(_registry.registerClasses); 211 collector.outputClassLists.forEach(_registry.registerClasses);
(...skipping 983 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 Constant constant = new Constant(name, holder, constantValue); 1195 Constant constant = new Constant(name, holder, constantValue);
1194 _constants[constantValue] = constant; 1196 _constants[constantValue] = constant;
1195 } 1197 }
1196 } 1198 }
1197 1199
1198 Holder _registerStaticStateHolder() { 1200 Holder _registerStaticStateHolder() {
1199 return _registry.registerHolder(_namer.staticStateHolder, 1201 return _registry.registerHolder(_namer.staticStateHolder,
1200 isStaticStateHolder: true); 1202 isStaticStateHolder: true);
1201 } 1203 }
1202 } 1204 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698