Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(448)

Side by Side Diff: runtime/bin/utils_macos.cc

Issue 2974233002: VM: Re-format to use at most one newline between functions (Closed)
Patch Set: Rebase and merge Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/bin/utils_linux.cc ('k') | runtime/bin/utils_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "platform/globals.h" 5 #include "platform/globals.h"
6 #if defined(HOST_OS_MACOS) 6 #if defined(HOST_OS_MACOS)
7 7
8 #include <errno.h> // NOLINT 8 #include <errno.h> // NOLINT
9 #include <mach/clock.h> // NOLINT 9 #include <mach/clock.h> // NOLINT
10 #include <mach/mach.h> // NOLINT 10 #include <mach/mach.h> // NOLINT
(...skipping 14 matching lines...) Expand all
25 25
26 OSError::OSError() : sub_system_(kSystem), code_(0), message_(NULL) { 26 OSError::OSError() : sub_system_(kSystem), code_(0), message_(NULL) {
27 set_sub_system(kSystem); 27 set_sub_system(kSystem);
28 set_code(errno); 28 set_code(errno);
29 const int kBufferSize = 1024; 29 const int kBufferSize = 1024;
30 char error_message[kBufferSize]; 30 char error_message[kBufferSize];
31 Utils::StrError(errno, error_message, kBufferSize); 31 Utils::StrError(errno, error_message, kBufferSize);
32 SetMessage(error_message); 32 SetMessage(error_message);
33 } 33 }
34 34
35
36 void OSError::SetCodeAndMessage(SubSystem sub_system, int code) { 35 void OSError::SetCodeAndMessage(SubSystem sub_system, int code) {
37 set_sub_system(sub_system); 36 set_sub_system(sub_system);
38 set_code(code); 37 set_code(code);
39 if (sub_system == kSystem) { 38 if (sub_system == kSystem) {
40 const int kBufferSize = 1024; 39 const int kBufferSize = 1024;
41 char error_message[kBufferSize]; 40 char error_message[kBufferSize];
42 Utils::StrError(code, error_message, kBufferSize); 41 Utils::StrError(code, error_message, kBufferSize);
43 SetMessage(error_message); 42 SetMessage(error_message);
44 } else if (sub_system == kGetAddressInfo) { 43 } else if (sub_system == kGetAddressInfo) {
45 SetMessage(gai_strerror(code)); 44 SetMessage(gai_strerror(code));
46 } else { 45 } else {
47 UNREACHABLE(); 46 UNREACHABLE();
48 } 47 }
49 } 48 }
50 49
51
52 const char* StringUtils::ConsoleStringToUtf8(const char* str, 50 const char* StringUtils::ConsoleStringToUtf8(const char* str,
53 intptr_t len, 51 intptr_t len,
54 intptr_t* result_len) { 52 intptr_t* result_len) {
55 UNIMPLEMENTED(); 53 UNIMPLEMENTED();
56 return NULL; 54 return NULL;
57 } 55 }
58 56
59
60 const char* StringUtils::Utf8ToConsoleString(const char* utf8, 57 const char* StringUtils::Utf8ToConsoleString(const char* utf8,
61 intptr_t len, 58 intptr_t len,
62 intptr_t* result_len) { 59 intptr_t* result_len) {
63 UNIMPLEMENTED(); 60 UNIMPLEMENTED();
64 return NULL; 61 return NULL;
65 } 62 }
66 63
67
68 char* StringUtils::ConsoleStringToUtf8(char* str, 64 char* StringUtils::ConsoleStringToUtf8(char* str,
69 intptr_t len, 65 intptr_t len,
70 intptr_t* result_len) { 66 intptr_t* result_len) {
71 UNIMPLEMENTED(); 67 UNIMPLEMENTED();
72 return NULL; 68 return NULL;
73 } 69 }
74 70
75
76 char* StringUtils::Utf8ToConsoleString(char* utf8, 71 char* StringUtils::Utf8ToConsoleString(char* utf8,
77 intptr_t len, 72 intptr_t len,
78 intptr_t* result_len) { 73 intptr_t* result_len) {
79 UNIMPLEMENTED(); 74 UNIMPLEMENTED();
80 return NULL; 75 return NULL;
81 } 76 }
82 77
83
84 char* StringUtils::StrNDup(const char* s, intptr_t n) { 78 char* StringUtils::StrNDup(const char* s, intptr_t n) {
85 // strndup has only been added to Mac OS X in 10.7. We are supplying 79 // strndup has only been added to Mac OS X in 10.7. We are supplying
86 // our own copy here if needed. 80 // our own copy here if needed.
87 #if !defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) || \ 81 #if !defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) || \
88 __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ <= 1060 82 __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ <= 1060
89 intptr_t len = strlen(s); 83 intptr_t len = strlen(s);
90 if ((n < 0) || (len < 0)) { 84 if ((n < 0) || (len < 0)) {
91 return NULL; 85 return NULL;
92 } 86 }
93 if (n < len) { 87 if (n < len) {
94 len = n; 88 len = n;
95 } 89 }
96 char* result = reinterpret_cast<char*>(malloc(len + 1)); 90 char* result = reinterpret_cast<char*>(malloc(len + 1));
97 if (result == NULL) { 91 if (result == NULL) {
98 return NULL; 92 return NULL;
99 } 93 }
100 result[len] = '\0'; 94 result[len] = '\0';
101 return reinterpret_cast<char*>(memmove(result, s, len)); 95 return reinterpret_cast<char*>(memmove(result, s, len));
102 #else // !defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) || ... 96 #else // !defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) || ...
103 return strndup(s, n); 97 return strndup(s, n);
104 #endif // !defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) || ... 98 #endif // !defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) || ...
105 } 99 }
106 100
107
108 bool ShellUtils::GetUtf8Argv(int argc, char** argv) { 101 bool ShellUtils::GetUtf8Argv(int argc, char** argv) {
109 return false; 102 return false;
110 } 103 }
111 104
112
113 static mach_timebase_info_data_t timebase_info; 105 static mach_timebase_info_data_t timebase_info;
114 106
115
116 void TimerUtils::InitOnce() { 107 void TimerUtils::InitOnce() {
117 kern_return_t kr = mach_timebase_info(&timebase_info); 108 kern_return_t kr = mach_timebase_info(&timebase_info);
118 ASSERT(KERN_SUCCESS == kr); 109 ASSERT(KERN_SUCCESS == kr);
119 } 110 }
120 111
121
122 int64_t TimerUtils::GetCurrentMonotonicMillis() { 112 int64_t TimerUtils::GetCurrentMonotonicMillis() {
123 return GetCurrentMonotonicMicros() / 1000; 113 return GetCurrentMonotonicMicros() / 1000;
124 } 114 }
125 115
126
127 #if HOST_OS_IOS 116 #if HOST_OS_IOS
128 static int64_t GetCurrentTimeMicros() { 117 static int64_t GetCurrentTimeMicros() {
129 // gettimeofday has microsecond resolution. 118 // gettimeofday has microsecond resolution.
130 struct timeval tv; 119 struct timeval tv;
131 if (gettimeofday(&tv, NULL) < 0) { 120 if (gettimeofday(&tv, NULL) < 0) {
132 UNREACHABLE(); 121 UNREACHABLE();
133 return 0; 122 return 0;
134 } 123 }
135 return (static_cast<int64_t>(tv.tv_sec) * 1000000) + tv.tv_usec; 124 return (static_cast<int64_t>(tv.tv_sec) * 1000000) + tv.tv_usec;
136 } 125 }
137 #endif // HOST_OS_IOS 126 #endif // HOST_OS_IOS
138 127
139
140 int64_t TimerUtils::GetCurrentMonotonicMicros() { 128 int64_t TimerUtils::GetCurrentMonotonicMicros() {
141 #if HOST_OS_IOS 129 #if HOST_OS_IOS
142 // On iOS mach_absolute_time stops while the device is sleeping. Instead use 130 // On iOS mach_absolute_time stops while the device is sleeping. Instead use
143 // now - KERN_BOOTTIME to get a time difference that is not impacted by clock 131 // now - KERN_BOOTTIME to get a time difference that is not impacted by clock
144 // changes. KERN_BOOTTIME will be updated by the system whenever the system 132 // changes. KERN_BOOTTIME will be updated by the system whenever the system
145 // clock change. 133 // clock change.
146 struct timeval boottime; 134 struct timeval boottime;
147 int mib[2] = {CTL_KERN, KERN_BOOTTIME}; 135 int mib[2] = {CTL_KERN, KERN_BOOTTIME};
148 size_t size = sizeof(boottime); 136 size_t size = sizeof(boottime);
149 int kr = sysctl(mib, sizeof(mib) / sizeof(mib[0]), &boottime, &size, NULL, 0); 137 int kr = sysctl(mib, sizeof(mib) / sizeof(mib[0]), &boottime, &size, NULL, 0);
150 ASSERT(KERN_SUCCESS == kr); 138 ASSERT(KERN_SUCCESS == kr);
151 int64_t now = GetCurrentTimeMicros(); 139 int64_t now = GetCurrentTimeMicros();
152 int64_t origin = boottime.tv_sec * kMicrosecondsPerSecond; 140 int64_t origin = boottime.tv_sec * kMicrosecondsPerSecond;
153 origin += boottime.tv_usec; 141 origin += boottime.tv_usec;
154 return now - origin; 142 return now - origin;
155 #else 143 #else
156 ASSERT(timebase_info.denom != 0); 144 ASSERT(timebase_info.denom != 0);
157 // timebase_info converts absolute time tick units into nanoseconds. Convert 145 // timebase_info converts absolute time tick units into nanoseconds. Convert
158 // to microseconds. 146 // to microseconds.
159 int64_t result = mach_absolute_time() / kNanosecondsPerMicrosecond; 147 int64_t result = mach_absolute_time() / kNanosecondsPerMicrosecond;
160 result *= timebase_info.numer; 148 result *= timebase_info.numer;
161 result /= timebase_info.denom; 149 result /= timebase_info.denom;
162 return result; 150 return result;
163 #endif // HOST_OS_IOS 151 #endif // HOST_OS_IOS
164 } 152 }
165 153
166
167 void TimerUtils::Sleep(int64_t millis) { 154 void TimerUtils::Sleep(int64_t millis) {
168 struct timespec req; // requested. 155 struct timespec req; // requested.
169 struct timespec rem; // remainder. 156 struct timespec rem; // remainder.
170 int64_t micros = millis * kMicrosecondsPerMillisecond; 157 int64_t micros = millis * kMicrosecondsPerMillisecond;
171 int64_t seconds = micros / kMicrosecondsPerSecond; 158 int64_t seconds = micros / kMicrosecondsPerSecond;
172 micros = micros - seconds * kMicrosecondsPerSecond; 159 micros = micros - seconds * kMicrosecondsPerSecond;
173 int64_t nanos = micros * kNanosecondsPerMicrosecond; 160 int64_t nanos = micros * kNanosecondsPerMicrosecond;
174 req.tv_sec = seconds; 161 req.tv_sec = seconds;
175 req.tv_nsec = nanos; 162 req.tv_nsec = nanos;
176 while (true) { 163 while (true) {
177 int r = nanosleep(&req, &rem); 164 int r = nanosleep(&req, &rem);
178 if (r == 0) { 165 if (r == 0) {
179 break; 166 break;
180 } 167 }
181 // We should only ever see an interrupt error. 168 // We should only ever see an interrupt error.
182 ASSERT(errno == EINTR); 169 ASSERT(errno == EINTR);
183 // Copy remainder into requested and repeat. 170 // Copy remainder into requested and repeat.
184 req = rem; 171 req = rem;
185 } 172 }
186 } 173 }
187 174
188 } // namespace bin 175 } // namespace bin
189 } // namespace dart 176 } // namespace dart
190 177
191 #endif // defined(HOST_OS_MACOS) 178 #endif // defined(HOST_OS_MACOS)
OLDNEW
« no previous file with comments | « runtime/bin/utils_linux.cc ('k') | runtime/bin/utils_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698