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

Side by Side Diff: runtime/bin/platform_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/platform_linux.cc ('k') | runtime/bin/platform_unsupported.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 "bin/platform.h" 8 #include "bin/platform.h"
9 9
10 #include <CoreFoundation/CoreFoundation.h> 10 #include <CoreFoundation/CoreFoundation.h>
(...skipping 17 matching lines...) Expand all
28 const char* Platform::executable_name_ = NULL; 28 const char* Platform::executable_name_ = NULL;
29 char* Platform::resolved_executable_name_ = NULL; 29 char* Platform::resolved_executable_name_ = NULL;
30 int Platform::script_index_ = 1; 30 int Platform::script_index_ = 1;
31 char** Platform::argv_ = NULL; 31 char** Platform::argv_ = NULL;
32 32
33 static void segv_handler(int signal, siginfo_t* siginfo, void* context) { 33 static void segv_handler(int signal, siginfo_t* siginfo, void* context) {
34 Dart_DumpNativeStackTrace(context); 34 Dart_DumpNativeStackTrace(context);
35 abort(); 35 abort();
36 } 36 }
37 37
38
39 bool Platform::Initialize() { 38 bool Platform::Initialize() {
40 // Turn off the signal handler for SIGPIPE as it causes the process 39 // Turn off the signal handler for SIGPIPE as it causes the process
41 // to terminate on writing to a closed pipe. Without the signal 40 // to terminate on writing to a closed pipe. Without the signal
42 // handler error EPIPE is set instead. 41 // handler error EPIPE is set instead.
43 struct sigaction act; 42 struct sigaction act;
44 bzero(&act, sizeof(act)); 43 bzero(&act, sizeof(act));
45 act.sa_handler = SIG_IGN; 44 act.sa_handler = SIG_IGN;
46 if (sigaction(SIGPIPE, &act, 0) != 0) { 45 if (sigaction(SIGPIPE, &act, 0) != 0) {
47 perror("Setting signal handler failed"); 46 perror("Setting signal handler failed");
48 return false; 47 return false;
(...skipping 12 matching lines...) Expand all
61 perror("sigaction() failed."); 60 perror("sigaction() failed.");
62 return false; 61 return false;
63 } 62 }
64 if (sigaction(SIGTRAP, &act, NULL) != 0) { 63 if (sigaction(SIGTRAP, &act, NULL) != 0) {
65 perror("sigaction() failed."); 64 perror("sigaction() failed.");
66 return false; 65 return false;
67 } 66 }
68 return true; 67 return true;
69 } 68 }
70 69
71
72 int Platform::NumberOfProcessors() { 70 int Platform::NumberOfProcessors() {
73 int32_t cpus = -1; 71 int32_t cpus = -1;
74 size_t cpus_length = sizeof(cpus); 72 size_t cpus_length = sizeof(cpus);
75 if (sysctlbyname("hw.logicalcpu", &cpus, &cpus_length, NULL, 0) == 0) { 73 if (sysctlbyname("hw.logicalcpu", &cpus, &cpus_length, NULL, 0) == 0) {
76 return cpus; 74 return cpus;
77 } else { 75 } else {
78 // Failed, fallback to using sysconf. 76 // Failed, fallback to using sysconf.
79 return sysconf(_SC_NPROCESSORS_ONLN); 77 return sysconf(_SC_NPROCESSORS_ONLN);
80 } 78 }
81 } 79 }
82 80
83
84 const char* Platform::OperatingSystem() { 81 const char* Platform::OperatingSystem() {
85 #if HOST_OS_IOS 82 #if HOST_OS_IOS
86 return "ios"; 83 return "ios";
87 #else 84 #else
88 return "macos"; 85 return "macos";
89 #endif 86 #endif
90 } 87 }
91 88
92
93 const char* Platform::LibraryPrefix() { 89 const char* Platform::LibraryPrefix() {
94 return "lib"; 90 return "lib";
95 } 91 }
96 92
97
98 const char* Platform::LibraryExtension() { 93 const char* Platform::LibraryExtension() {
99 return "dylib"; 94 return "dylib";
100 } 95 }
101 96
102
103 static const char* GetLocaleName() { 97 static const char* GetLocaleName() {
104 CFLocaleRef locale = CFLocaleCopyCurrent(); 98 CFLocaleRef locale = CFLocaleCopyCurrent();
105 CFStringRef locale_string = CFLocaleGetIdentifier(locale); 99 CFStringRef locale_string = CFLocaleGetIdentifier(locale);
106 CFIndex len = CFStringGetLength(locale_string); 100 CFIndex len = CFStringGetLength(locale_string);
107 CFIndex max_len = 101 CFIndex max_len =
108 CFStringGetMaximumSizeForEncoding(len, kCFStringEncodingUTF8) + 1; 102 CFStringGetMaximumSizeForEncoding(len, kCFStringEncodingUTF8) + 1;
109 char* result = reinterpret_cast<char*>(Dart_ScopeAllocate(max_len)); 103 char* result = reinterpret_cast<char*>(Dart_ScopeAllocate(max_len));
110 ASSERT(result != NULL); 104 ASSERT(result != NULL);
111 bool success = 105 bool success =
112 CFStringGetCString(locale_string, result, max_len, kCFStringEncodingUTF8); 106 CFStringGetCString(locale_string, result, max_len, kCFStringEncodingUTF8);
113 CFRelease(locale); 107 CFRelease(locale);
114 if (!success) { 108 if (!success) {
115 return NULL; 109 return NULL;
116 } 110 }
117 return result; 111 return result;
118 } 112 }
119 113
120
121 static const char* GetPreferredLanguageName() { 114 static const char* GetPreferredLanguageName() {
122 CFArrayRef languages = CFLocaleCopyPreferredLanguages(); 115 CFArrayRef languages = CFLocaleCopyPreferredLanguages();
123 CFIndex languages_length = CFArrayGetCount(languages); 116 CFIndex languages_length = CFArrayGetCount(languages);
124 if (languages_length < 1) { 117 if (languages_length < 1) {
125 CFRelease(languages); 118 CFRelease(languages);
126 return NULL; 119 return NULL;
127 } 120 }
128 CFTypeRef item = 121 CFTypeRef item =
129 reinterpret_cast<CFTypeRef>(CFArrayGetValueAtIndex(languages, 0)); 122 reinterpret_cast<CFTypeRef>(CFArrayGetValueAtIndex(languages, 0));
130 CFTypeID item_type = CFGetTypeID(item); 123 CFTypeID item_type = CFGetTypeID(item);
131 ASSERT(item_type == CFStringGetTypeID()); 124 ASSERT(item_type == CFStringGetTypeID());
132 CFStringRef language = reinterpret_cast<CFStringRef>(item); 125 CFStringRef language = reinterpret_cast<CFStringRef>(item);
133 CFIndex len = CFStringGetLength(language); 126 CFIndex len = CFStringGetLength(language);
134 CFIndex max_len = 127 CFIndex max_len =
135 CFStringGetMaximumSizeForEncoding(len, kCFStringEncodingUTF8) + 1; 128 CFStringGetMaximumSizeForEncoding(len, kCFStringEncodingUTF8) + 1;
136 char* result = reinterpret_cast<char*>(Dart_ScopeAllocate(max_len)); 129 char* result = reinterpret_cast<char*>(Dart_ScopeAllocate(max_len));
137 ASSERT(result != NULL); 130 ASSERT(result != NULL);
138 bool success = 131 bool success =
139 CFStringGetCString(language, result, max_len, kCFStringEncodingUTF8); 132 CFStringGetCString(language, result, max_len, kCFStringEncodingUTF8);
140 CFRelease(languages); 133 CFRelease(languages);
141 if (!success) { 134 if (!success) {
142 return NULL; 135 return NULL;
143 } 136 }
144 return result; 137 return result;
145 } 138 }
146 139
147
148 const char* Platform::LocaleName() { 140 const char* Platform::LocaleName() {
149 // First see if there is a preferred language. If not, return the 141 // First see if there is a preferred language. If not, return the
150 // current locale name. 142 // current locale name.
151 const char* preferred_language = GetPreferredLanguageName(); 143 const char* preferred_language = GetPreferredLanguageName();
152 return (preferred_language != NULL) ? preferred_language : GetLocaleName(); 144 return (preferred_language != NULL) ? preferred_language : GetLocaleName();
153 } 145 }
154 146
155
156 bool Platform::LocalHostname(char* buffer, intptr_t buffer_length) { 147 bool Platform::LocalHostname(char* buffer, intptr_t buffer_length) {
157 return gethostname(buffer, buffer_length) == 0; 148 return gethostname(buffer, buffer_length) == 0;
158 } 149 }
159 150
160
161 char** Platform::Environment(intptr_t* count) { 151 char** Platform::Environment(intptr_t* count) {
162 #if HOST_OS_IOS 152 #if HOST_OS_IOS
163 // TODO(zra,chinmaygarde): On iOS, environment variables are seldom used. Wire 153 // TODO(zra,chinmaygarde): On iOS, environment variables are seldom used. Wire
164 // this up if someone needs it. In the meantime, we return an empty array. 154 // this up if someone needs it. In the meantime, we return an empty array.
165 char** result; 155 char** result;
166 result = reinterpret_cast<char**>(Dart_ScopeAllocate(1 * sizeof(*result))); 156 result = reinterpret_cast<char**>(Dart_ScopeAllocate(1 * sizeof(*result)));
167 if (result == NULL) { 157 if (result == NULL) {
168 return NULL; 158 return NULL;
169 } 159 }
170 result[0] = NULL; 160 result[0] = NULL;
(...skipping 13 matching lines...) Expand all
184 *count = i; 174 *count = i;
185 char** result; 175 char** result;
186 result = reinterpret_cast<char**>(Dart_ScopeAllocate(i * sizeof(*result))); 176 result = reinterpret_cast<char**>(Dart_ScopeAllocate(i * sizeof(*result)));
187 for (intptr_t current = 0; current < i; current++) { 177 for (intptr_t current = 0; current < i; current++) {
188 result[current] = environ[current]; 178 result[current] = environ[current];
189 } 179 }
190 return result; 180 return result;
191 #endif 181 #endif
192 } 182 }
193 183
194
195 const char* Platform::GetExecutableName() { 184 const char* Platform::GetExecutableName() {
196 return executable_name_; 185 return executable_name_;
197 } 186 }
198 187
199
200 const char* Platform::ResolveExecutablePath() { 188 const char* Platform::ResolveExecutablePath() {
201 // Get the required length of the buffer. 189 // Get the required length of the buffer.
202 uint32_t path_size = 0; 190 uint32_t path_size = 0;
203 if (_NSGetExecutablePath(NULL, &path_size) == 0) { 191 if (_NSGetExecutablePath(NULL, &path_size) == 0) {
204 return NULL; 192 return NULL;
205 } 193 }
206 // Allocate buffer and get executable path. 194 // Allocate buffer and get executable path.
207 char* path = DartUtils::ScopedCString(path_size); 195 char* path = DartUtils::ScopedCString(path_size);
208 if (_NSGetExecutablePath(path, &path_size) != 0) { 196 if (_NSGetExecutablePath(path, &path_size) != 0) {
209 return NULL; 197 return NULL;
210 } 198 }
211 // Return the canonical path as the returned path might contain symlinks. 199 // Return the canonical path as the returned path might contain symlinks.
212 const char* canon_path = File::GetCanonicalPath(path); 200 const char* canon_path = File::GetCanonicalPath(path);
213 return canon_path; 201 return canon_path;
214 } 202 }
215 203
216
217 void Platform::Exit(int exit_code) { 204 void Platform::Exit(int exit_code) {
218 exit(exit_code); 205 exit(exit_code);
219 } 206 }
220 207
221 } // namespace bin 208 } // namespace bin
222 } // namespace dart 209 } // namespace dart
223 210
224 #endif // defined(HOST_OS_MACOS) 211 #endif // defined(HOST_OS_MACOS)
OLDNEW
« no previous file with comments | « runtime/bin/platform_linux.cc ('k') | runtime/bin/platform_unsupported.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698