OLD | NEW |
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 "vm/globals.h" | 5 #include "vm/globals.h" |
6 #if defined(TARGET_OS_WINDOWS) | 6 #if defined(TARGET_OS_WINDOWS) |
7 | 7 |
8 #include "vm/os.h" | 8 #include "vm/os.h" |
9 | 9 |
10 #include <malloc.h> // NOLINT | 10 #include <malloc.h> // NOLINT |
11 #include <process.h> // NOLINT | 11 #include <process.h> // NOLINT |
12 #include <time.h> // NOLINT | 12 #include <time.h> // NOLINT |
13 | 13 |
14 #include "platform/utils.h" | 14 #include "platform/utils.h" |
15 #include "platform/assert.h" | 15 #include "platform/assert.h" |
16 #include "vm/os_thread.h" | 16 #include "vm/os_thread.h" |
17 #include "vm/vtune.h" | 17 #include "vm/vtune.h" |
| 18 #include "vm/zone.h" |
18 | 19 |
19 namespace dart { | 20 namespace dart { |
20 | 21 |
21 const char* OS::Name() { | 22 const char* OS::Name() { |
22 return "windows"; | 23 return "windows"; |
23 } | 24 } |
24 | 25 |
25 | 26 |
26 intptr_t OS::ProcessId() { | 27 intptr_t OS::ProcessId() { |
27 return static_cast<intptr_t>(GetCurrentProcessId()); | 28 return static_cast<intptr_t>(GetCurrentProcessId()); |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 // truncated or if there was an error. | 265 // truncated or if there was an error. |
265 // The static cast is safe here as we have already determined that 'written' | 266 // The static cast is safe here as we have already determined that 'written' |
266 // is >= 0. | 267 // is >= 0. |
267 if (static_cast<size_t>(written) >= size) { | 268 if (static_cast<size_t>(written) >= size) { |
268 str[size - 1] = '\0'; | 269 str[size - 1] = '\0'; |
269 } | 270 } |
270 return written; | 271 return written; |
271 } | 272 } |
272 | 273 |
273 | 274 |
| 275 char* OS::SCreate(Zone* zone, const char* format, ...) { |
| 276 va_list args; |
| 277 va_start(args, format); |
| 278 char* buffer = VSCreate(zone, format, args); |
| 279 va_end(args); |
| 280 return buffer; |
| 281 } |
| 282 |
| 283 |
| 284 char* OS::VSCreate(Zone* zone, const char* format, va_list args) { |
| 285 // Measure. |
| 286 va_list measure_args; |
| 287 va_copy(measure_args, args); |
| 288 intptr_t len = VSNPrint(NULL, 0, format, measure_args); |
| 289 va_end(measure_args); |
| 290 |
| 291 char* buffer; |
| 292 if (zone) { |
| 293 buffer = zone->Alloc<char>(len + 1); |
| 294 } else { |
| 295 buffer = reinterpret_cast<char*>(malloc(len + 1)); |
| 296 } |
| 297 ASSERT(buffer != NULL); |
| 298 |
| 299 // Print. |
| 300 va_list print_args; |
| 301 va_copy(print_args, args); |
| 302 VSNPrint(buffer, len + 1, format, print_args); |
| 303 va_end(print_args); |
| 304 return buffer; |
| 305 } |
| 306 |
| 307 |
274 bool OS::StringToInt64(const char* str, int64_t* value) { | 308 bool OS::StringToInt64(const char* str, int64_t* value) { |
275 ASSERT(str != NULL && strlen(str) > 0 && value != NULL); | 309 ASSERT(str != NULL && strlen(str) > 0 && value != NULL); |
276 int32_t base = 10; | 310 int32_t base = 10; |
277 char* endptr; | 311 char* endptr; |
278 int i = 0; | 312 int i = 0; |
279 if (str[0] == '-') { | 313 if (str[0] == '-') { |
280 i = 1; | 314 i = 1; |
281 } | 315 } |
282 if ((str[i] == '0') && | 316 if ((str[i] == '0') && |
283 (str[i + 1] == 'x' || str[i + 1] == 'X') && | 317 (str[i + 1] == 'x' || str[i + 1] == 'X') && |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 } | 362 } |
329 | 363 |
330 | 364 |
331 void OS::Exit(int code) { | 365 void OS::Exit(int code) { |
332 exit(code); | 366 exit(code); |
333 } | 367 } |
334 | 368 |
335 } // namespace dart | 369 } // namespace dart |
336 | 370 |
337 #endif // defined(TARGET_OS_WINDOWS) | 371 #endif // defined(TARGET_OS_WINDOWS) |
OLD | NEW |