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

Side by Side Diff: pkg/compiler/lib/src/dump_info.dart

Issue 2314703002: Split World usage into open, inference, and closed world. (Closed)
Patch Set: Updated cf. comments. Created 4 years, 3 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 dump_info; 5 library dump_info;
6 6
7 import 'dart:convert' 7 import 'dart:convert'
8 show ChunkedConversionSink, JsonEncoder, StringConversionSink; 8 show ChunkedConversionSink, JsonEncoder, StringConversionSink;
9 9
10 import 'package:dart2js_info/info.dart'; 10 import 'package:dart2js_info/info.dart';
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 parameter.name, 259 parameter.name,
260 '${compiler.globalInference.getGuaranteedTypeOfElement(parameter)}', 260 '${compiler.globalInference.getGuaranteedTypeOfElement(parameter)}',
261 '${parameter.node.type}')); 261 '${parameter.node.type}'));
262 }); 262 });
263 } 263 }
264 264
265 String returnType = null; 265 String returnType = null;
266 // TODO(sigmund): why all these checks? 266 // TODO(sigmund): why all these checks?
267 if (element.isInstanceMember && 267 if (element.isInstanceMember &&
268 !element.isAbstract && 268 !element.isAbstract &&
269 compiler.world.allFunctions.contains(element)) { 269 compiler.closedWorld.allFunctions.contains(element)) {
270 returnType = '${element.type.returnType}'; 270 returnType = '${element.type.returnType}';
271 } 271 }
272 String inferredReturnType = 272 String inferredReturnType =
273 '${compiler.globalInference.getGuaranteedReturnTypeOfElement(element)}'; 273 '${compiler.globalInference.getGuaranteedReturnTypeOfElement(element)}';
274 String sideEffects = '${compiler.world.getSideEffectsOfElement(element)}'; 274 String sideEffects =
275 '${compiler.closedWorld.getSideEffectsOfElement(element)}';
275 276
276 int inlinedCount = compiler.dumpInfoTask.inlineCount[element]; 277 int inlinedCount = compiler.dumpInfoTask.inlineCount[element];
277 if (inlinedCount == null) inlinedCount = 0; 278 if (inlinedCount == null) inlinedCount = 0;
278 279
279 FunctionInfo info = new FunctionInfo( 280 FunctionInfo info = new FunctionInfo(
280 name: name, 281 name: name,
281 functionKind: kind, 282 functionKind: kind,
282 // We use element.hashCode because it is globally unique and it is 283 // We use element.hashCode because it is globally unique and it is
283 // available while we are doing codegen. 284 // available while we are doing codegen.
284 coverageId: '${element.hashCode}', 285 coverageId: '${element.hashCode}',
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 */ 432 */
432 Iterable<Selection> getRetaining(Element element) { 433 Iterable<Selection> getRetaining(Element element) {
433 WorldImpact impact = impacts[element]; 434 WorldImpact impact = impacts[element];
434 if (impact == null) return const <Selection>[]; 435 if (impact == null) return const <Selection>[];
435 436
436 var selections = <Selection>[]; 437 var selections = <Selection>[];
437 compiler.impactStrategy.visitImpact( 438 compiler.impactStrategy.visitImpact(
438 element, 439 element,
439 impact, 440 impact,
440 new WorldImpactVisitorImpl(visitDynamicUse: (dynamicUse) { 441 new WorldImpactVisitorImpl(visitDynamicUse: (dynamicUse) {
441 selections.addAll(compiler.world.allFunctions 442 selections.addAll(compiler.closedWorld.allFunctions
442 .filter(dynamicUse.selector, dynamicUse.mask) 443 .filter(dynamicUse.selector, dynamicUse.mask)
443 .map((e) => new Selection(e, dynamicUse.mask))); 444 .map((e) => new Selection(e, dynamicUse.mask)));
444 }, visitStaticUse: (staticUse) { 445 }, visitStaticUse: (staticUse) {
445 selections.add(new Selection(staticUse.element, null)); 446 selections.add(new Selection(staticUse.element, null));
446 }), 447 }),
447 IMPACT_USE); 448 IMPACT_USE);
448 return selections; 449 return selections;
449 } 450 }
450 451
451 // Returns true if we care about tracking the size of 452 // Returns true if we care about tracking the size of
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 587
587 ChunkedConversionSink<Object> sink = encoder.startChunkedConversion( 588 ChunkedConversionSink<Object> sink = encoder.startChunkedConversion(
588 new StringConversionSink.fromStringSink(buffer)); 589 new StringConversionSink.fromStringSink(buffer));
589 sink.add(new AllInfoJsonCodec().encode(result)); 590 sink.add(new AllInfoJsonCodec().encode(result));
590 compiler.reporter.reportInfo(NO_LOCATION_SPANNABLE, MessageKind.GENERIC, { 591 compiler.reporter.reportInfo(NO_LOCATION_SPANNABLE, MessageKind.GENERIC, {
591 'text': "View the dumped .info.json file at " 592 'text': "View the dumped .info.json file at "
592 "https://dart-lang.github.io/dump-info-visualizer" 593 "https://dart-lang.github.io/dump-info-visualizer"
593 }); 594 });
594 } 595 }
595 } 596 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698