| 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 |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 __builtin_trap(); | 258 __builtin_trap(); |
| 259 #else | 259 #else |
| 260 // Microsoft style assembly. | 260 // Microsoft style assembly. |
| 261 __asm { | 261 __asm { |
| 262 int 3 | 262 int 3 |
| 263 } | 263 } |
| 264 #endif | 264 #endif |
| 265 } | 265 } |
| 266 | 266 |
| 267 | 267 |
| 268 DART_NOINLINE uintptr_t OS::GetProgramCounter() { |
| 269 return reinterpret_cast<uintptr_t>(_ReturnAddress()); |
| 270 } |
| 271 |
| 272 |
| 268 char* OS::StrNDup(const char* s, intptr_t n) { | 273 char* OS::StrNDup(const char* s, intptr_t n) { |
| 269 intptr_t len = strlen(s); | 274 intptr_t len = strlen(s); |
| 270 if ((n < 0) || (len < 0)) { | 275 if ((n < 0) || (len < 0)) { |
| 271 return NULL; | 276 return NULL; |
| 272 } | 277 } |
| 273 if (n < len) { | 278 if (n < len) { |
| 274 len = n; | 279 len = n; |
| 275 } | 280 } |
| 276 char* result = reinterpret_cast<char*>(malloc(len + 1)); | 281 char* result = reinterpret_cast<char*>(malloc(len + 1)); |
| 277 if (result == NULL) { | 282 if (result == NULL) { |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 // TODO(zra): Remove once VM shuts down cleanly. | 450 // TODO(zra): Remove once VM shuts down cleanly. |
| 446 private_flag_windows_run_tls_destructors = false; | 451 private_flag_windows_run_tls_destructors = false; |
| 447 // On Windows we use ExitProcess so that threads can't clobber the exit_code. | 452 // On Windows we use ExitProcess so that threads can't clobber the exit_code. |
| 448 // See: https://code.google.com/p/nativeclient/issues/detail?id=2870 | 453 // See: https://code.google.com/p/nativeclient/issues/detail?id=2870 |
| 449 ::ExitProcess(code); | 454 ::ExitProcess(code); |
| 450 } | 455 } |
| 451 | 456 |
| 452 } // namespace dart | 457 } // namespace dart |
| 453 | 458 |
| 454 #endif // defined(TARGET_OS_WINDOWS) | 459 #endif // defined(TARGET_OS_WINDOWS) |
| OLD | NEW |