summaryrefslogtreecommitdiff
path: root/compiler/driver/compiler_options.h
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2018-04-13 17:28:34 -0700
committerAndreas Gampe <agampe@google.com>2018-10-16 18:16:56 -0700
commit5c803116e26ef40ad2a9c14d3411e21d149e0c9b (patch)
tree349db3055779728a6b60eecfbb0b2e800af1d468 /compiler/driver/compiler_options.h
parenta683248b80d901f3dc8e37ac9764712875f27da9 (diff)
ART: Add profile-compile-check support
Add --check-profiled-methods, which verifies that all methods mentioned in a profile for a guided compilation are actually compiled instead of being punted. As outcome it may log or abort dex2oat. TODO: Extend dex2oat_test Bug: 76145463 Test: mmma art Test: m test-art-host Change-Id: I956113b55796d0666db9dbfd387105a7d27b0868
Diffstat (limited to 'compiler/driver/compiler_options.h')
-rw-r--r--compiler/driver/compiler_options.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/compiler/driver/compiler_options.h b/compiler/driver/compiler_options.h
index 4a6bbfaae6..a760840b7f 100644
--- a/compiler/driver/compiler_options.h
+++ b/compiler/driver/compiler_options.h
@@ -43,6 +43,13 @@ class DexFile;
enum class InstructionSet;
class InstructionSetFeatures;
+// Enum for CheckProfileMethodsCompiled. Outside CompilerOptions so it can be forward-declared.
+enum class ProfileMethodsCheck : uint8_t {
+ kNone,
+ kLog,
+ kAbort,
+};
+
class CompilerOptions final {
public:
// Guide heuristics to determine whether to compile method if profile data not available.
@@ -317,6 +324,10 @@ class CompilerOptions final {
return resolve_startup_const_strings_;
}
+ ProfileMethodsCheck CheckProfiledMethodsCompiled() const {
+ return check_profiled_methods_;
+ }
+
private:
bool ParseDumpInitFailures(const std::string& option, std::string* error_msg);
void ParseDumpCfgPasses(const StringPiece& option, UsageFn Usage);
@@ -400,6 +411,10 @@ class CompilerOptions final {
// profile.
bool resolve_startup_const_strings_;
+ // When running profile-guided compilation, check that methods intended to be compiled end
+ // up compiled and are not punted.
+ ProfileMethodsCheck check_profiled_methods_;
+
RegisterAllocator::Strategy register_allocation_strategy_;
// If not null, specifies optimization passes which will be run instead of defaults.