| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |