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

Unified Diff: dart/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart

Issue 103863004: Revert "Generate tear-off closures dynamically." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years 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 side-by-side diff with in-line comments
Download patch
Index: dart/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart
diff --git a/dart/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart b/dart/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart
index c5c99d304f6fe786fe99a22c6002ea3583e657ae..1f5919ae49266190fa05130c2aad056bd4a976f3 100644
--- a/dart/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart
+++ b/dart/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart
@@ -353,16 +353,6 @@ class CodeEmitterTask extends CompilerTask {
js('var s = fields.split(";")'),
js('fields = s[1] == "" ? [] : s[1].split(",")'),
js('supr = s[0]'),
- js('split = supr.split(":")'),
- js.if_('split.length == 2', [
- js('supr = split[0]'),
- js('var functionSignature = split[1]'),
- js.if_('functionSignature',
- js('desc.\$signature = #',
- js.fun('s',
- js.return_(js.fun([], js.return_('init.metadata[s]'))))(
- js('functionSignature'))))
- ]),
optional(needsMixinSupport, js.if_('supr && supr.indexOf("+") > 0', [
js('s = supr.split("+")'),
@@ -1208,9 +1198,6 @@ mainBuffer.add(r'''
mainBuffer.add('(function(${namer.currentIsolate})$_{$n');
}
- // Using a named function here produces easier to read stack traces in
- // Chrome/V8.
- mainBuffer.add('function dart() {}');
for (String globalObject in Namer.reservedGlobalObjectNames) {
// The global objects start as so-called "slow objects". For V8, this
// means that it won't try to make map transitions as we add properties
@@ -1218,7 +1205,7 @@ mainBuffer.add(r'''
// fast objects by calling "convertToFastObject" (see
// [emitConvertToFastObjectFunction]).
mainBuffer
- ..write('var ${globalObject}$_=${_}new dart$N')
+ ..write('var ${globalObject}$_=$_{}$N')
..write('delete ${globalObject}.x$N');
}
@@ -1265,12 +1252,26 @@ mainBuffer.add(r'''
nativeEmitter.finishGenerateNativeClasses();
nativeEmitter.assembleCode(nativeBuffer);
+ // Might create methodClosures.
if (!deferredClasses.isEmpty) {
for (ClassElement element in deferredClasses) {
generateClass(element, getElementDecriptor(element));
}
}
+ containerBuilder.emitStaticFunctionClosures();
+
+ addComment('Method closures', mainBuffer);
+ // Now that we have emitted all classes, we know all the method
+ // closures that will be needed.
+ containerBuilder.methodClosures.forEach((String code, Element closure) {
+ // TODO(ahe): Some of these can be deferred.
+ String mangledName = namer.getNameOfClass(closure);
+ mainBuffer.add('$classesCollector.$mangledName$_=$_'
+ '[${namer.globalObjectFor(closure)},$_$code]');
+ mainBuffer.add("$N$n");
+ });
+
// After this assignment we will produce invalid JavaScript code if we use
// the classesCollector variable.
classesCollector = 'classesCollector should not be used from now on';
@@ -1291,7 +1292,7 @@ mainBuffer.add(r'''
if (classEmitter.emitFields(
library, builder, null, emitStatics: true)) {
getElementDescriptorForOutputUnit(library, "main")
- .properties.addAll(builder.toObjectInitializer().properties);
+ .properties.addAll(builder.properties);
}
}
}
@@ -1330,7 +1331,7 @@ mainBuffer.add(r'''
}
}
mainBuffer
- ..write(getReflectionDataParser(classesCollector, backend))
+ ..write(getReflectionDataParser(classesCollector, namer))
..write('([$n');
List<Element> sortedElements =
@@ -1360,6 +1361,8 @@ mainBuffer.add(r'''
classesCollector = oldClassesCollector;
}
+ containerBuilder.emitStaticFunctionGetters(mainBuffer);
+
typeTestEmitter.emitRuntimeTypeSupport(mainBuffer);
interceptorEmitter.emitGetInterceptorMethods(mainBuffer);
interceptorEmitter.emitOneShotInterceptors(mainBuffer);
@@ -1534,7 +1537,7 @@ if (typeof $printHelperName === "function") {
'$_${namer.isolateName}.prototype$N$n'
// The classesCollector object ($$).
'$classesCollector$_=$_{};$n')
- ..write(getReflectionDataParser(classesCollector, backend))
+ ..write(getReflectionDataParser(classesCollector, namer))
..write('([$n')
..addBuffer(deferredLibrariesBuffer)
..write('])$N');

Powered by Google App Engine
This is Rietveld 408576698