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

Side by Side Diff: src/platform-win32.cc

Issue 328343003: Remove dependency on Vector from platform files (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: updates Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « src/platform-solaris.cc ('k') | src/prettyprinter.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Platform-specific code for Win32. 5 // Platform-specific code for Win32.
6 6
7 // Secure API functions are not available using MinGW with msvcrt.dll 7 // Secure API functions are not available using MinGW with msvcrt.dll
8 // on Windows XP. Make sure MINGW_HAS_SECURE_API is not defined to 8 // on Windows XP. Make sure MINGW_HAS_SECURE_API is not defined to
9 // disable definition of secure API functions in standard headers that 9 // disable definition of secure API functions in standard headers that
10 // would conflict with our own implementation. 10 // would conflict with our own implementation.
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 std_tz_name_[kTzNameSize - 1] = '\0'; 144 std_tz_name_[kTzNameSize - 1] = '\0';
145 WideCharToMultiByte(CP_UTF8, 0, tzinfo_.DaylightName, -1, 145 WideCharToMultiByte(CP_UTF8, 0, tzinfo_.DaylightName, -1,
146 dst_tz_name_, kTzNameSize, NULL, NULL); 146 dst_tz_name_, kTzNameSize, NULL, NULL);
147 dst_tz_name_[kTzNameSize - 1] = '\0'; 147 dst_tz_name_[kTzNameSize - 1] = '\0';
148 148
149 // If OS returned empty string or resource id (like "@tzres.dll,-211") 149 // If OS returned empty string or resource id (like "@tzres.dll,-211")
150 // simply guess the name from the UTC bias of the timezone. 150 // simply guess the name from the UTC bias of the timezone.
151 // To properly resolve the resource identifier requires a library load, 151 // To properly resolve the resource identifier requires a library load,
152 // which is not possible in a sandbox. 152 // which is not possible in a sandbox.
153 if (std_tz_name_[0] == '\0' || std_tz_name_[0] == '@') { 153 if (std_tz_name_[0] == '\0' || std_tz_name_[0] == '@') {
154 OS::SNPrintF(Vector<char>(std_tz_name_, kTzNameSize - 1), 154 OS::SNPrintF(std_tz_name_, kTzNameSize - 1,
155 "%s Standard Time", 155 "%s Standard Time",
156 GuessTimezoneNameFromBias(tzinfo_.Bias)); 156 GuessTimezoneNameFromBias(tzinfo_.Bias));
157 } 157 }
158 if (dst_tz_name_[0] == '\0' || dst_tz_name_[0] == '@') { 158 if (dst_tz_name_[0] == '\0' || dst_tz_name_[0] == '@') {
159 OS::SNPrintF(Vector<char>(dst_tz_name_, kTzNameSize - 1), 159 OS::SNPrintF(dst_tz_name_, kTzNameSize - 1,
160 "%s Daylight Time", 160 "%s Daylight Time",
161 GuessTimezoneNameFromBias(tzinfo_.Bias)); 161 GuessTimezoneNameFromBias(tzinfo_.Bias));
162 } 162 }
163 // Timezone information initialized. 163 // Timezone information initialized.
164 initialized_ = true; 164 initialized_ = true;
165 } 165 }
166 166
167 // Guess the name of the timezone from the bias. 167 // Guess the name of the timezone from the bias.
168 // The guess is very biased towards the northern hemisphere. 168 // The guess is very biased towards the northern hemisphere.
169 const char* GuessTimezoneNameFromBias(int bias) { 169 const char* GuessTimezoneNameFromBias(int bias) {
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 } 544 }
545 return output_mode == CONSOLE; 545 return output_mode == CONSOLE;
546 } 546 }
547 547
548 548
549 static void VPrintHelper(FILE* stream, const char* format, va_list args) { 549 static void VPrintHelper(FILE* stream, const char* format, va_list args) {
550 if ((stream == stdout || stream == stderr) && !HasConsole()) { 550 if ((stream == stdout || stream == stderr) && !HasConsole()) {
551 // It is important to use safe print here in order to avoid 551 // It is important to use safe print here in order to avoid
552 // overflowing the buffer. We might truncate the output, but this 552 // overflowing the buffer. We might truncate the output, but this
553 // does not crash. 553 // does not crash.
554 EmbeddedVector<char, 4096> buffer; 554 char buffer[4096];
555 OS::VSNPrintF(buffer, format, args); 555 OS::VSNPrintF(buffer, sizeof(buffer), format, args);
556 OutputDebugStringA(buffer.start()); 556 OutputDebugStringA(buffer);
557 } else { 557 } else {
558 vfprintf(stream, format, args); 558 vfprintf(stream, format, args);
559 } 559 }
560 } 560 }
561 561
562 562
563 FILE* OS::FOpen(const char* path, const char* mode) { 563 FILE* OS::FOpen(const char* path, const char* mode) {
564 FILE* result; 564 FILE* result;
565 if (fopen_s(&result, path, mode) == 0) { 565 if (fopen_s(&result, path, mode) == 0) {
566 return result; 566 return result;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 VPrintError(format, args); 631 VPrintError(format, args);
632 va_end(args); 632 va_end(args);
633 } 633 }
634 634
635 635
636 void OS::VPrintError(const char* format, va_list args) { 636 void OS::VPrintError(const char* format, va_list args) {
637 VPrintHelper(stderr, format, args); 637 VPrintHelper(stderr, format, args);
638 } 638 }
639 639
640 640
641 int OS::SNPrintF(Vector<char> str, const char* format, ...) { 641 int OS::SNPrintF(char* str, int length, const char* format, ...) {
642 va_list args; 642 va_list args;
643 va_start(args, format); 643 va_start(args, format);
644 int result = VSNPrintF(str, format, args); 644 int result = VSNPrintF(str, length, format, args);
645 va_end(args); 645 va_end(args);
646 return result; 646 return result;
647 } 647 }
648 648
649 649
650 int OS::VSNPrintF(Vector<char> str, const char* format, va_list args) { 650 int OS::VSNPrintF(char* str, int length, const char* format, va_list args) {
651 int n = _vsnprintf_s(str.start(), str.length(), _TRUNCATE, format, args); 651 int n = _vsnprintf_s(str, length, _TRUNCATE, format, args);
652 // Make sure to zero-terminate the string if the output was 652 // Make sure to zero-terminate the string if the output was
653 // truncated or if there was an error. 653 // truncated or if there was an error.
654 if (n < 0 || n >= str.length()) { 654 if (n < 0 || n >= length) {
655 if (str.length() > 0) 655 if (length > 0)
656 str[str.length() - 1] = '\0'; 656 str[length - 1] = '\0';
657 return -1; 657 return -1;
658 } else { 658 } else {
659 return n; 659 return n;
660 } 660 }
661 } 661 }
662 662
663 663
664 char* OS::StrChr(char* str, int c) { 664 char* OS::StrChr(char* str, int c) {
665 return const_cast<char*>(strchr(str, c)); 665 return const_cast<char*>(strchr(str, c));
666 } 666 }
667 667
668 668
669 void OS::StrNCpy(Vector<char> dest, const char* src, size_t n) { 669 void OS::StrNCpy(char* dest, int length, const char* src, size_t n) {
670 // Use _TRUNCATE or strncpy_s crashes (by design) if buffer is too small. 670 // Use _TRUNCATE or strncpy_s crashes (by design) if buffer is too small.
671 size_t buffer_size = static_cast<size_t>(dest.length()); 671 size_t buffer_size = static_cast<size_t>(length);
672 if (n + 1 > buffer_size) // count for trailing '\0' 672 if (n + 1 > buffer_size) // count for trailing '\0'
673 n = _TRUNCATE; 673 n = _TRUNCATE;
674 int result = strncpy_s(dest.start(), dest.length(), src, n); 674 int result = strncpy_s(dest, length, src, n);
675 USE(result); 675 USE(result);
676 ASSERT(result == 0 || (n == _TRUNCATE && result == STRUNCATE)); 676 ASSERT(result == 0 || (n == _TRUNCATE && result == STRUNCATE));
677 } 677 }
678 678
679 679
680 #undef _TRUNCATE 680 #undef _TRUNCATE
681 #undef STRUNCATE 681 #undef STRUNCATE
682 682
683 683
684 // Get the system's page size used by VirtualAlloc() or the next power 684 // Get the system's page size used by VirtualAlloc() or the next power
(...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after
1335 1335
1336 Thread::Thread(const Options& options) 1336 Thread::Thread(const Options& options)
1337 : stack_size_(options.stack_size()), 1337 : stack_size_(options.stack_size()),
1338 start_semaphore_(NULL) { 1338 start_semaphore_(NULL) {
1339 data_ = new PlatformData(kNoThread); 1339 data_ = new PlatformData(kNoThread);
1340 set_name(options.name()); 1340 set_name(options.name());
1341 } 1341 }
1342 1342
1343 1343
1344 void Thread::set_name(const char* name) { 1344 void Thread::set_name(const char* name) {
1345 OS::StrNCpy(Vector<char>(name_, sizeof(name_)), name, strlen(name)); 1345 OS::StrNCpy(name_, sizeof(name_), name, strlen(name));
1346 name_[sizeof(name_) - 1] = '\0'; 1346 name_[sizeof(name_) - 1] = '\0';
1347 } 1347 }
1348 1348
1349 1349
1350 // Close our own handle for the thread. 1350 // Close our own handle for the thread.
1351 Thread::~Thread() { 1351 Thread::~Thread() {
1352 if (data_->thread_ != kNoThread) CloseHandle(data_->thread_); 1352 if (data_->thread_ != kNoThread) CloseHandle(data_->thread_);
1353 delete data_; 1353 delete data_;
1354 } 1354 }
1355 1355
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1401 ASSERT(result); 1401 ASSERT(result);
1402 } 1402 }
1403 1403
1404 1404
1405 1405
1406 void Thread::YieldCPU() { 1406 void Thread::YieldCPU() {
1407 Sleep(0); 1407 Sleep(0);
1408 } 1408 }
1409 1409
1410 } } // namespace v8::internal 1410 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/platform-solaris.cc ('k') | src/prettyprinter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698