diff options
author | Igor Murashkin <iam@google.com> | 2017-08-08 13:59:55 -0700 |
---|---|---|
committer | Igor Murashkin <iam@google.com> | 2017-08-11 10:23:30 -0700 |
commit | 6ef45677305048c2bf0600f1c4b98a11b2cfaffb (patch) | |
tree | 9a8df6a3bebe4a6120403562c21817d775a6ef36 /compiler/optimizing/optimizing_compiler_stats.h | |
parent | 1e065a54845da12541572f4f149e6ab0dcd20180 (diff) |
optimizing: Add statistics for # of constructor fences added/removed
Statistics are attributed as follows:
Added because:
* HNewInstances requires a HConstructorFence following it.
* HReturn requires a HConstructorFence (for final fields) preceding it.
Removed because:
* Optimized in Load-Store-Elimination.
* Optimized in Prepare-For-Register-Allocation.
Test: art/test.py
Bug: 36656456
Change-Id: Ic119441c5151a5a840fc6532b411340e2d68e5eb
Diffstat (limited to 'compiler/optimizing/optimizing_compiler_stats.h')
-rw-r--r-- | compiler/optimizing/optimizing_compiler_stats.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler/optimizing/optimizing_compiler_stats.h b/compiler/optimizing/optimizing_compiler_stats.h index 098d23dac1..d6da73cc1c 100644 --- a/compiler/optimizing/optimizing_compiler_stats.h +++ b/compiler/optimizing/optimizing_compiler_stats.h @@ -23,6 +23,7 @@ #include <type_traits> #include "atomic.h" +#include "globals.h" namespace art { @@ -86,6 +87,10 @@ enum MethodCompilationStat { kNotInlinedWont, kNotInlinedRecursiveBudget, kNotInlinedProxy, + kConstructorFenceGeneratedNew, + kConstructorFenceGeneratedFinal, + kConstructorFenceRemovedLSE, + kConstructorFenceRemovedPFRA, kLastStat }; @@ -202,6 +207,10 @@ class OptimizingCompilerStats { case kNotInlinedWont: name = "NotInlinedWont"; break; case kNotInlinedRecursiveBudget: name = "NotInlinedRecursiveBudget"; break; case kNotInlinedProxy: name = "NotInlinedProxy"; break; + case kConstructorFenceGeneratedNew: name = "ConstructorFenceGeneratedNew"; break; + case kConstructorFenceGeneratedFinal: name = "ConstructorFenceGeneratedFinal"; break; + case kConstructorFenceRemovedLSE: name = "ConstructorFenceRemovedLSE"; break; + case kConstructorFenceRemovedPFRA: name = "ConstructorFenceRemovedPFRA"; break; case kLastStat: LOG(FATAL) << "invalid stat " |