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

Unified Diff: pkg/compiler/tool/status_files/rank_stacks.dart

Issue 3007023002: rank_stacks tweaks (Closed)
Patch Set: Created 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/tool/status_files/rank_stacks.dart
diff --git a/pkg/compiler/tool/status_files/rank_stacks.dart b/pkg/compiler/tool/status_files/rank_stacks.dart
index 5d5f72a73b36f35dcce10d51c46793eb93949efb..f50dad32c1fe8859e411c3e5f688c78dd18f09bc 100644
--- a/pkg/compiler/tool/status_files/rank_stacks.dart
+++ b/pkg/compiler/tool/status_files/rank_stacks.dart
@@ -37,8 +37,8 @@ void die(String why) {
ArgParser argParser = new ArgParser()
..addOption('stacks',
abbr: 's',
- defaultsTo: '30',
- help: 'Number of highest ranking stacks to print.')
+ defaultsTo: '0',
+ help: 'Number of highest ranking stacks to print (0 for all).')
..addOption('length',
abbr: 'l', defaultsTo: '12', help: 'Number of stack frames printed.');
@@ -74,7 +74,7 @@ main(args) {
records.addAll(parse(text));
}
- var trie = new TrieNode(null);
+ var trie = new TrieNode(null, 0);
for (var record in records) {
enter(record, 0, trie);
}
@@ -83,11 +83,11 @@ main(args) {
leaves.sort(compareNodesByCountAndStack);
for (var leaf in howManyStacks == 0 ? leaves : leaves.take(howManyStacks)) {
print('');
- var examples = leaf.members.map((r) => r.fullReason).toSet().toList();
+ var examples = leaf.members.map(fullReasonOf).toSet().toList();
examples.sort();
print('${leaf.length} of:');
for (var example in examples) {
- var count = leaf.members.where((r) => r.fullReason == example).length;
+ var count = leaf.members.where((r) => fullReasonOf(r) == example).length;
var countAligned = '$count'.padLeft(6);
if (examples.length == 1) countAligned = ' .';
var indentedExample = '\t' + example.replaceAll('\n', '\n\t');
@@ -100,6 +100,11 @@ main(args) {
}
}
+String fullReasonOf(Record r) {
+ // Some records have no matched reason, so default to test status.
+ return r.fullReason ?? r.actual;
+}
+
int compareNodesByCountAndStack(TrieNode a, TrieNode b) {
int r = b.length.compareTo(a.length);
if (r != 0) return r;
@@ -122,14 +127,17 @@ class TrieNode {
int get length => members.length;
- TrieNode(this.key, [this.depth = 0]);
+ TrieNode(this.key, this.depth);
String toString() => 'TrieNode(#$length)';
}
void enter(Record record, int depth, TrieNode root) {
- root.members.add(record);
- if (depth >= record.stack.length) return;
+ // Cluster on printed stack.
+ if (depth >= stackPrintLength || depth >= record.stack.length) {
+ root.members.add(record);
+ return;
+ }
var key = record.stack[depth];
var node = root.map[key] ??= new TrieNode(key, depth + 1);
enter(record, depth + 1, node);
@@ -144,11 +152,10 @@ void printTrie(TrieNode node) {
}
trieLeaves(node) sync* {
- if (node.map.isEmpty) {
+ if (node.members.isNotEmpty) {
yield node;
- } else {
- for (var v in node.map.values) {
- yield* trieLeaves(v);
- }
+ }
+ for (var v in node.map.values) {
+ yield* trieLeaves(v);
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698