diff options
Diffstat (limited to 'libartbase/base/utils.h')
| -rw-r--r-- | libartbase/base/utils.h | 42 |
1 files changed, 9 insertions, 33 deletions
diff --git a/libartbase/base/utils.h b/libartbase/base/utils.h index ba61e1b0a3..d85960d811 100644 --- a/libartbase/base/utils.h +++ b/libartbase/base/utils.h @@ -24,6 +24,7 @@ #include <string> #include <android-base/logging.h> +#include <android-base/parseint.h> #include "casts.h" #include "enums.h" @@ -33,34 +34,6 @@ namespace art { -template <typename T> -bool ParseUint(const char *in, T* out) { - char* end; - unsigned long long int result = strtoull(in, &end, 0); // NOLINT(runtime/int) - if (in == end || *end != '\0') { - return false; - } - if (std::numeric_limits<T>::max() < result) { - return false; - } - *out = static_cast<T>(result); - return true; -} - -template <typename T> -bool ParseInt(const char* in, T* out) { - char* end; - long long int result = strtoll(in, &end, 0); // NOLINT(runtime/int) - if (in == end || *end != '\0') { - return false; - } - if (result < std::numeric_limits<T>::min() || std::numeric_limits<T>::max() < result) { - return false; - } - *out = static_cast<T>(result); - return true; -} - static inline uint32_t PointerToLowMemUInt32(const void* p) { uintptr_t intp = reinterpret_cast<uintptr_t>(p); DCHECK_LE(intp, 0xFFFFFFFFU); @@ -130,7 +103,7 @@ static void ParseIntOption(const StringPiece& option, DCHECK(option.starts_with(option_prefix)) << option << " " << option_prefix; const char* value_string = option.substr(option_prefix.size()).data(); int64_t parsed_integer_value = 0; - if (!ParseInt(value_string, &parsed_integer_value)) { + if (!android::base::ParseInt(value_string, &parsed_integer_value)) { usage("Failed to parse %s '%s' as an integer", option_name.c_str(), value_string); } *out = dchecked_integral_cast<T>(parsed_integer_value); @@ -179,16 +152,19 @@ static T GetRandomNumber(T min, T max) { // Sleep forever and never come back. NO_RETURN void SleepForever(); -inline void FlushInstructionCache(char* begin, char* end) { - __builtin___clear_cache(begin, end); +inline void FlushDataCache(void* begin, void* end) { + __builtin___clear_cache(reinterpret_cast<char*>(begin), reinterpret_cast<char*>(end)); } -inline void FlushDataCache(char* begin, char* end) { +inline void FlushInstructionCache(void* begin, void* end) { // Same as FlushInstructionCache for lack of other builtin. __builtin___clear_cache // flushes both caches. - __builtin___clear_cache(begin, end); + __builtin___clear_cache(reinterpret_cast<char*>(begin), reinterpret_cast<char*>(end)); } +// Flush instruction pipeline. Returns true on success, false if feature is unsupported. +bool FlushInstructionPipeline(); + template <typename T> constexpr PointerSize ConvertToPointerSize(T any) { if (any == 4 || any == 8) { |