| 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 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |