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: pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart

Issue 840553002: dart2js: Add elements to the emitter's model. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 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) 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.new_js_emitter.model_emitter; 5 library dart2js.new_js_emitter.model_emitter;
6 6
7 import '../../dart2jslib.dart' show Compiler; 7 import '../../dart2jslib.dart' show Compiler;
8 import '../../js/js.dart' as js; 8 import '../../js/js.dart' as js;
9 import '../../js_backend/js_backend.dart' show 9 import '../../js_backend/js_backend.dart' show
10 JavaScriptBackend, 10 JavaScriptBackend,
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 case 1: return "function() { return this[#]; }"; 294 case 1: return "function() { return this[#]; }";
295 case 2: return "function(receiver) { return receiver[#]; }"; 295 case 2: return "function(receiver) { return receiver[#]; }";
296 case 3: return "function(receiver) { return this[#]; }"; 296 case 3: return "function(receiver) { return this[#]; }";
297 } 297 }
298 return null; 298 return null;
299 } 299 }
300 300
301 js.Expression fieldName = js.string(field.name); 301 js.Expression fieldName = js.string(field.name);
302 js.Expression code = js.js(getterTemplateFor(field.getterFlags), fieldName); 302 js.Expression code = js.js(getterTemplateFor(field.getterFlags), fieldName);
303 String getterName = "${namer.getterPrefix}${field.name}"; 303 String getterName = "${namer.getterPrefix}${field.name}";
304 return new Method(getterName, code); 304 return new StubMethod(getterName, code);
305 } 305 }
306 306
307 Method _generateSetter(InstanceField field) { 307 Method _generateSetter(InstanceField field) {
308 String setterTemplateFor(int flags) { 308 String setterTemplateFor(int flags) {
309 switch (flags) { 309 switch (flags) {
310 case 1: return "function(val) { return this[#] = val; }"; 310 case 1: return "function(val) { return this[#] = val; }";
311 case 2: return "function(receiver, val) { return receiver[#] = val; }"; 311 case 2: return "function(receiver, val) { return receiver[#] = val; }";
312 case 3: return "function(receiver, val) { return this[#] = val; }"; 312 case 3: return "function(receiver, val) { return this[#] = val; }";
313 } 313 }
314 return null; 314 return null;
315 } 315 }
316 js.Expression fieldName = js.string(field.name); 316 js.Expression fieldName = js.string(field.name);
317 js.Expression code = js.js(setterTemplateFor(field.setterFlags), fieldName); 317 js.Expression code = js.js(setterTemplateFor(field.setterFlags), fieldName);
318 String setterName = "${namer.setterPrefix}${field.name}"; 318 String setterName = "${namer.setterPrefix}${field.name}";
319 return new Method(setterName, code); 319 return new StubMethod(setterName, code);
320 } 320 }
321 321
322 Iterable<Method> _generateGettersSetters(Class cls) { 322 Iterable<Method> _generateGettersSetters(Class cls) {
323 Iterable<Method> getters = cls.fields 323 Iterable<Method> getters = cls.fields
324 .where((InstanceField field) => field.needsGetter) 324 .where((InstanceField field) => field.needsGetter)
325 .map(_generateGetter); 325 .map(_generateGetter);
326 326
327 Iterable<Method> setters = cls.fields 327 Iterable<Method> setters = cls.fields
328 .where((InstanceField field) => field.needsSetter) 328 .where((InstanceField field) => field.needsSetter)
329 .map(_generateSetter); 329 .map(_generateSetter);
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 546
547 var end = Date.now(); 547 var end = Date.now();
548 print('Setup: ' + (end - start) + ' ms.'); 548 print('Setup: ' + (end - start) + ' ms.');
549 549
550 #main(); // Start main. 550 #main(); // Start main.
551 551
552 }(Date.now(), #code) 552 }(Date.now(), #code)
553 }"""; 553 }""";
554 554
555 } 555 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/model.dart ('k') | pkg/compiler/lib/src/js_emitter/program_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698