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

Side by Side Diff: lib/runtime/dart_runtime.js

Issue 949383003: use js_ast instead of strings to generate JS (Closed) Base URL: git@github.com:dart-lang/dart-dev-compiler.git@master
Patch Set: 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
« no previous file with comments | « no previous file | lib/src/codegen/js_codegen.dart » ('j') | lib/src/codegen/js_codegen.dart » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 var dart; 5 var dart;
6 (function (dart) { 6 (function (dart) {
7 var defineProperty = Object.defineProperty; 7 var defineProperty = Object.defineProperty;
8 var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; 8 var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
9 var getOwnPropertyNames = Object.getOwnPropertyNames; 9 var getOwnPropertyNames = Object.getOwnPropertyNames;
10 10
(...skipping 20 matching lines...) Expand all
31 } 31 }
32 32
33 function dload(obj, field) { 33 function dload(obj, field) {
34 if (!(field in obj)) { 34 if (!(field in obj)) {
35 throw new core.NoSuchMethodError(obj, field); 35 throw new core.NoSuchMethodError(obj, field);
36 } 36 }
37 return obj[field]; 37 return obj[field];
38 } 38 }
39 dart.dload = dload; 39 dart.dload = dload;
40 40
41 // TODO(jmesserly): this should call noSuchMethod, not throw.
41 function throwNoSuchMethod(obj, name, args, opt_func) { 42 function throwNoSuchMethod(obj, name, args, opt_func) {
42 if (obj === void 0) obj = opt_func; 43 if (obj === void 0) obj = opt_func;
43 throw new core.NoSuchMethodError(obj, name, args); 44 throw new core.NoSuchMethodError(obj, name, args);
44 } 45 }
45 46
46 function checkAndCall(f, obj, args, name) { 47 function checkAndCall(f, obj, args, name) {
47 if (!(f instanceof Function)) { 48 if (!(f instanceof Function)) {
48 // Grab the `call` method if it's not a function. 49 // Grab the `call` method if it's not a function.
49 if (f !== null) f = f.call; 50 if (f !== null) f = f.call;
50 if (!(f instanceof Function)) { 51 if (!(f instanceof Function)) {
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 } 260 }
260 return map; 261 return map;
261 } 262 }
262 263
263 function assert(condition) { 264 function assert(condition) {
264 // TODO(jmesserly): throw assertion error. 265 // TODO(jmesserly): throw assertion error.
265 if (!condition) throw 'assertion failed'; 266 if (!condition) throw 'assertion failed';
266 } 267 }
267 dart.assert = assert; 268 dart.assert = assert;
268 269
270 function throw_(obj) { throw obj; }
271 dart.throw_ = throw_;
272
269 /** 273 /**
270 * Given a class and an initializer method name, creates a constructor 274 * Given a class and an initializer method name, creates a constructor
271 * function with the same name. For example `new SomeClass.name(args)`. 275 * function with the same name. For example `new SomeClass.name(args)`.
272 */ 276 */
273 function defineNamedConstructor(clazz, name) { 277 function defineNamedConstructor(clazz, name) {
274 var proto = clazz.prototype; 278 var proto = clazz.prototype;
275 var initMethod = proto[clazz.name + '$' + name]; 279 var initMethod = proto[clazz.name + '$' + name];
276 var ctor = function() { return initMethod.apply(this, arguments); } 280 var ctor = function() { return initMethod.apply(this, arguments); }
277 ctor.prototype = proto; 281 ctor.prototype = proto;
278 clazz[name] = ctor; 282 clazz[name] = ctor;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 * we use the same trick as named constructors, and do them as instance 338 * we use the same trick as named constructors, and do them as instance
335 * methods that perform initialization. 339 * methods that perform initialization.
336 */ 340 */
337 // TODO(jmesserly): we'll need to rethink this once the ES6 spec and V8 341 // TODO(jmesserly): we'll need to rethink this once the ES6 spec and V8
338 // settles. See <https://github.com/dart-lang/dart-dev-compiler/issues/51>. 342 // settles. See <https://github.com/dart-lang/dart-dev-compiler/issues/51>.
339 // Performance of this pattern is likely to be bad. 343 // Performance of this pattern is likely to be bad.
340 dart.Object = function Object() { 344 dart.Object = function Object() {
341 // Get the class name for this instance. 345 // Get the class name for this instance.
342 var name = this.constructor.name; 346 var name = this.constructor.name;
343 // Call the default constructor. 347 // Call the default constructor.
344 var result = this[name].apply(this, arguments); 348 var init = this[name];
349 var result = void 0;
350 if (init) result = init.apply(this, arguments);
345 return result === void 0 ? this : result; 351 return result === void 0 ? this : result;
346 }; 352 };
347 // The initializer for dart.Object 353 // The initializer for dart.Object
348 dart.Object.prototype.Object = function() {}; 354 dart.Object.prototype.Object = function() {};
349 dart.Object.prototype.constructor = dart.Object; 355 dart.Object.prototype.constructor = dart.Object;
350 356
351 })(dart || (dart = {})); 357 })(dart || (dart = {}));
OLDNEW
« no previous file with comments | « no previous file | lib/src/codegen/js_codegen.dart » ('j') | lib/src/codegen/js_codegen.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698