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

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

Issue 2875313002: Access BackendUsage through ClosedWorld (Closed)
Patch Set: Created 3 years, 7 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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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.startup_emitter.model_emitter; 5 library dart2js.js_emitter.startup_emitter.model_emitter;
6 6
7 import 'dart:convert' show JsonEncoder; 7 import 'dart:convert' show JsonEncoder;
8 import 'dart:math' show Random; 8 import 'dart:math' show Random;
9 9
10 import 'package:js_runtime/shared/embedded_names.dart' 10 import 'package:js_runtime/shared/embedded_names.dart'
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 compiler.backend.rtiNeed, 86 compiler.backend.rtiNeed,
87 compiler.backend.rtiEncoder, 87 compiler.backend.rtiEncoder,
88 namer, 88 namer,
89 task, 89 task,
90 this.generateConstantReference, 90 this.generateConstantReference,
91 constantListGenerator); 91 constantListGenerator);
92 } 92 }
93 93
94 DiagnosticReporter get reporter => compiler.reporter; 94 DiagnosticReporter get reporter => compiler.reporter;
95 95
96 InterceptorData get _interceptorData => _closedWorld.interceptorData;
97
98 js.Expression constantListGenerator(js.Expression array) { 96 js.Expression constantListGenerator(js.Expression array) {
99 // TODO(floitsch): remove hard-coded name. 97 // TODO(floitsch): remove hard-coded name.
100 return js.js('makeConstList(#)', [array]); 98 return js.js('makeConstList(#)', [array]);
101 } 99 }
102 100
103 js.Expression generateEmbeddedGlobalAccess(String global) { 101 js.Expression generateEmbeddedGlobalAccess(String global) {
104 return js.js(generateEmbeddedGlobalAccessString(global)); 102 return js.js(generateEmbeddedGlobalAccessString(global));
105 } 103 }
106 104
107 String generateEmbeddedGlobalAccessString(String global) { 105 String generateEmbeddedGlobalAccessString(String global) {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 return js.js('#.#', 156 return js.js('#.#',
159 [namer.globalObjectForConstant(value), namer.constantName(value)]); 157 [namer.globalObjectForConstant(value), namer.constantName(value)]);
160 } 158 }
161 159
162 int emitProgram(Program program) { 160 int emitProgram(Program program) {
163 MainFragment mainFragment = program.fragments.first; 161 MainFragment mainFragment = program.fragments.first;
164 List<DeferredFragment> deferredFragments = 162 List<DeferredFragment> deferredFragments =
165 new List<DeferredFragment>.from(program.deferredFragments); 163 new List<DeferredFragment>.from(program.deferredFragments);
166 164
167 FragmentEmitter fragmentEmitter = new FragmentEmitter( 165 FragmentEmitter fragmentEmitter = new FragmentEmitter(
168 compiler, namer, backend, constantEmitter, this, _interceptorData); 166 compiler, namer, backend, constantEmitter, this, _closedWorld);
169 167
170 Map<DeferredFragment, _DeferredFragmentHash> deferredHashTokens = 168 Map<DeferredFragment, _DeferredFragmentHash> deferredHashTokens =
171 new Map<DeferredFragment, _DeferredFragmentHash>(); 169 new Map<DeferredFragment, _DeferredFragmentHash>();
172 for (DeferredFragment fragment in deferredFragments) { 170 for (DeferredFragment fragment in deferredFragments) {
173 deferredHashTokens[fragment] = new _DeferredFragmentHash(fragment); 171 deferredHashTokens[fragment] = new _DeferredFragmentHash(fragment);
174 } 172 }
175 173
176 js.Statement mainCode = 174 js.Statement mainCode =
177 fragmentEmitter.emitMainFragment(program, deferredHashTokens); 175 fragmentEmitter.emitMainFragment(program, deferredHashTokens);
178 176
(...skipping 21 matching lines...) Expand all
200 deferredHashTokens 198 deferredHashTokens
201 .forEach((DeferredFragment key, _DeferredFragmentHash token) { 199 .forEach((DeferredFragment key, _DeferredFragmentHash token) {
202 token.setHash(hunkHashes[key]); 200 token.setHash(hunkHashes[key]);
203 }); 201 });
204 202
205 writeMainFragment(mainFragment, mainCode, 203 writeMainFragment(mainFragment, mainCode,
206 isSplit: program.deferredFragments.isNotEmpty || 204 isSplit: program.deferredFragments.isNotEmpty ||
207 program.hasSoftDeferredClasses || 205 program.hasSoftDeferredClasses ||
208 compiler.options.experimentalTrackAllocations); 206 compiler.options.experimentalTrackAllocations);
209 207
210 if (backend.backendUsage.requiresPreamble && !backend.htmlLibraryIsLoaded) { 208 if (_closedWorld.backendUsage.requiresPreamble &&
209 !backend.htmlLibraryIsLoaded) {
211 reporter.reportHintMessage(NO_LOCATION_SPANNABLE, MessageKind.PREAMBLE); 210 reporter.reportHintMessage(NO_LOCATION_SPANNABLE, MessageKind.PREAMBLE);
212 } 211 }
213 212
214 if (compiler.options.deferredMapUri != null) { 213 if (compiler.options.deferredMapUri != null) {
215 writeDeferredMap(); 214 writeDeferredMap();
216 } 215 }
217 216
218 // Return the total program size. 217 // Return the total program size.
219 return outputBuffers.values.fold(0, (a, b) => a + b.length); 218 return outputBuffers.values.fold(0, (a, b) => a + b.length);
220 } 219 }
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 // data. 391 // data.
393 mapping["_comment"] = "This mapping shows which compiled `.js` files are " 392 mapping["_comment"] = "This mapping shows which compiled `.js` files are "
394 "needed for a given deferred library import."; 393 "needed for a given deferred library import.";
395 mapping.addAll(compiler.deferredLoadTask.computeDeferredMap()); 394 mapping.addAll(compiler.deferredLoadTask.computeDeferredMap());
396 compiler.outputProvider( 395 compiler.outputProvider(
397 compiler.options.deferredMapUri.path, '', OutputType.info) 396 compiler.options.deferredMapUri.path, '', OutputType.info)
398 ..add(const JsonEncoder.withIndent(" ").convert(mapping)) 397 ..add(const JsonEncoder.withIndent(" ").convert(mapping))
399 ..close(); 398 ..close();
400 } 399 }
401 } 400 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698