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

Side by Side Diff: runtime/vm/compiler_stats.cc

Issue 1420103006: Shared token objects (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: catch up Created 5 years, 1 month 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
« no previous file with comments | « runtime/vm/compiler_stats.h ('k') | runtime/vm/isolate.cc » ('j') | 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) 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 #include "vm/compiler_stats.h" 5 #include "vm/compiler_stats.h"
6 6
7 #include "vm/flags.h" 7 #include "vm/flags.h"
8 #include "vm/log.h" 8 #include "vm/log.h"
9 #include "vm/object_graph.h" 9 #include "vm/object_graph.h"
10 #include "vm/timer.h" 10 #include "vm/timer.h"
(...skipping 19 matching lines...) Expand all
30 return; 30 return;
31 } 31 }
32 obj_ = raw_obj; 32 obj_ = raw_obj;
33 if (obj_.GetClassId() == TokenStream::kClassId) { 33 if (obj_.GetClassId() == TokenStream::kClassId) {
34 TokenStream::Iterator tkit(TokenStream::Cast(obj_), 34 TokenStream::Iterator tkit(TokenStream::Cast(obj_),
35 0, 35 0,
36 TokenStream::Iterator::kNoNewlines); 36 TokenStream::Iterator::kNoNewlines);
37 Token::Kind kind = tkit.CurrentTokenKind(); 37 Token::Kind kind = tkit.CurrentTokenKind();
38 while (kind != Token::kEOS) { 38 while (kind != Token::kEOS) {
39 ++stats_->num_tokens_total; 39 ++stats_->num_tokens_total;
40 if (kind == Token::kIDENT) {
41 ++stats_->num_ident_tokens_total;
42 } else if (Token::NeedsLiteralToken(kind)) {
43 ++stats_->num_literal_tokens_total;
44 }
45 tkit.Advance(); 40 tkit.Advance();
46 kind = tkit.CurrentTokenKind(); 41 kind = tkit.CurrentTokenKind();
47 } 42 }
48 } 43 }
49 } 44 }
50 45
51 private: 46 private:
52 Object& obj_; 47 Object& obj_;
53 CompilerStats* stats_; 48 CompilerStats* stats_;
54 }; 49 };
55 50
56 51
57 CompilerStats::CompilerStats(Isolate* isolate) 52 CompilerStats::CompilerStats(Isolate* isolate)
58 : isolate_(isolate), 53 : isolate_(isolate),
59 parser_timer(true, "parser timer"), 54 parser_timer(true, "parser timer"),
60 scanner_timer(true, "scanner timer"), 55 scanner_timer(true, "scanner timer"),
61 codegen_timer(true, "codegen timer"), 56 codegen_timer(true, "codegen timer"),
62 graphbuilder_timer(true, "flow graph builder timer"), 57 graphbuilder_timer(true, "flow graph builder timer"),
63 ssa_timer(true, "flow graph SSA timer"), 58 ssa_timer(true, "flow graph SSA timer"),
64 graphinliner_timer(true, "flow graph inliner timer"), 59 graphinliner_timer(true, "flow graph inliner timer"),
65 graphinliner_parse_timer(true, "inliner parsing timer"), 60 graphinliner_parse_timer(true, "inliner parsing timer"),
66 graphinliner_build_timer(true, "inliner building timer"), 61 graphinliner_build_timer(true, "inliner building timer"),
67 graphinliner_ssa_timer(true, "inliner SSA timer"), 62 graphinliner_ssa_timer(true, "inliner SSA timer"),
68 graphinliner_opt_timer(true, "inliner optimization timer"), 63 graphinliner_opt_timer(true, "inliner optimization timer"),
69 graphinliner_subst_timer(true, "inliner substitution timer"), 64 graphinliner_subst_timer(true, "inliner substitution timer"),
70 graphoptimizer_timer(true, "flow graph optimizer timer"), 65 graphoptimizer_timer(true, "flow graph optimizer timer"),
71 graphcompiler_timer(true, "flow graph compiler timer"), 66 graphcompiler_timer(true, "flow graph compiler timer"),
72 codefinalizer_timer(true, "code finalization timer"), 67 codefinalizer_timer(true, "code finalization timer"),
73 num_tokens_total(0), 68 num_tokens_total(0),
74 num_literal_tokens_total(0),
75 num_ident_tokens_total(0),
76 num_tokens_scanned(0), 69 num_tokens_scanned(0),
77 num_tokens_consumed(0), 70 num_tokens_consumed(0),
78 num_cached_consts(0), 71 num_cached_consts(0),
79 num_const_cache_hits(0), 72 num_const_cache_hits(0),
80 num_classes_parsed(0), 73 num_classes_parsed(0),
81 num_class_tokens(0), 74 num_class_tokens(0),
82 num_functions_parsed(0), 75 num_functions_parsed(0),
83 num_functions_compiled(0), 76 num_functions_compiled(0),
84 num_functions_optimized(0), 77 num_functions_optimized(0),
85 num_func_tokens_compiled(0), 78 num_func_tokens_compiled(0),
(...skipping 24 matching lines...) Expand all
110 va_start(args, format); 103 va_start(args, format);
111 stats->text = zone->VPrint(format, args); 104 stats->text = zone->VPrint(format, args);
112 va_end(args); 105 va_end(args);
113 } 106 }
114 107
115 108
116 void CompilerStats::Update() { 109 void CompilerStats::Update() {
117 // Traverse the heap and compute number of tokens in all 110 // Traverse the heap and compute number of tokens in all
118 // TokenStream objects. 111 // TokenStream objects.
119 num_tokens_total = 0; 112 num_tokens_total = 0;
120 num_literal_tokens_total = 0;
121 num_ident_tokens_total = 0;
122 TokenStreamVisitor visitor(isolate_, this); 113 TokenStreamVisitor visitor(isolate_, this);
123 isolate_->heap()->IterateObjects(&visitor); 114 isolate_->heap()->IterateObjects(&visitor);
124 Dart::vm_isolate()->heap()->IterateObjects(&visitor); 115 Dart::vm_isolate()->heap()->IterateObjects(&visitor);
125 } 116 }
126 117
127 118
128 void CompilerStats::EnableBenchmark() { 119 void CompilerStats::EnableBenchmark() {
129 FLAG_compiler_stats = true; 120 FLAG_compiler_stats = true;
130 use_benchmark_output = true; 121 use_benchmark_output = true;
131 } 122 }
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 } 183 }
193 184
194 Update(); 185 Update();
195 186
196 Log log(PrintToStats); 187 Log log(PrintToStats);
197 LogBlock lb(Thread::Current(), &log); 188 LogBlock lb(Thread::Current(), &log);
198 189
199 log.Print("==== Compiler Stats for isolate '%s' ====\n", 190 log.Print("==== Compiler Stats for isolate '%s' ====\n",
200 isolate_->debugger_name()); 191 isolate_->debugger_name());
201 log.Print("Number of tokens: %" Pd64 "\n", num_tokens_total); 192 log.Print("Number of tokens: %" Pd64 "\n", num_tokens_total);
202 log.Print(" Literal tokens: %" Pd64 "\n", num_literal_tokens_total);
203 log.Print(" Ident tokens: %" Pd64 "\n", num_ident_tokens_total);
204 log.Print("Source length: %" Pd64 " characters\n", src_length); 193 log.Print("Source length: %" Pd64 " characters\n", src_length);
205 log.Print("Number of source tokens: %" Pd64 "\n", num_tokens_scanned); 194 log.Print("Number of source tokens: %" Pd64 "\n", num_tokens_scanned);
206 195
207 log.Print("==== Parser stats:\n"); 196 log.Print("==== Parser stats:\n");
208 log.Print("Total tokens consumed: %" Pd64 "\n", num_tokens_consumed); 197 log.Print("Total tokens consumed: %" Pd64 "\n", num_tokens_consumed);
209 log.Print("Classes parsed: %" Pd64 "\n", num_classes_parsed); 198 log.Print("Classes parsed: %" Pd64 "\n", num_classes_parsed);
210 log.Print(" Tokens consumed: %" Pd64 "\n", num_class_tokens); 199 log.Print(" Tokens consumed: %" Pd64 "\n", num_class_tokens);
211 log.Print("Functions parsed: %" Pd64 "\n", num_functions_parsed); 200 log.Print("Functions parsed: %" Pd64 "\n", num_functions_parsed);
212 log.Print(" Tokens consumed: %" Pd64 "\n", num_func_tokens_compiled); 201 log.Print(" Tokens consumed: %" Pd64 "\n", num_func_tokens_compiled);
213 log.Print("Impl getter funcs: %" Pd64 "\n", num_implicit_final_getters); 202 log.Print("Impl getter funcs: %" Pd64 "\n", num_implicit_final_getters);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 total_instr_size / 1024); 275 total_instr_size / 1024);
287 log.Print(" Pc Desc size: %" Pd64 " KB\n", pc_desc_size / 1024); 276 log.Print(" Pc Desc size: %" Pd64 " KB\n", pc_desc_size / 1024);
288 log.Print(" VarDesc size: %" Pd64 " KB\n", vardesc_size / 1024); 277 log.Print(" VarDesc size: %" Pd64 " KB\n", vardesc_size / 1024);
289 log.Flush(); 278 log.Flush();
290 char* stats_text = text; 279 char* stats_text = text;
291 text = NULL; 280 text = NULL;
292 return stats_text; 281 return stats_text;
293 } 282 }
294 283
295 } // namespace dart 284 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/compiler_stats.h ('k') | runtime/vm/isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698