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

Side by Side Diff: pkg/compiler/lib/src/js_backend/minify_namer.dart

Issue 2968383002: Add ConstructorBodyEntity (Closed)
Patch Set: Created 3 years, 5 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
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 part of js_backend.namer; 5 part of js_backend.namer;
6 6
7 /** 7 /**
8 * Assigns JavaScript identifiers to Dart variables, class-names and members. 8 * Assigns JavaScript identifiers to Dart variables, class-names and members.
9 */ 9 */
10 class MinifyNamer extends Namer 10 class MinifyNamer extends Namer
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 } else if (cls.isMixinApplication) { 343 } else if (cls.isMixinApplication) {
344 return new _ConstructorBodyNamingScope.forMixinApplication( 344 return new _ConstructorBodyNamingScope.forMixinApplication(
345 cls, new _ConstructorBodyNamingScope(cls.superclass, registry)); 345 cls, new _ConstructorBodyNamingScope(cls.superclass, registry));
346 } else { 346 } else {
347 return new _ConstructorBodyNamingScope.forClass( 347 return new _ConstructorBodyNamingScope.forClass(
348 cls, new _ConstructorBodyNamingScope(cls.superclass, registry)); 348 cls, new _ConstructorBodyNamingScope(cls.superclass, registry));
349 } 349 }
350 }); 350 });
351 } 351 }
352 352
353 String constructorBodyKeyFor(ConstructorBodyElement body) { 353 String constructorBodyKeyFor(ConstructorBodyEntity body) {
354 int position = _constructors.indexOf(body.constructor); 354 int position = _constructors.indexOf(body.constructor);
355 assert(position >= 0, failedAt(body, "constructor body missing")); 355 assert(position >= 0, failedAt(body, "constructor body missing"));
356 return "@constructorBody@${_startIndex + position}"; 356 return "@constructorBody@${_startIndex + position}";
357 } 357 }
358 } 358 }
359 359
360 abstract class _MinifyConstructorBodyNamer implements Namer { 360 abstract class _MinifyConstructorBodyNamer implements Namer {
361 Map<ClassElement, _ConstructorBodyNamingScope> _constructorBodyScopes = 361 Map<ClassElement, _ConstructorBodyNamingScope> _constructorBodyScopes =
362 new Map<ClassElement, _ConstructorBodyNamingScope>(); 362 new Map<ClassElement, _ConstructorBodyNamingScope>();
363 363
364 @override 364 @override
365 jsAst.Name constructorBodyName(FunctionElement method) { 365 jsAst.Name constructorBodyName(ConstructorBodyEntity method) {
366 _ConstructorBodyNamingScope scope = new _ConstructorBodyNamingScope( 366 _ConstructorBodyNamingScope scope = new _ConstructorBodyNamingScope(
367 method.enclosingClass, _constructorBodyScopes); 367 method.enclosingClass, _constructorBodyScopes);
368 String key = scope.constructorBodyKeyFor(method); 368 String key = scope.constructorBodyKeyFor(method);
369 return _disambiguateMemberByKey( 369 return _disambiguateMemberByKey(
370 key, () => _proposeNameForConstructorBody(method)); 370 key, () => _proposeNameForConstructorBody(method));
371 } 371 }
372 } 372 }
373 373
374 abstract class _MinifiedOneShotInterceptorNamer implements Namer { 374 abstract class _MinifiedOneShotInterceptorNamer implements Namer {
375 /// Property name used for the one-shot interceptor method for the given 375 /// Property name used for the one-shot interceptor method for the given
376 /// [selector] and return-type specialization. 376 /// [selector] and return-type specialization.
377 @override 377 @override
378 jsAst.Name nameForGetOneShotInterceptor( 378 jsAst.Name nameForGetOneShotInterceptor(
379 Selector selector, Iterable<ClassEntity> classes) { 379 Selector selector, Iterable<ClassEntity> classes) {
380 String root = selector.isOperator 380 String root = selector.isOperator
381 ? operatorNameToIdentifier(selector.name) 381 ? operatorNameToIdentifier(selector.name)
382 : privateName(selector.memberName); 382 : privateName(selector.memberName);
383 String prefix = 383 String prefix =
384 selector.isGetter ? r"$get" : selector.isSetter ? r"$set" : ""; 384 selector.isGetter ? r"$get" : selector.isSetter ? r"$set" : "";
385 String callSuffix = selector.isCall 385 String callSuffix = selector.isCall
386 ? callSuffixForStructure(selector.callStructure).join() 386 ? callSuffixForStructure(selector.callStructure).join()
387 : ""; 387 : "";
388 String suffix = suffixForGetInterceptor(classes); 388 String suffix = suffixForGetInterceptor(classes);
389 String fullName = "\$intercepted$prefix\$$root$callSuffix\$$suffix"; 389 String fullName = "\$intercepted$prefix\$$root$callSuffix\$$suffix";
390 return _disambiguateInternalGlobal(fullName); 390 return _disambiguateInternalGlobal(fullName);
391 } 391 }
392 } 392 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698