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

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

Issue 923463002: dart2js: add special getter to Closure class in new emitter. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed comment. 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
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart ('k') | 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.js_emitter.program_builder; 5 library dart2js.js_emitter.program_builder;
6 6
7 import 'js_emitter.dart' show computeMixinClass; 7 import 'js_emitter.dart' show computeMixinClass;
8 import 'model.dart'; 8 import 'model.dart';
9 9
10 import '../common.dart'; 10 import '../common.dart';
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 if (element == _compiler.objectClass) { 346 if (element == _compiler.objectClass) {
347 Map<String, Selector> selectors = 347 Map<String, Selector> selectors =
348 classStubGenerator.computeSelectorsForNsmHandlers(); 348 classStubGenerator.computeSelectorsForNsmHandlers();
349 selectors.forEach((String name, Selector selector) { 349 selectors.forEach((String name, Selector selector) {
350 noSuchMethodStubs 350 noSuchMethodStubs
351 .add(classStubGenerator.generateStubForNoSuchMethod(name, 351 .add(classStubGenerator.generateStubForNoSuchMethod(name,
352 selector)); 352 selector));
353 }); 353 });
354 } 354 }
355 355
356 if (element == backend.closureClass) {
357 // We add a special getter here to allow for tearing off a closure from
358 // itself.
359 String name = namer.getterNameFromAccessorName(
360 namer.getMappedInstanceName(Compiler.CALL_OPERATOR_NAME));
361 js.Fun function = js.js('function() { return this; }');
362 callStubs.add(_buildStubMethod(name, function));
363 }
364
356 ClassElement implementation = element.implementation; 365 ClassElement implementation = element.implementation;
357 366
358 // MixinApplications run through the members of their mixin. Here, we are 367 // MixinApplications run through the members of their mixin. Here, we are
359 // only interested in direct members. 368 // only interested in direct members.
360 if (!onlyForRti && !element.isMixinApplication) { 369 if (!onlyForRti && !element.isMixinApplication) {
361 implementation.forEachMember(visitMember, includeBackendMembers: true); 370 implementation.forEachMember(visitMember, includeBackendMembers: true);
362 } 371 }
363 372
364 List<Field> instanceFields = 373 List<Field> instanceFields =
365 onlyForRti ? const <Field>[] : _buildFields(element, false); 374 onlyForRti ? const <Field>[] : _buildFields(element, false);
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 _registry.registerConstant(outputUnit, constantValue); 667 _registry.registerConstant(outputUnit, constantValue);
659 assert(!_constants.containsKey(constantValue)); 668 assert(!_constants.containsKey(constantValue));
660 String name = namer.constantName(constantValue); 669 String name = namer.constantName(constantValue);
661 String constantObject = namer.globalObjectForConstant(constantValue); 670 String constantObject = namer.globalObjectForConstant(constantValue);
662 Holder holder = _registry.registerHolder(constantObject); 671 Holder holder = _registry.registerHolder(constantObject);
663 Constant constant = new Constant(name, holder, constantValue); 672 Constant constant = new Constant(name, holder, constantValue);
664 _constants[constantValue] = constant; 673 _constants[constantValue] = constant;
665 } 674 }
666 } 675 }
667 } 676 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698