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

Side by Side Diff: pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart

Issue 882713008: Move computation of method flags into model. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: use unused api 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 | 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 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 case 1: return "function() { return this[#]; }"; 308 case 1: return "function() { return this[#]; }";
309 case 2: return "function(receiver) { return receiver[#]; }"; 309 case 2: return "function(receiver) { return receiver[#]; }";
310 case 3: return "function(receiver) { return this[#]; }"; 310 case 3: return "function(receiver) { return this[#]; }";
311 } 311 }
312 return null; 312 return null;
313 } 313 }
314 314
315 js.Expression fieldName = js.string(field.name); 315 js.Expression fieldName = js.string(field.name);
316 js.Expression code = js.js(getterTemplateFor(field.getterFlags), fieldName); 316 js.Expression code = js.js(getterTemplateFor(field.getterFlags), fieldName);
317 String getterName = "${namer.getterPrefix}${field.name}"; 317 String getterName = "${namer.getterPrefix}${field.name}";
318 return new StubMethod(getterName, code, needsTearOff: false); 318 return new StubMethod(getterName, code);
319 } 319 }
320 320
321 Method _generateSetter(Field field) { 321 Method _generateSetter(Field field) {
322 String setterTemplateFor(int flags) { 322 String setterTemplateFor(int flags) {
323 switch (flags) { 323 switch (flags) {
324 case 1: return "function(val) { return this[#] = val; }"; 324 case 1: return "function(val) { return this[#] = val; }";
325 case 2: return "function(receiver, val) { return receiver[#] = val; }"; 325 case 2: return "function(receiver, val) { return receiver[#] = val; }";
326 case 3: return "function(receiver, val) { return this[#] = val; }"; 326 case 3: return "function(receiver, val) { return this[#] = val; }";
327 } 327 }
328 return null; 328 return null;
329 } 329 }
330 js.Expression fieldName = js.string(field.name); 330 js.Expression fieldName = js.string(field.name);
331 js.Expression code = js.js(setterTemplateFor(field.setterFlags), fieldName); 331 js.Expression code = js.js(setterTemplateFor(field.setterFlags), fieldName);
332 String setterName = "${namer.setterPrefix}${field.name}"; 332 String setterName = "${namer.setterPrefix}${field.name}";
333 return new StubMethod(setterName, code, needsTearOff: false); 333 return new StubMethod(setterName, code);
334 } 334 }
335 335
336 Iterable<Method> _generateGettersSetters(Class cls) { 336 Iterable<Method> _generateGettersSetters(Class cls) {
337 Iterable<Method> getters = cls.fields 337 Iterable<Method> getters = cls.fields
338 .where((Field field) => field.needsGetter) 338 .where((Field field) => field.needsGetter)
339 .map(_generateGetter); 339 .map(_generateGetter);
340 340
341 Iterable<Method> setters = cls.fields 341 Iterable<Method> setters = cls.fields
342 .where((Field field) => field.needsUncheckedSetter) 342 .where((Field field) => field.needsUncheckedSetter)
343 .map(_generateSetter); 343 .map(_generateSetter);
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 565
566 var end = Date.now(); 566 var end = Date.now();
567 print('Setup: ' + (end - start) + ' ms.'); 567 print('Setup: ' + (end - start) + ' ms.');
568 568
569 #main(); // Start main. 569 #main(); // Start main.
570 570
571 }(Date.now(), #code) 571 }(Date.now(), #code)
572 }"""; 572 }""";
573 573
574 } 574 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/model.dart ('k') | pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698