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

Unified Diff: runtime/vm/precompiler.cc

Issue 2584613002: PATCH (not to be comitted): Support for printing instruction statistics
Patch Set: Fixed polymorphic call inside try, added more tags for remaining unknown code Created 4 years 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 | « runtime/vm/object.cc ('k') | runtime/vm/raw_object.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/precompiler.cc
diff --git a/runtime/vm/precompiler.cc b/runtime/vm/precompiler.cc
index ce07486c707488878bde0cd3312493e488848a53..258866c89167217a27d37330200f83235ff60283 100644
--- a/runtime/vm/precompiler.cc
+++ b/runtime/vm/precompiler.cc
@@ -60,6 +60,7 @@ DEFINE_FLAG(
"Max number of attempts with speculative inlining (precompilation only)");
DEFINE_FLAG(int, precompiler_rounds, 1, "Number of precompiler iterations");
+
DECLARE_FLAG(bool, allocation_sinking);
DECLARE_FLAG(bool, common_subexpression_elimination);
DECLARE_FLAG(bool, constant_propagation);
@@ -76,6 +77,7 @@ DECLARE_FLAG(bool, huge_method_cutoff_in_code_size);
DECLARE_FLAG(bool, trace_failed_optimization_attempts);
DECLARE_FLAG(bool, trace_inlining_intervals);
DECLARE_FLAG(bool, trace_irregexp);
+DECLARE_FLAG(bool, print_instruction_stats);
#ifdef DART_PRECOMPILER
@@ -169,7 +171,8 @@ class PrecompileParsedFunctionHelper : public ValueObject {
void FinalizeCompilation(Assembler* assembler,
FlowGraphCompiler* graph_compiler,
- FlowGraph* flow_graph);
+ FlowGraph* flow_graph,
+ CodeStatistics* stats);
Precompiler* precompiler_;
ParsedFunction* parsed_function_;
@@ -2628,7 +2631,8 @@ void Precompiler::ResetPrecompilerState() {
void PrecompileParsedFunctionHelper::FinalizeCompilation(
Assembler* assembler,
FlowGraphCompiler* graph_compiler,
- FlowGraph* flow_graph) {
+ FlowGraph* flow_graph,
+ CodeStatistics* stats) {
const Function& function = parsed_function()->function();
Zone* const zone = thread()->zone();
@@ -2685,6 +2689,11 @@ void PrecompileParsedFunctionHelper::FinalizeCompilation(
}
ASSERT(!parsed_function()->HasDeferredPrefixes());
ASSERT(FLAG_load_deferred_eagerly);
+
+ if (stats != NULL) {
+ stats->Finalize();
+ code.set_stats(stats);
+ }
}
@@ -3111,9 +3120,16 @@ bool PrecompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
ASSERT(inline_id_to_function.length() == caller_inline_id.length());
Assembler assembler(use_far_branches);
+
+ CodeStatistics* function_stats = NULL;
+ if (FLAG_print_instruction_stats) {
+ function_stats = new CodeStatistics(&assembler);
+ }
+
FlowGraphCompiler graph_compiler(
&assembler, flow_graph, *parsed_function(), optimized(),
- inline_id_to_function, inline_id_to_token_pos, caller_inline_id);
+ inline_id_to_function, inline_id_to_token_pos, caller_inline_id,
+ function_stats);
{
CSTAT_TIMER_SCOPE(thread(), graphcompiler_timer);
#ifndef PRODUCT
@@ -3128,7 +3144,8 @@ bool PrecompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
"FinalizeCompilation");
#endif // !PRODUCT
ASSERT(thread()->IsMutatorThread());
- FinalizeCompilation(&assembler, &graph_compiler, flow_graph);
+ FinalizeCompilation(
+ &assembler, &graph_compiler, flow_graph, function_stats);
}
// Mark that this isolate now has compiled code.
isolate()->set_has_compiled_code(true);
@@ -3187,6 +3204,7 @@ bool PrecompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
// Reset global isolate state.
thread()->set_deopt_id(prev_deopt_id);
}
+
return is_compiled;
}
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/raw_object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698