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