| OLD | NEW |
| 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 'js_emitter.dart' show computeMixinClass; | 7 import 'js_emitter.dart' show computeMixinClass; |
| 8 import 'model.dart'; | 8 import 'model.dart'; |
| 9 | 9 |
| 10 import '../common.dart'; | 10 import '../common.dart'; |
| 11 import '../js/js.dart' as js; | 11 import '../js/js.dart' as js; |
| 12 | 12 |
| 13 import '../js_backend/js_backend.dart' show | 13 import '../js_backend/js_backend.dart' show |
| 14 Namer, | 14 Namer, |
| 15 JavaScriptBackend, | 15 JavaScriptBackend, |
| 16 JavaScriptConstantCompiler; | 16 JavaScriptConstantCompiler; |
| 17 | 17 |
| 18 import 'js_emitter.dart' show | 18 import 'js_emitter.dart' show |
| 19 ClassStubGenerator, | 19 ClassStubGenerator, |
| 20 CodeEmitterTask, | 20 CodeEmitterTask, |
| 21 InterceptorStubGenerator, | 21 InterceptorStubGenerator, |
| 22 MainCallStubGenerator, | |
| 23 ParameterStubGenerator, | 22 ParameterStubGenerator, |
| 24 TypeTestGenerator, | 23 TypeTestGenerator, |
| 25 TypeTestProperties; | 24 TypeTestProperties; |
| 26 | 25 |
| 27 import '../universe/universe.dart' show Universe; | 26 import '../universe/universe.dart' show Universe; |
| 28 import '../deferred_load.dart' show DeferredLoadTask, OutputUnit; | 27 import '../deferred_load.dart' show DeferredLoadTask, OutputUnit; |
| 29 | 28 |
| 30 part 'registry.dart'; | 29 part 'registry.dart'; |
| 31 | 30 |
| 32 class ProgramBuilder { | 31 class ProgramBuilder { |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 InterceptorStubGenerator stubGenerator = | 145 InterceptorStubGenerator stubGenerator = |
| 147 new InterceptorStubGenerator(_compiler, namer, backend); | 146 new InterceptorStubGenerator(_compiler, namer, backend); |
| 148 return stubGenerator.generateTypeToInterceptorMap(); | 147 return stubGenerator.generateTypeToInterceptorMap(); |
| 149 } | 148 } |
| 150 | 149 |
| 151 MainFragment _buildMainOutput(LibrariesMap librariesMap) { | 150 MainFragment _buildMainOutput(LibrariesMap librariesMap) { |
| 152 // Construct the main output from the libraries and the registered holders. | 151 // Construct the main output from the libraries and the registered holders. |
| 153 MainFragment result = new MainFragment( | 152 MainFragment result = new MainFragment( |
| 154 librariesMap.outputUnit, | 153 librariesMap.outputUnit, |
| 155 "", // The empty string is the name for the main output file. | 154 "", // The empty string is the name for the main output file. |
| 156 _buildInvokeMain(), | 155 backend.emitter.staticFunctionAccess(_compiler.mainFunction), |
| 157 _buildLibraries(librariesMap), | 156 _buildLibraries(librariesMap), |
| 158 _buildStaticNonFinalFields(librariesMap), | 157 _buildStaticNonFinalFields(librariesMap), |
| 159 _buildStaticLazilyInitializedFields(librariesMap), | 158 _buildStaticLazilyInitializedFields(librariesMap), |
| 160 _buildConstants(librariesMap), | 159 _buildConstants(librariesMap), |
| 161 _registry.holders.toList(growable: false)); | 160 _registry.holders.toList(growable: false)); |
| 162 _outputs[librariesMap.outputUnit] = result; | 161 _outputs[librariesMap.outputUnit] = result; |
| 163 return result; | 162 return result; |
| 164 } | 163 } |
| 165 | 164 |
| 166 js.Statement _buildInvokeMain() { | |
| 167 MainCallStubGenerator generator = | |
| 168 new MainCallStubGenerator(_compiler, backend, backend.emitter); | |
| 169 return generator.generateInvokeMain(); | |
| 170 } | |
| 171 | |
| 172 DeferredFragment _buildDeferredOutput(MainFragment mainOutput, | 165 DeferredFragment _buildDeferredOutput(MainFragment mainOutput, |
| 173 LibrariesMap librariesMap) { | 166 LibrariesMap librariesMap) { |
| 174 DeferredFragment result = new DeferredFragment( | 167 DeferredFragment result = new DeferredFragment( |
| 175 librariesMap.outputUnit, | 168 librariesMap.outputUnit, |
| 176 backend.deferredPartFileName(librariesMap.name, addExtension: false), | 169 backend.deferredPartFileName(librariesMap.name, addExtension: false), |
| 177 librariesMap.name, | 170 librariesMap.name, |
| 178 mainOutput, | 171 mainOutput, |
| 179 _buildLibraries(librariesMap), | 172 _buildLibraries(librariesMap), |
| 180 _buildStaticNonFinalFields(librariesMap), | 173 _buildStaticNonFinalFields(librariesMap), |
| 181 _buildStaticLazilyInitializedFields(librariesMap), | 174 _buildStaticLazilyInitializedFields(librariesMap), |
| (...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 652 _registry.registerConstant(outputUnit, constantValue); | 645 _registry.registerConstant(outputUnit, constantValue); |
| 653 assert(!_constants.containsKey(constantValue)); | 646 assert(!_constants.containsKey(constantValue)); |
| 654 String name = namer.constantName(constantValue); | 647 String name = namer.constantName(constantValue); |
| 655 String constantObject = namer.globalObjectForConstant(constantValue); | 648 String constantObject = namer.globalObjectForConstant(constantValue); |
| 656 Holder holder = _registry.registerHolder(constantObject); | 649 Holder holder = _registry.registerHolder(constantObject); |
| 657 Constant constant = new Constant(name, holder, constantValue); | 650 Constant constant = new Constant(name, holder, constantValue); |
| 658 _constants[constantValue] = constant; | 651 _constants[constantValue] = constant; |
| 659 } | 652 } |
| 660 } | 653 } |
| 661 } | 654 } |
| OLD | NEW |