| Index: runtime/vm/os_android.cc
|
| diff --git a/runtime/vm/os_android.cc b/runtime/vm/os_android.cc
|
| index e2a7b33097aeb5e2d5c4b9f4ac7aa22cd6df0658..d9da8d46fb38b18ff7f8fa32ca15c3e7ad2727fc 100644
|
| --- a/runtime/vm/os_android.cc
|
| +++ b/runtime/vm/os_android.cc
|
| @@ -12,10 +12,10 @@
|
| #include <errno.h> // NOLINT
|
| #include <limits.h> // NOLINT
|
| #include <malloc.h> // NOLINT
|
| -#include <time.h> // NOLINT
|
| #include <sys/resource.h> // NOLINT
|
| #include <sys/time.h> // NOLINT
|
| #include <sys/types.h> // NOLINT
|
| +#include <time.h> // NOLINT
|
| #include <unistd.h> // NOLINT
|
|
|
| #include "platform/utils.h"
|
| @@ -24,7 +24,6 @@
|
| #include "vm/isolate.h"
|
| #include "vm/zone.h"
|
|
|
| -
|
| namespace dart {
|
|
|
| // Android CodeObservers.
|
| @@ -89,12 +88,10 @@ const char* OS::Name() {
|
| return "android";
|
| }
|
|
|
| -
|
| intptr_t OS::ProcessId() {
|
| return static_cast<intptr_t>(getpid());
|
| }
|
|
|
| -
|
| static bool LocalTime(int64_t seconds_since_epoch, tm* tm_result) {
|
| time_t seconds = static_cast<time_t>(seconds_since_epoch);
|
| if (seconds != seconds_since_epoch) return false;
|
| @@ -102,7 +99,6 @@ static bool LocalTime(int64_t seconds_since_epoch, tm* tm_result) {
|
| return error_code != NULL;
|
| }
|
|
|
| -
|
| const char* OS::GetTimeZoneName(int64_t seconds_since_epoch) {
|
| tm decomposed;
|
| bool succeeded = LocalTime(seconds_since_epoch, &decomposed);
|
| @@ -110,7 +106,6 @@ const char* OS::GetTimeZoneName(int64_t seconds_since_epoch) {
|
| return (succeeded && (decomposed.tm_zone != NULL)) ? decomposed.tm_zone : "";
|
| }
|
|
|
| -
|
| int OS::GetTimeZoneOffsetInSeconds(int64_t seconds_since_epoch) {
|
| tm decomposed;
|
| bool succeeded = LocalTime(seconds_since_epoch, &decomposed);
|
| @@ -119,7 +114,6 @@ int OS::GetTimeZoneOffsetInSeconds(int64_t seconds_since_epoch) {
|
| return succeeded ? static_cast<int>(decomposed.tm_gmtoff) : 0;
|
| }
|
|
|
| -
|
| int OS::GetLocalTimeZoneAdjustmentInSeconds() {
|
| // TODO(floitsch): avoid excessive calls to tzset?
|
| tzset();
|
| @@ -128,12 +122,10 @@ int OS::GetLocalTimeZoneAdjustmentInSeconds() {
|
| return static_cast<int>(-timezone);
|
| }
|
|
|
| -
|
| int64_t OS::GetCurrentTimeMillis() {
|
| return GetCurrentTimeMicros() / 1000;
|
| }
|
|
|
| -
|
| int64_t OS::GetCurrentTimeMicros() {
|
| // gettimeofday has microsecond resolution.
|
| struct timeval tv;
|
| @@ -144,7 +136,6 @@ int64_t OS::GetCurrentTimeMicros() {
|
| return (static_cast<int64_t>(tv.tv_sec) * 1000000) + tv.tv_usec;
|
| }
|
|
|
| -
|
| int64_t OS::GetCurrentMonotonicTicks() {
|
| struct timespec ts;
|
| if (clock_gettime(CLOCK_MONOTONIC, &ts) != 0) {
|
| @@ -158,19 +149,16 @@ int64_t OS::GetCurrentMonotonicTicks() {
|
| return result;
|
| }
|
|
|
| -
|
| int64_t OS::GetCurrentMonotonicFrequency() {
|
| return kNanosecondsPerSecond;
|
| }
|
|
|
| -
|
| int64_t OS::GetCurrentMonotonicMicros() {
|
| int64_t ticks = GetCurrentMonotonicTicks();
|
| ASSERT(GetCurrentMonotonicFrequency() == kNanosecondsPerSecond);
|
| return ticks / kNanosecondsPerMicrosecond;
|
| }
|
|
|
| -
|
| int64_t OS::GetCurrentThreadCPUMicros() {
|
| struct timespec ts;
|
| if (clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts) != 0) {
|
| @@ -183,7 +171,6 @@ int64_t OS::GetCurrentThreadCPUMicros() {
|
| return result;
|
| }
|
|
|
| -
|
| // TODO(5411554): May need to hoist these architecture dependent code
|
| // into a architecture specific file e.g: os_ia32_linux.cc
|
| intptr_t OS::ActivationFrameAlignment() {
|
| @@ -204,7 +191,6 @@ intptr_t OS::ActivationFrameAlignment() {
|
| return alignment;
|
| }
|
|
|
| -
|
| intptr_t OS::PreferredCodeAlignment() {
|
| #if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64) || \
|
| defined(TARGET_ARCH_ARM64) || defined(TARGET_ARCH_DBC)
|
| @@ -224,12 +210,10 @@ intptr_t OS::PreferredCodeAlignment() {
|
| return alignment;
|
| }
|
|
|
| -
|
| int OS::NumberOfAvailableProcessors() {
|
| return sysconf(_SC_NPROCESSORS_ONLN);
|
| }
|
|
|
| -
|
| uintptr_t OS::MaxRSS() {
|
| struct rusage usage;
|
| usage.ru_maxrss = 0;
|
| @@ -238,13 +222,11 @@ uintptr_t OS::MaxRSS() {
|
| return usage.ru_maxrss * KB;
|
| }
|
|
|
| -
|
| void OS::Sleep(int64_t millis) {
|
| int64_t micros = millis * kMicrosecondsPerMillisecond;
|
| SleepMicros(micros);
|
| }
|
|
|
| -
|
| void OS::SleepMicros(int64_t micros) {
|
| struct timespec req; // requested.
|
| struct timespec rem; // remainder.
|
| @@ -265,58 +247,47 @@ void OS::SleepMicros(int64_t micros) {
|
| }
|
| }
|
|
|
| -
|
| void OS::DebugBreak() {
|
| __builtin_trap();
|
| }
|
|
|
| -
|
| uintptr_t DART_NOINLINE OS::GetProgramCounter() {
|
| return reinterpret_cast<uintptr_t>(
|
| __builtin_extract_return_addr(__builtin_return_address(0)));
|
| }
|
|
|
| -
|
| char* OS::StrNDup(const char* s, intptr_t n) {
|
| return strndup(s, n);
|
| }
|
|
|
| -
|
| intptr_t OS::StrNLen(const char* s, intptr_t n) {
|
| return strnlen(s, n);
|
| }
|
|
|
| -
|
| uint16_t HostToBigEndian16(uint16_t value) {
|
| return htobe16(value);
|
| }
|
|
|
| -
|
| uint32_t HostToBigEndian32(uint32_t value) {
|
| return htobe32(value);
|
| }
|
|
|
| -
|
| uint64_t HostToBigEndian64(uint64_t value) {
|
| return htobe64(value);
|
| }
|
|
|
| -
|
| uint16_t HostToLittleEndian16(uint16_t value) {
|
| return htole16(value);
|
| }
|
|
|
| -
|
| uint32_t HostToLittleEndian32(uint32_t value) {
|
| return htole32(value);
|
| }
|
|
|
| -
|
| uint64_t HostToLittleEndian64(uint64_t value) {
|
| return htole64(value);
|
| }
|
|
|
| -
|
| void OS::Print(const char* format, ...) {
|
| va_list args;
|
| va_start(args, format);
|
| @@ -326,13 +297,11 @@ void OS::Print(const char* format, ...) {
|
| va_end(args);
|
| }
|
|
|
| -
|
| void OS::VFPrint(FILE* stream, const char* format, va_list args) {
|
| vfprintf(stream, format, args);
|
| fflush(stream);
|
| }
|
|
|
| -
|
| int OS::SNPrint(char* str, size_t size, const char* format, ...) {
|
| va_list args;
|
| va_start(args, format);
|
| @@ -341,7 +310,6 @@ int OS::SNPrint(char* str, size_t size, const char* format, ...) {
|
| return retval;
|
| }
|
|
|
| -
|
| int OS::VSNPrint(char* str, size_t size, const char* format, va_list args) {
|
| int retval = vsnprintf(str, size, format, args);
|
| if (retval < 0) {
|
| @@ -350,7 +318,6 @@ int OS::VSNPrint(char* str, size_t size, const char* format, va_list args) {
|
| return retval;
|
| }
|
|
|
| -
|
| char* OS::SCreate(Zone* zone, const char* format, ...) {
|
| va_list args;
|
| va_start(args, format);
|
| @@ -359,7 +326,6 @@ char* OS::SCreate(Zone* zone, const char* format, ...) {
|
| return buffer;
|
| }
|
|
|
| -
|
| char* OS::VSCreate(Zone* zone, const char* format, va_list args) {
|
| // Measure.
|
| va_list measure_args;
|
| @@ -383,7 +349,6 @@ char* OS::VSCreate(Zone* zone, const char* format, va_list args) {
|
| return buffer;
|
| }
|
|
|
| -
|
| bool OS::StringToInt64(const char* str, int64_t* value) {
|
| ASSERT(str != NULL && strlen(str) > 0 && value != NULL);
|
| int32_t base = 10;
|
| @@ -401,7 +366,6 @@ bool OS::StringToInt64(const char* str, int64_t* value) {
|
| return ((errno == 0) && (endptr != str) && (*endptr == 0));
|
| }
|
|
|
| -
|
| void OS::RegisterCodeObservers() {
|
| #ifndef PRODUCT
|
| if (FLAG_generate_perf_events_symbols) {
|
| @@ -410,7 +374,6 @@ void OS::RegisterCodeObservers() {
|
| #endif // !PRODUCT
|
| }
|
|
|
| -
|
| void OS::PrintErr(const char* format, ...) {
|
| va_list args;
|
| va_start(args, format);
|
| @@ -420,7 +383,6 @@ void OS::PrintErr(const char* format, ...) {
|
| va_end(args);
|
| }
|
|
|
| -
|
| void OS::InitOnce() {
|
| // TODO(5411554): For now we check that initonce is called only once,
|
| // Once there is more formal mechanism to call InitOnce we can move
|
| @@ -430,15 +392,12 @@ void OS::InitOnce() {
|
| init_once_called = true;
|
| }
|
|
|
| -
|
| void OS::Shutdown() {}
|
|
|
| -
|
| void OS::Abort() {
|
| abort();
|
| }
|
|
|
| -
|
| void OS::Exit(int code) {
|
| exit(code);
|
| }
|
|
|