| 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 '../../constants/values.dart' show ConstantValue, FunctionConstantValue; | 7 import '../../constants/values.dart' show ConstantValue, FunctionConstantValue; |
| 8 import '../../dart2jslib.dart' show Compiler; | 8 import '../../dart2jslib.dart' show Compiler; |
| 9 import '../../elements/elements.dart' show ClassElement, FunctionElement; | 9 import '../../elements/elements.dart' show ClassElement, FunctionElement; |
| 10 import '../../js/js.dart' as js; | 10 import '../../js/js.dart' as js; |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 if (isConstantInlinedOrAlreadyEmitted(value)) { | 121 if (isConstantInlinedOrAlreadyEmitted(value)) { |
| 122 return constantEmitter.generate(value); | 122 return constantEmitter.generate(value); |
| 123 } | 123 } |
| 124 return js.js('#.#', [namer.globalObjectForConstant(value), | 124 return js.js('#.#', [namer.globalObjectForConstant(value), |
| 125 namer.constantName(value)]); | 125 namer.constantName(value)]); |
| 126 } | 126 } |
| 127 | 127 |
| 128 int emitProgram(Program program) { | 128 int emitProgram(Program program) { |
| 129 List<Fragment> fragments = program.fragments; | 129 List<Fragment> fragments = program.fragments; |
| 130 MainFragment mainFragment = fragments.first; | 130 MainFragment mainFragment = fragments.first; |
| 131 Iterable<Fragment> deferredFragments = program.deferredFragments; |
| 131 | 132 |
| 132 int totalSize = 0; | 133 int totalSize = 0; |
| 133 | 134 |
| 134 FragmentEmitter fragmentEmitter = | 135 FragmentEmitter fragmentEmitter = |
| 135 new FragmentEmitter(compiler, namer, backend, constantEmitter, this); | 136 new FragmentEmitter(compiler, namer, backend, constantEmitter, this); |
| 136 | 137 |
| 137 // We have to emit the deferred fragments first, since we need their | 138 // We have to emit the deferred fragments first, since we need their |
| 138 // deferred hash (which depends on the output) when emitting the main | 139 // deferred hash (which depends on the output) when emitting the main |
| 139 // fragment. | 140 // fragment. |
| 140 List<js.Expression> fragmentsCode = fragments.skip(1).map( | 141 List<js.Expression> fragmentsCode = deferredFragments.map( |
| 141 (DeferredFragment deferredFragment) { | 142 (DeferredFragment deferredFragment) { |
| 142 js.Expression types = | 143 js.Expression types = |
| 143 program.metadataTypesForOutputUnit(deferredFragment.outputUnit); | 144 program.metadataTypesForOutputUnit(deferredFragment.outputUnit); |
| 144 return fragmentEmitter.emitDeferredFragment( | 145 return fragmentEmitter.emitDeferredFragment( |
| 145 deferredFragment, types, program.holders); | 146 deferredFragment, types, program.holders); |
| 146 }).toList(); | 147 }).toList(); |
| 147 | 148 |
| 148 js.Statement mainAst = fragmentEmitter.emitMainFragment(program); | 149 js.Statement mainAst = fragmentEmitter.emitMainFragment(program); |
| 149 | 150 |
| 150 js.TokenCounter counter = new js.TokenCounter(); | 151 js.TokenCounter counter = new js.TokenCounter(); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 171 return totalSize; | 172 return totalSize; |
| 172 } | 173 } |
| 173 | 174 |
| 174 String buildGeneratedBy(compiler) { | 175 String buildGeneratedBy(compiler) { |
| 175 var suffix = ''; | 176 var suffix = ''; |
| 176 if (compiler.hasBuildId) suffix = ' version: ${compiler.buildId}'; | 177 if (compiler.hasBuildId) suffix = ' version: ${compiler.buildId}'; |
| 177 return '// Generated by dart2js (fast startup), ' | 178 return '// Generated by dart2js (fast startup), ' |
| 178 'the Dart to JavaScript compiler$suffix.\n'; | 179 'the Dart to JavaScript compiler$suffix.\n'; |
| 179 } | 180 } |
| 180 } | 181 } |
| OLD | NEW |