16449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom/* 26449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * Copyright (C) 2014 The Android Open Source Project 36449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * 46449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * Licensed under the Apache License, Version 2.0 (the "License"); 56449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * you may not use this file except in compliance with the License. 66449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * You may obtain a copy of the License at 76449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * 86449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * http://www.apache.org/licenses/LICENSE-2.0 96449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * 106449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * Unless required by applicable law or agreed to in writing, software 116449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * distributed under the License is distributed on an "AS IS" BASIS, 126449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * See the License for the specific language governing permissions and 146449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * limitations under the License. 156449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom */ 166449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 176449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#ifndef ART_COMPILER_DRIVER_COMPILER_OPTIONS_H_ 186449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#define ART_COMPILER_DRIVER_COMPILER_OPTIONS_H_ 196449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 206449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstromnamespace art { 216449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 226449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstromclass CompilerOptions { 236449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom public: 246449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom enum CompilerFilter { 254a200f56b7075309316b04d550c9cc50f8314eddJeff Hao kVerifyNone, // Skip verification and compile nothing except JNI stubs. 264a200f56b7075309316b04d550c9cc50f8314eddJeff Hao kInterpretOnly, // Compile nothing except JNI stubs. 276449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom kSpace, // Maximize space savings. 286449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom kBalanced, // Try to get the best performance return on compilation investment. 296449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom kSpeed, // Maximize runtime performance. 30643b5df2b065ccf5bb19a183573da691e9d0311fIgor Murashkin kEverything, // Force compilation (Note: excludes compilaton of class initializers). 316449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom }; 326449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 336449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom // Guide heuristics to determine whether to compile method if profile data not available. 3439c3bfbd03d85c63cfbe69f17ce5800ccc7d6c13Dave Allison#if ART_SMALL_MODE 35c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6Calin Juravle static const CompilerFilter kDefaultCompilerFilter = kInterpretOnly; 3639c3bfbd03d85c63cfbe69f17ce5800ccc7d6c13Dave Allison#else 376449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom static const CompilerFilter kDefaultCompilerFilter = kSpeed; 3839c3bfbd03d85c63cfbe69f17ce5800ccc7d6c13Dave Allison#endif 396449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom static const size_t kDefaultHugeMethodThreshold = 10000; 406449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom static const size_t kDefaultLargeMethodThreshold = 600; 416449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom static const size_t kDefaultSmallMethodThreshold = 60; 426449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom static const size_t kDefaultTinyMethodThreshold = 20; 436449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom static const size_t kDefaultNumDexMethodsThreshold = 900; 44c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6Calin Juravle static constexpr double kDefaultTopKProfileThreshold = 90.0; 4578382fa44ee505cf16835e4d22515e7252a90864Alex Light static const bool kDefaultIncludeDebugSymbols = kIsDebugBuild; 4653cb16b98acf3cf6f3a1e2204ad4958ecf1b5a3cAlex Light static const bool kDefaultIncludePatchInformation = false; 476449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 486449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom CompilerOptions() : 496449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom compiler_filter_(kDefaultCompilerFilter), 506449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom huge_method_threshold_(kDefaultHugeMethodThreshold), 516449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom large_method_threshold_(kDefaultLargeMethodThreshold), 526449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom small_method_threshold_(kDefaultSmallMethodThreshold), 536449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom tiny_method_threshold_(kDefaultTinyMethodThreshold), 54ae9fd93c39a341e2dffe15c61cc7d9e841fa92c4Mark Mendell num_dex_methods_threshold_(kDefaultNumDexMethodsThreshold), 55c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6Calin Juravle generate_gdb_information_(false), 5653cb16b98acf3cf6f3a1e2204ad4958ecf1b5a3cAlex Light include_patch_information_(kDefaultIncludePatchInformation), 5778382fa44ee505cf16835e4d22515e7252a90864Alex Light top_k_profile_threshold_(kDefaultTopKProfileThreshold), 585655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe include_debug_symbols_(kDefaultIncludeDebugSymbols), 5969dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison implicit_null_checks_(false), 6069dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison implicit_so_checks_(false), 61643b5df2b065ccf5bb19a183573da691e9d0311fIgor Murashkin implicit_suspend_checks_(false), 62643b5df2b065ccf5bb19a183573da691e9d0311fIgor Murashkin compile_pic_(false) 636449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#ifdef ART_SEA_IR_MODE 646449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom , sea_ir_mode_(false) 656449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#endif 666449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom {} 676449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 686449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom CompilerOptions(CompilerFilter compiler_filter, 696449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t huge_method_threshold, 706449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t large_method_threshold, 716449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t small_method_threshold, 726449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t tiny_method_threshold, 73ae9fd93c39a341e2dffe15c61cc7d9e841fa92c4Mark Mendell size_t num_dex_methods_threshold, 74c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6Calin Juravle bool generate_gdb_information, 7553cb16b98acf3cf6f3a1e2204ad4958ecf1b5a3cAlex Light bool include_patch_information, 7678382fa44ee505cf16835e4d22515e7252a90864Alex Light double top_k_profile_threshold, 775655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe bool include_debug_symbols, 7869dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison bool implicit_null_checks, 7969dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison bool implicit_so_checks, 80643b5df2b065ccf5bb19a183573da691e9d0311fIgor Murashkin bool implicit_suspend_checks, 81643b5df2b065ccf5bb19a183573da691e9d0311fIgor Murashkin bool compile_pic 826449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#ifdef ART_SEA_IR_MODE 836449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom , bool sea_ir_mode 846449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#endif 856449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom ) : // NOLINT(whitespace/parens) 866449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom compiler_filter_(compiler_filter), 876449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom huge_method_threshold_(huge_method_threshold), 886449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom large_method_threshold_(large_method_threshold), 896449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom small_method_threshold_(small_method_threshold), 906449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom tiny_method_threshold_(tiny_method_threshold), 91ae9fd93c39a341e2dffe15c61cc7d9e841fa92c4Mark Mendell num_dex_methods_threshold_(num_dex_methods_threshold), 92c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6Calin Juravle generate_gdb_information_(generate_gdb_information), 9353cb16b98acf3cf6f3a1e2204ad4958ecf1b5a3cAlex Light include_patch_information_(include_patch_information), 9478382fa44ee505cf16835e4d22515e7252a90864Alex Light top_k_profile_threshold_(top_k_profile_threshold), 955655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe include_debug_symbols_(include_debug_symbols), 9669dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison implicit_null_checks_(implicit_null_checks), 9769dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison implicit_so_checks_(implicit_so_checks), 98643b5df2b065ccf5bb19a183573da691e9d0311fIgor Murashkin implicit_suspend_checks_(implicit_suspend_checks), 99643b5df2b065ccf5bb19a183573da691e9d0311fIgor Murashkin compile_pic_(compile_pic) 1006449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#ifdef ART_SEA_IR_MODE 1016449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom , sea_ir_mode_(sea_ir_mode) 1026449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#endif 1036449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom {} 1046449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 1056449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom CompilerFilter GetCompilerFilter() const { 1066449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom return compiler_filter_; 1076449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 1086449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 1096449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom void SetCompilerFilter(CompilerFilter compiler_filter) { 1106449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom compiler_filter_ = compiler_filter; 1116449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 1126449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 1134a200f56b7075309316b04d550c9cc50f8314eddJeff Hao bool IsCompilationEnabled() const { 1144a200f56b7075309316b04d550c9cc50f8314eddJeff Hao return ((compiler_filter_ != CompilerOptions::kVerifyNone) && 1154a200f56b7075309316b04d550c9cc50f8314eddJeff Hao (compiler_filter_ != CompilerOptions::kInterpretOnly)); 1164a200f56b7075309316b04d550c9cc50f8314eddJeff Hao } 1174a200f56b7075309316b04d550c9cc50f8314eddJeff Hao 1184a200f56b7075309316b04d550c9cc50f8314eddJeff Hao bool IsVerificationEnabled() const { 1194a200f56b7075309316b04d550c9cc50f8314eddJeff Hao return (compiler_filter_ != CompilerOptions::kVerifyNone); 1204a200f56b7075309316b04d550c9cc50f8314eddJeff Hao } 1214a200f56b7075309316b04d550c9cc50f8314eddJeff Hao 1226449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t GetHugeMethodThreshold() const { 1236449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom return huge_method_threshold_; 1246449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 1256449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 1266449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t GetLargeMethodThreshold() const { 1276449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom return large_method_threshold_; 1286449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 1296449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 1306449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t GetSmallMethodThreshold() const { 1316449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom return small_method_threshold_; 1326449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 1336449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 1346449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t GetTinyMethodThreshold() const { 1356449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom return tiny_method_threshold_; 1366449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 1376449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 1386449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom bool IsHugeMethod(size_t num_dalvik_instructions) const { 1396449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom return num_dalvik_instructions > huge_method_threshold_; 1406449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 1416449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 1426449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom bool IsLargeMethod(size_t num_dalvik_instructions) const { 1436449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom return num_dalvik_instructions > large_method_threshold_; 1446449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 1456449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 1466449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom bool IsSmallMethod(size_t num_dalvik_instructions) const { 1476449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom return num_dalvik_instructions > small_method_threshold_; 1486449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 1496449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 1506449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom bool IsTinyMethod(size_t num_dalvik_instructions) const { 1516449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom return num_dalvik_instructions > tiny_method_threshold_; 1526449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 1536449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 1546449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t GetNumDexMethodsThreshold() const { 1556449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom return num_dex_methods_threshold_; 1566449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 1576449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 158c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6Calin Juravle double GetTopKProfileThreshold() const { 159c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6Calin Juravle return top_k_profile_threshold_; 160c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6Calin Juravle } 161c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6Calin Juravle 16278382fa44ee505cf16835e4d22515e7252a90864Alex Light bool GetIncludeDebugSymbols() const { 16378382fa44ee505cf16835e4d22515e7252a90864Alex Light return include_debug_symbols_; 16478382fa44ee505cf16835e4d22515e7252a90864Alex Light } 16578382fa44ee505cf16835e4d22515e7252a90864Alex Light 16669dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison bool GetImplicitNullChecks() const { 16769dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison return implicit_null_checks_; 1685655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe } 1695655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe 17069dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison void SetImplicitNullChecks(bool new_val) { 17169dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison implicit_null_checks_ = new_val; 1725655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe } 1735655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe 17469dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison bool GetImplicitStackOverflowChecks() const { 17569dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison return implicit_so_checks_; 1765655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe } 1775655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe 17869dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison void SetImplicitStackOverflowChecks(bool new_val) { 17969dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison implicit_so_checks_ = new_val; 1805655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe } 1815655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe 18269dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison bool GetImplicitSuspendChecks() const { 18369dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison return implicit_suspend_checks_; 1845655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe } 1855655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe 18669dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison void SetImplicitSuspendChecks(bool new_val) { 18769dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison implicit_suspend_checks_ = new_val; 1885655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe } 1895655e84e8d71697d8ef3ea901a0b853af42c559eAndreas Gampe 1906449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#ifdef ART_SEA_IR_MODE 1916449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom bool GetSeaIrMode(); 1926449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#endif 1936449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 194ae9fd93c39a341e2dffe15c61cc7d9e841fa92c4Mark Mendell bool GetGenerateGDBInformation() const { 195ae9fd93c39a341e2dffe15c61cc7d9e841fa92c4Mark Mendell return generate_gdb_information_; 196ae9fd93c39a341e2dffe15c61cc7d9e841fa92c4Mark Mendell } 197ae9fd93c39a341e2dffe15c61cc7d9e841fa92c4Mark Mendell 19853cb16b98acf3cf6f3a1e2204ad4958ecf1b5a3cAlex Light bool GetIncludePatchInformation() const { 19953cb16b98acf3cf6f3a1e2204ad4958ecf1b5a3cAlex Light return include_patch_information_; 20053cb16b98acf3cf6f3a1e2204ad4958ecf1b5a3cAlex Light } 20153cb16b98acf3cf6f3a1e2204ad4958ecf1b5a3cAlex Light 202643b5df2b065ccf5bb19a183573da691e9d0311fIgor Murashkin // Should the code be compiled as position independent? 203643b5df2b065ccf5bb19a183573da691e9d0311fIgor Murashkin bool GetCompilePic() const { 204643b5df2b065ccf5bb19a183573da691e9d0311fIgor Murashkin return compile_pic_; 205643b5df2b065ccf5bb19a183573da691e9d0311fIgor Murashkin } 206643b5df2b065ccf5bb19a183573da691e9d0311fIgor Murashkin 2076449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom private: 2086449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom CompilerFilter compiler_filter_; 2096449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t huge_method_threshold_; 2106449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t large_method_threshold_; 2116449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t small_method_threshold_; 2126449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t tiny_method_threshold_; 2136449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom size_t num_dex_methods_threshold_; 214ae9fd93c39a341e2dffe15c61cc7d9e841fa92c4Mark Mendell bool generate_gdb_information_; 21553cb16b98acf3cf6f3a1e2204ad4958ecf1b5a3cAlex Light bool include_patch_information_; 216c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6Calin Juravle // When using a profile file only the top K% of the profiled samples will be compiled. 217c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6Calin Juravle double top_k_profile_threshold_; 21878382fa44ee505cf16835e4d22515e7252a90864Alex Light bool include_debug_symbols_; 21969dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison bool implicit_null_checks_; 22069dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison bool implicit_so_checks_; 22169dfe51b684dd9d510dbcb63295fe180f998efdeDave Allison bool implicit_suspend_checks_; 222643b5df2b065ccf5bb19a183573da691e9d0311fIgor Murashkin bool compile_pic_; 2236449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#ifdef ART_SEA_IR_MODE 2246449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom bool sea_ir_mode_; 2256449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#endif 2266449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom}; 2276449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 2286449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom} // namespace art 2296449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 2306449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#endif // ART_COMPILER_DRIVER_COMPILER_OPTIONS_H_ 231