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

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

Issue 830193003: dart2js: set needsTearOff when creating the getter/setter stubs in the new emitter. (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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 case 1: return "function() { return this[#]; }"; 317 case 1: return "function() { return this[#]; }";
318 case 2: return "function(receiver) { return receiver[#]; }"; 318 case 2: return "function(receiver) { return receiver[#]; }";
319 case 3: return "function(receiver) { return this[#]; }"; 319 case 3: return "function(receiver) { return this[#]; }";
320 } 320 }
321 return null; 321 return null;
322 } 322 }
323 323
324 js.Expression fieldName = js.string(field.name); 324 js.Expression fieldName = js.string(field.name);
325 js.Expression code = js.js(getterTemplateFor(field.getterFlags), fieldName); 325 js.Expression code = js.js(getterTemplateFor(field.getterFlags), fieldName);
326 String getterName = "${namer.getterPrefix}${field.name}"; 326 String getterName = "${namer.getterPrefix}${field.name}";
327 return new StubMethod(getterName, code); 327 return new StubMethod(getterName, code, needsTearOff: false);
328 } 328 }
329 329
330 Method _generateSetter(InstanceField field) { 330 Method _generateSetter(InstanceField field) {
331 String setterTemplateFor(int flags) { 331 String setterTemplateFor(int flags) {
332 switch (flags) { 332 switch (flags) {
333 case 1: return "function(val) { return this[#] = val; }"; 333 case 1: return "function(val) { return this[#] = val; }";
334 case 2: return "function(receiver, val) { return receiver[#] = val; }"; 334 case 2: return "function(receiver, val) { return receiver[#] = val; }";
335 case 3: return "function(receiver, val) { return this[#] = val; }"; 335 case 3: return "function(receiver, val) { return this[#] = val; }";
336 } 336 }
337 return null; 337 return null;
338 } 338 }
339 js.Expression fieldName = js.string(field.name); 339 js.Expression fieldName = js.string(field.name);
340 js.Expression code = js.js(setterTemplateFor(field.setterFlags), fieldName); 340 js.Expression code = js.js(setterTemplateFor(field.setterFlags), fieldName);
341 String setterName = "${namer.setterPrefix}${field.name}"; 341 String setterName = "${namer.setterPrefix}${field.name}";
342 return new StubMethod(setterName, code); 342 return new StubMethod(setterName, code, needsTearOff: false);
343 } 343 }
344 344
345 Iterable<Method> _generateGettersSetters(Class cls) { 345 Iterable<Method> _generateGettersSetters(Class cls) {
346 Iterable<Method> getters = cls.fields 346 Iterable<Method> getters = cls.fields
347 .where((InstanceField field) => field.needsGetter) 347 .where((InstanceField field) => field.needsGetter)
348 .map(_generateGetter); 348 .map(_generateGetter);
349 349
350 Iterable<Method> setters = cls.fields 350 Iterable<Method> setters = cls.fields
351 .where((InstanceField field) => field.needsSetter) 351 .where((InstanceField field) => field.needsSetter)
352 .map(_generateSetter); 352 .map(_generateSetter);
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 572
573 var end = Date.now(); 573 var end = Date.now();
574 print('Setup: ' + (end - start) + ' ms.'); 574 print('Setup: ' + (end - start) + ' ms.');
575 575
576 #main(); // Start main. 576 #main(); // Start main.
577 577
578 }(Date.now(), #code) 578 }(Date.now(), #code)
579 }"""; 579 }""";
580 580
581 } 581 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698