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

Unified Diff: runtime/vm/compiler.cc

Issue 1715123003: - Add DEBUG_ONLY and NOT_IN_PRODUCT macros. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Update status files. Created 4 years, 10 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 | « runtime/vm/ast_printer.cc ('k') | runtime/vm/dart.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/compiler.cc
diff --git a/runtime/vm/compiler.cc b/runtime/vm/compiler.cc
index fcab75e3fefb12fe47cbdf506932f92cfbc41682..39c88460c22a3de60ed4eb5bdcf5f9cb367a938c 100644
--- a/runtime/vm/compiler.cc
+++ b/runtime/vm/compiler.cc
@@ -275,7 +275,7 @@ RawError* Compiler::CompileClass(const Class& cls) {
Thread* const thread = Thread::Current();
StackZone zone(thread);
-#ifndef PRODUCT
+NOT_IN_PRODUCT(
VMTagScope tagScope(thread, VMTag::kCompileClassTagId);
TimelineDurationScope tds(thread,
thread->isolate()->GetCompilerStream(),
@@ -284,7 +284,7 @@ RawError* Compiler::CompileClass(const Class& cls) {
tds.SetNumArguments(1);
tds.CopyArgument(0, "class", cls.ToCString());
}
-#endif // !PRODUCT
+) // !PRODUCT
// We remember all the classes that are being compiled in these lists. This
// also allows us to reset the marked_for_parsing state in case we see an
@@ -563,9 +563,8 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
}
bool is_compiled = false;
Zone* const zone = thread()->zone();
-#ifndef PRODUCT
- TimelineStream* compiler_timeline = isolate()->GetCompilerStream();
-#endif
+ NOT_IN_PRODUCT(
+ TimelineStream* compiler_timeline = isolate()->GetCompilerStream());
CSTAT_TIMER_SCOPE(thread(), codegen_timer);
HANDLESCOPE(thread());
@@ -627,11 +626,9 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
}
}
-#ifndef PRODUCT
- TimelineDurationScope tds(thread(),
- compiler_timeline,
- "BuildFlowGraph");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds(thread(),
+ compiler_timeline,
+ "BuildFlowGraph");)
flow_graph = pipeline->BuildFlowGraph(zone,
parsed_function(),
*ic_data_array,
@@ -655,20 +652,15 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
const bool reorder_blocks =
FlowGraph::ShouldReorderBlocks(function, optimized());
if (reorder_blocks) {
-#ifndef PRODUCT
- TimelineDurationScope tds(thread(),
- compiler_timeline,
- "BlockScheduler::AssignEdgeWeights");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds(
+ thread(), compiler_timeline, "BlockScheduler::AssignEdgeWeights"));
block_scheduler.AssignEdgeWeights();
}
if (optimized()) {
-#ifndef PRODUCT
- TimelineDurationScope tds(thread(),
- compiler_timeline,
- "ComputeSSA");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds(thread(),
+ compiler_timeline,
+ "ComputeSSA"));
CSTAT_TIMER_SCOPE(thread(), ssa_timer);
// Transform to SSA (virtual register 0 and no inlining arguments).
flow_graph->ComputeSSA(0, NULL);
@@ -687,11 +679,9 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
// have non-generic type feedback attached to them that can
// potentially affect optimizations.
if (optimized()) {
-#ifndef PRODUCT
- TimelineDurationScope tds(thread(),
- compiler_timeline,
- "OptimizationPasses");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds(thread(),
+ compiler_timeline,
+ "OptimizationPasses"));
inline_id_to_function.Add(&function);
// Top scope function has no caller (-1).
caller_inline_id.Add(-1);
@@ -712,11 +702,9 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
// Inlining (mutates the flow graph)
if (FLAG_use_inlining) {
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "Inlining");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(thread(),
+ compiler_timeline,
+ "Inlining"));
CSTAT_TIMER_SCOPE(thread(), graphinliner_timer);
// Propagate types to create more inlining opportunities.
FlowGraphTypePropagator::Propagate(flow_graph);
@@ -741,11 +729,9 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
DEBUG_ASSERT(flow_graph->VerifyUseLists());
{
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "ApplyClassIds");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(thread(),
+ compiler_timeline,
+ "ApplyClassIds"));
// Use propagated class-ids to optimize further.
optimizer.ApplyClassIds();
DEBUG_ASSERT(flow_graph->VerifyUseLists());
@@ -765,11 +751,9 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
DEBUG_ASSERT(flow_graph->VerifyUseLists());
{
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "BranchSimplifier");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(thread(),
+ compiler_timeline,
+ "BranchSimplifier"));
BranchSimplifier::Simplify(flow_graph);
DEBUG_ASSERT(flow_graph->VerifyUseLists());
@@ -778,12 +762,10 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
}
if (FLAG_constant_propagation) {
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "ConstantPropagation");
-#endif // !PRODUCT
- ConstantPropagator::Optimize(flow_graph);
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(thread(),
+ compiler_timeline,
+ "ConstantPropagation");
+ ConstantPropagator::Optimize(flow_graph));
DEBUG_ASSERT(flow_graph->VerifyUseLists());
// A canonicalization pass to remove e.g. smi checks on smi constants.
flow_graph->Canonicalize();
@@ -809,11 +791,9 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
DEBUG_ASSERT(flow_graph->VerifyUseLists());
{
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "SelectRepresentations");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(thread(),
+ compiler_timeline,
+ "SelectRepresentations"));
// Where beneficial convert Smi operations into Int32 operations.
// Only meanigful for 32bit platforms right now.
flow_graph->WidenSmiToInt32();
@@ -826,11 +806,8 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
}
{
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "CommonSubexpressionElinination");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(
+ thread(), compiler_timeline, "CommonSubexpressionElinination"));
if (FLAG_common_subexpression_elimination ||
FLAG_loop_invariant_code_motion) {
flow_graph->ComputeBlockEffects();
@@ -868,20 +845,16 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
DEBUG_ASSERT(flow_graph->VerifyUseLists());
{
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "DeadStoreElimination");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(thread(),
+ compiler_timeline,
+ "DeadStoreElimination"));
DeadStoreElimination::Optimize(flow_graph);
}
if (FLAG_range_analysis) {
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "RangeAnalysis");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(thread(),
+ compiler_timeline,
+ "RangeAnalysis"));
// Propagate types after store-load-forwarding. Some phis may have
// become smi phis that can be processed by range analysis.
FlowGraphTypePropagator::Propagate(flow_graph);
@@ -896,11 +869,9 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
}
if (FLAG_constant_propagation) {
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "ConstantPropagator::OptimizeBranches");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(
+ thread(), compiler_timeline,
+ "ConstantPropagator::OptimizeBranches"));
// Constant propagation can use information from range analysis to
// find unreachable branch targets and eliminate branches that have
// the same true- and false-target.
@@ -914,11 +885,8 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
DEBUG_ASSERT(flow_graph->VerifyUseLists());
{
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "TryCatchAnalyzer::Optimize");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(
+ thread(), compiler_timeline, "TryCatchAnalyzer::Optimize"));
// Optimize try-blocks.
TryCatchAnalyzer::Optimize(flow_graph);
}
@@ -929,11 +897,9 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
flow_graph->EliminateEnvironments();
{
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "EliminateDeadPhis");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(thread(),
+ compiler_timeline,
+ "EliminateDeadPhis"));
DeadCodeElimination::EliminateDeadPhis(flow_graph);
DEBUG_ASSERT(flow_graph->VerifyUseLists());
}
@@ -947,11 +913,8 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
AllocationSinking* sinking = NULL;
if (FLAG_allocation_sinking &&
(flow_graph->graph_entry()->SuccessorCount() == 1)) {
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "AllocationSinking::Optimize");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(
+ thread(), compiler_timeline, "AllocationSinking::Optimize"));
// TODO(fschneider): Support allocation sinking with try-catch.
sinking = new AllocationSinking(flow_graph);
sinking->Optimize();
@@ -965,11 +928,9 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
DEBUG_ASSERT(flow_graph->VerifyUseLists());
{
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "SelectRepresentations");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(thread(),
+ compiler_timeline,
+ "SelectRepresentations"));
// Ensure that all phis inserted by optimization passes have
// consistent representations.
flow_graph->SelectRepresentations();
@@ -986,12 +947,9 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
DEBUG_ASSERT(flow_graph->VerifyUseLists());
if (sinking != NULL) {
-#ifndef PRODUCT
- TimelineDurationScope tds2(
- thread(),
- compiler_timeline,
- "AllocationSinking::DetachMaterializations");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(
+ thread(), compiler_timeline,
+ "AllocationSinking::DetachMaterializations"));
// Remove all MaterializeObject instructions inserted by allocation
// sinking from the flow graph and let them float on the side
// referenced only from environments. Register allocator will consider
@@ -1004,22 +962,17 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
FlowGraphInliner::CollectGraphInfo(flow_graph, true);
{
-#ifndef PRODUCT
- TimelineDurationScope tds2(thread(),
- compiler_timeline,
- "AllocateRegisters");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds2(thread(),
+ compiler_timeline,
+ "AllocateRegisters"));
// Perform register allocation on the SSA graph.
FlowGraphAllocator allocator(*flow_graph);
allocator.AllocateRegisters();
}
if (reorder_blocks) {
-#ifndef PRODUCT
- TimelineDurationScope tds(thread(),
- compiler_timeline,
- "BlockScheduler::ReorderBlocks");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds(
+ thread(), compiler_timeline, "BlockScheduler::ReorderBlocks"));
block_scheduler.ReorderBlocks();
}
@@ -1036,20 +989,16 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
caller_inline_id);
{
CSTAT_TIMER_SCOPE(thread(), graphcompiler_timer);
-#ifndef PRODUCT
- TimelineDurationScope tds(thread(),
- compiler_timeline,
- "CompileGraph");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds(thread(),
+ compiler_timeline,
+ "CompileGraph"));
graph_compiler.CompileGraph();
pipeline->FinalizeCompilation();
}
{
-#ifndef PRODUCT
- TimelineDurationScope tds(thread(),
- compiler_timeline,
- "FinalizeCompilation");
-#endif // !PRODUCT
+ NOT_IN_PRODUCT(TimelineDurationScope tds(thread(),
+ compiler_timeline,
+ "FinalizeCompilation"));
if (thread()->IsMutatorThread()) {
FinalizeCompilation(&assembler, &graph_compiler, flow_graph);
} else {
@@ -1114,7 +1063,7 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
}
-#if defined(DEBUG)
+DEBUG_ONLY(
// Verifies that the inliner is always in the list of inlined functions.
// If this fails run with --trace-inlining-intervals to get more information.
static void CheckInliningIntervals(const Function& function) {
@@ -1132,8 +1081,7 @@ static void CheckInliningIntervals(const Function& function) {
function.raw());
}
}
-#endif
-
+)
static RawError* CompileFunctionHelper(CompilationPipeline* pipeline,
const Function& function,
@@ -1229,9 +1177,7 @@ static RawError* CompileFunctionHelper(CompilationPipeline* pipeline,
Disassembler::DisassembleCode(function, true);
THR_Print("*** END CODE\n");
}
-#if defined(DEBUG)
- CheckInliningIntervals(function);
-#endif
+ DEBUG_ONLY(CheckInliningIntervals(function));
return Error::null();
} else {
Thread* const thread = Thread::Current();
« no previous file with comments | « runtime/vm/ast_printer.cc ('k') | runtime/vm/dart.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698