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

Side by Side Diff: dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart

Issue 16135004: Rename JS_CURRENT_ISOLATE to JS_CURRENT_ISOLATE_CONTEXT. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 6 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 part of js_backend; 5 part of js_backend;
6 6
7 /** 7 /**
8 * A function element that represents a closure call. The signature is copied 8 * A function element that represents a closure call. The signature is copied
9 * from the given element. 9 * from the given element.
10 */ 10 */
(...skipping 3003 matching lines...) Expand 10 before | Expand all | Expand 10 after
3014 3014
3015 emitStaticFunctions(mainBuffer); 3015 emitStaticFunctions(mainBuffer);
3016 3016
3017 if (!libraryBuffers.isEmpty) { 3017 if (!libraryBuffers.isEmpty) {
3018 var oldClassesCollector = classesCollector; 3018 var oldClassesCollector = classesCollector;
3019 classesCollector = r"$$"; 3019 classesCollector = r"$$";
3020 if (compiler.enableMinification) { 3020 if (compiler.enableMinification) {
3021 mainBuffer.write(';'); 3021 mainBuffer.write(';');
3022 } 3022 }
3023 mainBuffer 3023 mainBuffer
3024 ..write(REFLECTION_DATA_PARSER) 3024 ..write(getReflectionDataParser())
3025 ..write('([$n'); 3025 ..write('([$n');
3026 emitDeferredPreambleWhenEmpty(deferredBuffer); 3026 emitDeferredPreambleWhenEmpty(deferredBuffer);
3027 deferredBuffer.add('\$\$$_=$_{};$n'); 3027 deferredBuffer.add('\$\$$_=$_{};$n');
3028 3028
3029 deferredBuffer 3029 deferredBuffer
3030 ..write(REFLECTION_DATA_PARSER) 3030 ..write(getReflectionDataParser())
3031 ..write('([$n'); 3031 ..write('([$n');
3032 var sortedLibraries = Elements.sortedByPosition(libraryBuffers.keys); 3032 var sortedLibraries = Elements.sortedByPosition(libraryBuffers.keys);
3033 for (LibraryElement library in sortedLibraries) { 3033 for (LibraryElement library in sortedLibraries) {
3034 List<CodeBuffer> buffers = libraryBuffers[library]; 3034 List<CodeBuffer> buffers = libraryBuffers[library];
3035 var buffer = buffers[0]; 3035 var buffer = buffers[0];
3036 var uri = library.canonicalUri; 3036 var uri = library.canonicalUri;
3037 if (uri.scheme == 'file' && compiler.sourceMapUri != null) { 3037 if (uri.scheme == 'file' && compiler.sourceMapUri != null) {
3038 // TODO(ahe): It is a hack to use compiler.sourceMapUri 3038 // TODO(ahe): It is a hack to use compiler.sourceMapUri
3039 // here. It should be relative to the main JavaScript 3039 // here. It should be relative to the main JavaScript
3040 // output file. 3040 // output file.
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
3205 bool isDeferred(Element element) { 3205 bool isDeferred(Element element) {
3206 return compiler.deferredLoadTask.isDeferred(element); 3206 return compiler.deferredLoadTask.isDeferred(element);
3207 } 3207 }
3208 3208
3209 // TODO(ahe): Remove this when deferred loading is fully implemented. 3209 // TODO(ahe): Remove this when deferred loading is fully implemented.
3210 void warnNotImplemented(Element element, String message) { 3210 void warnNotImplemented(Element element, String message) {
3211 compiler.reportMessage(compiler.spanFromSpannable(element), 3211 compiler.reportMessage(compiler.spanFromSpannable(element),
3212 MessageKind.GENERIC.error({'text': message}), 3212 MessageKind.GENERIC.error({'text': message}),
3213 api.Diagnostic.WARNING); 3213 api.Diagnostic.WARNING);
3214 } 3214 }
3215 }
3216 3215
3217 const String GENERATED_BY = """ 3216 // TODO(ahe): This code should be integrated in finishClasses.
3218 // Generated by dart2js, the Dart to JavaScript compiler. 3217 String getReflectionDataParser() {
3219 """; 3218 return '''
3220
3221 const String HOOKS_API_USAGE = """
3222 // The code supports the following hooks:
3223 // dartPrint(message) - if this function is defined it is called
3224 // instead of the Dart [print] method.
3225 // dartMainRunner(main) - if this function is defined, the Dart [main]
3226 // method will not be invoked directly.
3227 // Instead, a closure that will invoke [main] is
3228 // passed to [dartMainRunner].
3229 """;
3230
3231 // TODO(ahe): This code should be integrated in finishClasses.
3232 // TODO(ahe): The uri field below is fake.
3233 const String REFLECTION_DATA_PARSER = r'''
3234 (function (reflectionData) { 3219 (function (reflectionData) {
3235 if (!init.libraries) init.libraries = []; 3220 if (!init.libraries) init.libraries = [];
3236 var libraries = init.libraries; 3221 var libraries = init.libraries;
3237 var hasOwnProperty = Object.prototype.hasOwnProperty; 3222 var hasOwnProperty = Object.prototype.hasOwnProperty;
3238 var length = reflectionData.length; 3223 var length = reflectionData.length;
3239 for (var i = 0; i < length; i++) { 3224 for (var i = 0; i < length; i++) {
3240 var data = reflectionData[i]; 3225 var data = reflectionData[i];
3241 var name = data[0]; 3226 var name = data[0];
3242 var uri = data[1]; 3227 var uri = data[1];
3243 var descriptor = data[2]; 3228 var descriptor = data[2];
3244 var classes = []; 3229 var classes = [];
3245 var functions = []; 3230 var functions = [];
3246 for (var property in descriptor) { 3231 for (var property in descriptor) {
3247 if (!hasOwnProperty.call(descriptor, property)) continue; 3232 if (!hasOwnProperty.call(descriptor, property)) continue;
3248 var element = descriptor[property]; 3233 var element = descriptor[property];
3249 if (typeof element === "function") { 3234 if (typeof element === "function") {
3250 $[property] = element; 3235 ${namer.CURRENT_ISOLATE}[property] = element;
3251 functions.push(property); 3236 functions.push(property);
3252 } else { 3237 } else {
3253 $$[property] = element; 3238 $classesCollector[property] = element;
3254 classes.push(property); 3239 classes.push(property);
3255 classes.push(element[""]); 3240 classes.push(element[""]);
3256 } 3241 }
3257 } 3242 }
3258 libraries.push([name, uri, classes, functions]); 3243 libraries.push([name, uri, classes, functions]);
3259 } 3244 }
3260 })'''; 3245 })''';
3246 }
3247 }
3248
3249 const String GENERATED_BY = """
3250 // Generated by dart2js, the Dart to JavaScript compiler.
3251 """;
3252
3253 const String HOOKS_API_USAGE = """
3254 // The code supports the following hooks:
3255 // dartPrint(message) - if this function is defined it is called
3256 // instead of the Dart [print] method.
3257 // dartMainRunner(main) - if this function is defined, the Dart [main]
3258 // method will not be invoked directly.
3259 // Instead, a closure that will invoke [main] is
3260 // passed to [dartMainRunner].
3261 """;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698