| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |