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

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

Issue 2814453005: Merge CommonElements and BackendHelpers! (Closed)
Patch Set: comments and re-merge, take two Created 3 years, 8 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
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.lazy_emitter.model_emitter; 5 library dart2js.js_emitter.lazy_emitter.model_emitter;
6 6
7 import 'package:js_runtime/shared/embedded_names.dart' 7 import 'package:js_runtime/shared/embedded_names.dart'
8 show 8 show
9 CREATE_NEW_ISOLATE, 9 CREATE_NEW_ISOLATE,
10 DEFERRED_LIBRARY_URIS, 10 DEFERRED_LIBRARY_URIS,
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 'deferredInitializer': emitDeferredInitializerGlobal(program.loadMap), 203 'deferredInitializer': emitDeferredInitializerGlobal(program.loadMap),
204 'holders': emitHolders(program.holders), 204 'holders': emitHolders(program.holders),
205 'tearOff': buildTearOffCode(backend), 205 'tearOff': buildTearOffCode(backend),
206 'parseFunctionDescriptor': 206 'parseFunctionDescriptor':
207 js.js.statement(parseFunctionDescriptorBoilerplate, { 207 js.js.statement(parseFunctionDescriptorBoilerplate, {
208 'argumentCount': js.string(namer.requiredParameterField), 208 'argumentCount': js.string(namer.requiredParameterField),
209 'defaultArgumentValues': js.string(namer.defaultValuesField), 209 'defaultArgumentValues': js.string(namer.defaultValuesField),
210 'callName': js.string(namer.callNameField) 210 'callName': js.string(namer.callNameField)
211 }), 211 }),
212 'cyclicThrow': backend.emitter 212 'cyclicThrow': backend.emitter
213 .staticFunctionAccess(backend.helpers.cyclicThrowHelper), 213 .staticFunctionAccess(backend.commonElements.cyclicThrowHelper),
214 'outputContainsConstantList': program.outputContainsConstantList, 214 'outputContainsConstantList': program.outputContainsConstantList,
215 'embeddedGlobals': emitEmbeddedGlobals(program), 215 'embeddedGlobals': emitEmbeddedGlobals(program),
216 'readMetadataTypeFunction': readMetadataTypeFunction, 216 'readMetadataTypeFunction': readMetadataTypeFunction,
217 'staticNonFinals': 217 'staticNonFinals':
218 emitStaticNonFinalFields(fragment.staticNonFinalFields), 218 emitStaticNonFinalFields(fragment.staticNonFinalFields),
219 'operatorIsPrefix': js.string(namer.operatorIsPrefix), 219 'operatorIsPrefix': js.string(namer.operatorIsPrefix),
220 'callName': js.string(namer.callNameField), 220 'callName': js.string(namer.callNameField),
221 'argumentCount': js.string(namer.requiredParameterField), 221 'argumentCount': js.string(namer.requiredParameterField),
222 'defaultArgumentValues': js.string(namer.defaultValuesField), 222 'defaultArgumentValues': js.string(namer.defaultValuesField),
223 'eagerClasses': emitEagerClassInitializations(fragment.libraries), 223 'eagerClasses': emitEagerClassInitializations(fragment.libraries),
(...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 // arguments to the static: `foo(foo(499))`; 1018 // arguments to the static: `foo(foo(499))`;
1019 return holder[name].apply(this, arguments); 1019 return holder[name].apply(this, arguments);
1020 } 1020 }
1021 var method = compile(name, descriptor); 1021 var method = compile(name, descriptor);
1022 holder[name] = method; 1022 holder[name] = method;
1023 descriptor = null; // GC the descriptor. 1023 descriptor = null; // GC the descriptor.
1024 return method.apply(this, arguments); 1024 return method.apply(this, arguments);
1025 }; 1025 };
1026 } else { 1026 } else {
1027 // Parse the tear off information and generate compile handlers. 1027 // Parse the tear off information and generate compile handlers.
1028 // TODO(herhut): Share parser with instance methods. 1028 // TODO(herhut): Share parser with instance methods.
1029 function compileAllStubs(typesOffset) { 1029 function compileAllStubs(typesOffset) {
1030 var funs; 1030 var funs;
1031 var fun = compile(name, descriptor[0]); 1031 var fun = compile(name, descriptor[0]);
1032 fun[#callName] = descriptor[1]; 1032 fun[#callName] = descriptor[1];
1033 holder[name] = fun; 1033 holder[name] = fun;
1034 funs = [fun]; 1034 funs = [fun];
1035 // We iterate in blocks of 3 but have to stop before we reach the 1035 // We iterate in blocks of 3 but have to stop before we reach the
1036 // (optional) two trailing items. To accomplish this, we only iterate 1036 // (optional) two trailing items. To accomplish this, we only iterate
1037 // until we reach length - 2. 1037 // until we reach length - 2.
1038 for (var pos = 4; pos < descriptor.length - 2; pos += 3) { 1038 for (var pos = 4; pos < descriptor.length - 2; pos += 3) {
1039 var stubName = descriptor[pos]; 1039 var stubName = descriptor[pos];
1040 fun = compile(stubName, descriptor[pos + 2]); 1040 fun = compile(stubName, descriptor[pos + 2]);
1041 fun[#callName] = descriptor[pos + 1]; 1041 fun[#callName] = descriptor[pos + 1];
1042 holder[stubName] = fun; 1042 holder[stubName] = fun;
1043 funs.push(fun); 1043 funs.push(fun);
1044 } 1044 }
1045 if (descriptor[2] != null) { // tear-off name. 1045 if (descriptor[2] != null) { // tear-off name.
1046 // functions, reflectionInfo, isStatic, name, isIntercepted. 1046 // functions, reflectionInfo, isStatic, name, isIntercepted.
1047 var reflectionInfo = descriptor[3]; 1047 var reflectionInfo = descriptor[3];
1048 if (typeof reflectionInfo == "number") { 1048 if (typeof reflectionInfo == "number") {
1049 reflectionInfo = reflectionInfo + typesOffset; 1049 reflectionInfo = reflectionInfo + typesOffset;
1050 } 1050 }
1051 holder[descriptor[2]] = 1051 holder[descriptor[2]] =
1052 tearOff(funs, reflectionInfo, true, name, false); 1052 tearOff(funs, reflectionInfo, true, name, false);
1053 } 1053 }
1054 if (pos < descriptor.length) { 1054 if (pos < descriptor.length) {
1055 fun[#argumentCount] = descriptor[pos]; 1055 fun[#argumentCount] = descriptor[pos];
1056 fun[#defaultArgumentValues] = descriptor[pos + 1]; 1056 fun[#defaultArgumentValues] = descriptor[pos + 1];
1057 } 1057 }
1058 } 1058 }
1059 1059
1060 function setupCompileAllAndDelegateStub(name, typesOffset) { 1060 function setupCompileAllAndDelegateStub(name, typesOffset) {
1061 holder[name] = function() { 1061 holder[name] = function() {
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
1268 #eagerClasses; 1268 #eagerClasses;
1269 1269
1270 var end = Date.now(); 1270 var end = Date.now();
1271 // print('Setup: ' + (end - start) + ' ms.'); 1271 // print('Setup: ' + (end - start) + ' ms.');
1272 1272
1273 #invokeMain; // Start main. 1273 #invokeMain; // Start main.
1274 1274
1275 })(Date.now(), #code) 1275 })(Date.now(), #code)
1276 }"""; 1276 }""";
1277 } 1277 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698