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

Side by Side Diff: frog/corejs.dart

Issue 9110027: Some cleanups to Frog to avoid looking up its builtin types too much (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: removed dead files Created 8 years, 11 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) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 /** 5 /**
6 * Generates JS helpers for dart:core. This used to be in a file "core.js". 6 * Generates JS helpers for dart:core. This used to be in a file "core.js".
7 * Having them in Dart code means we can easily control which are generated. 7 * Having them in Dart code means we can easily control which are generated.
8 */ 8 */
9 // TODO(jmesserly): one idea to make this cleaner: put these as private "native" 9 // TODO(jmesserly): one idea to make this cleaner: put these as private "native"
10 // methods somewhere in a library that we import. This would be rather elegant 10 // methods somewhere in a library that we import. This would be rather elegant
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 writer.writeln(_DYNAMIC_FUNCTION); 94 writer.writeln(_DYNAMIC_FUNCTION);
95 } 95 }
96 96
97 void ensureTypeNameOf() { 97 void ensureTypeNameOf() {
98 if (_generatedTypeNameOf) return; 98 if (_generatedTypeNameOf) return;
99 _generatedTypeNameOf = true; 99 _generatedTypeNameOf = true;
100 writer.writeln(_TYPE_NAME_OF_FUNCTION); 100 writer.writeln(_TYPE_NAME_OF_FUNCTION);
101 } 101 }
102 102
103 /** Generates the $inherits function when it's first used. */ 103 /** Generates the $inherits function when it's first used. */
104 ensureInheritsHelper() { 104 void ensureInheritsHelper() {
105 if (_generatedInherits) return; 105 if (_generatedInherits) return;
106 _generatedInherits = true; 106 _generatedInherits = true;
107 writer.writeln(_INHERITS_FUNCTION); 107 writer.writeln(_INHERITS_FUNCTION);
108 } 108 }
109 109
110 void generate(CodeWriter w) { 110 void generate(CodeWriter w) {
111 // Write any stuff we had queued up, then replace our writer with the one 111 // Write any stuff we had queued up, then replace our writer with the one
112 // in WorldGenerator so anything we discover that we need later on will be 112 // in WorldGenerator so anything we discover that we need later on will be
113 // generated on-demand. 113 // generated on-demand.
114 w.write(writer.text); 114 w.write(writer.text);
(...skipping 30 matching lines...) Expand all
145 } 145 }
146 if (useWrap1) { 146 if (useWrap1) {
147 w.writeln(_EMPTY_WRAP_CALL1_FUNCTION); 147 w.writeln(_EMPTY_WRAP_CALL1_FUNCTION);
148 } 148 }
149 } 149 }
150 150
151 // Write operator helpers 151 // Write operator helpers
152 for (var opImpl in orderValuesByKeys(_usedOperators)) { 152 for (var opImpl in orderValuesByKeys(_usedOperators)) {
153 w.writeln(opImpl); 153 w.writeln(opImpl);
154 } 154 }
155
156 if (world.dom != null) {
157 ensureTypeNameOf();
158 // TODO(jmesserly): we need to find a way to avoid conflicts with other
159 // generated "typeName" fields. Ideally we wouldn't be patching 'Object'
160 // here.
161 w.writeln('Object.prototype.get\$typeName = ' +
162 ' Object.prototype.\$typeNameOf;');
163 }
155 } 164 }
156 } 165 }
157 166
158 167
159 /** Snippet for `$ne`. */ 168 /** Snippet for `$ne`. */
160 final String _NE_FUNCTION = @""" 169 final String _NE_FUNCTION = @"""
161 function $ne(x, y) { 170 function $ne(x, y) {
162 if (x == null) return y != null; 171 if (x == null) return y != null;
163 return (typeof(x) == 'number' && typeof(y) == 'number') || 172 return (typeof(x) == 'number' && typeof(y) == 'number') ||
164 (typeof(x) == 'boolean' && typeof(y) == 'boolean') || 173 (typeof(x) == 'boolean' && typeof(y) == 'boolean') ||
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 for (var j = 0; j < tagNames.length; j++) { 300 for (var j = 0; j < tagNames.length; j++) {
292 map[tagNames[j]] = true; 301 map[tagNames[j]] = true;
293 } 302 }
294 table.push({tag: tag, tags: tags, map: map}); 303 table.push({tag: tag, tags: tags, map: map});
295 } 304 }
296 $dynamicMetadata = table; 305 $dynamicMetadata = table;
297 } 306 }
298 """; 307 """;
299 308
300 /** Snippet for `$typeNameOf`. */ 309 /** Snippet for `$typeNameOf`. */
301 // TODO(sigmund): find a way to make this work on all browsers, including
302 // checking the typeName on prototype objects (so we can fix dynamic
303 // dispatching on $varMethod).
304 final String _TYPE_NAME_OF_FUNCTION = @""" 310 final String _TYPE_NAME_OF_FUNCTION = @"""
305 Object.prototype.$typeNameOf = function() { 311 Object.prototype.$typeNameOf = function() {
306 if ((typeof(window) != 'undefined' && window.constructor.name == 'DOMWindow') 312 if ((typeof(window) != 'undefined' && window.constructor.name == 'DOMWindow')
307 || typeof(process) != 'undefined') { // fast-path for Chrome and Node 313 || typeof(process) != 'undefined') { // fast-path for Chrome and Node
308 return this.constructor.name; 314 return this.constructor.name;
309 } 315 }
310 var str = Object.prototype.toString.call(this); 316 var str = Object.prototype.toString.call(this);
311 str = str.substring(8, str.length - 1); 317 str = str.substring(8, str.length - 1);
312 if (str == 'Window') { 318 if (str == 'Window') {
313 str = 'DOMWindow'; 319 str = 'DOMWindow';
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 447
442 /** Snippet for `$wrap_call$1`, in case it was not necessary. */ 448 /** Snippet for `$wrap_call$1`, in case it was not necessary. */
443 final String _EMPTY_WRAP_CALL1_FUNCTION = 449 final String _EMPTY_WRAP_CALL1_FUNCTION =
444 @"function $wrap_call$1(fn) { return fn; }"; 450 @"function $wrap_call$1(fn) { return fn; }";
445 451
446 /** Snippet that initializes the isolates state. */ 452 /** Snippet that initializes the isolates state. */
447 final String _ISOLATE_INIT_CODE = @""" 453 final String _ISOLATE_INIT_CODE = @"""
448 var $globalThis = this; 454 var $globalThis = this;
449 var $globals = null; 455 var $globals = null;
450 var $globalState = null;"""; 456 var $globalState = null;""";
OLDNEW
« no previous file with comments | « client/dom/frog/dom_frog.js ('k') | frog/element.dart » ('j') | frog/member.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698