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

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

Issue 906713002: Extract invoke-main stub generator. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebase and remove whitespace. Created 5 years, 10 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 | Annotate | Revision Log
OLDNEW
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698