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

Side by Side Diff: third_party/tcmalloc/chromium/src/internal_logging.cc

Issue 7050034: Merge google-perftools r109 (the current contents of third_party/tcmalloc/vendor) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 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
OLDNEW
1 // Copyright (c) 2005, Google Inc. 1 // Copyright (c) 2005, Google Inc.
2 // All rights reserved. 2 // All rights reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // * Redistributions of source code must retain the above copyright 8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer. 9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above 10 // * Redistributions in binary form must reproduce the above
(...skipping 13 matching lines...) Expand all
24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 29
30 // --- 30 // ---
31 // Sanjay Ghemawat <opensource@google.com> 31 // Sanjay Ghemawat <opensource@google.com>
32 32
33 #include <config.h> 33 #include <config.h>
34 #include <stdio.h> 34 #include "internal_logging.h"
35 #include <stdarg.h> 35 #include <stdarg.h> // for va_end, va_start
36 #include <stdio.h> // for vsnprintf, va_list, etc
37 #include <stdlib.h> // for abort
38 #include <string.h> // for strlen, memcpy
36 #ifdef HAVE_UNISTD_H 39 #ifdef HAVE_UNISTD_H
37 #include <unistd.h> // for write() 40 #include <unistd.h> // for write()
38 #endif 41 #endif
39 #include <string.h> 42
40 #include <google/malloc_extension.h> 43 #include <google/malloc_extension.h>
41 #include "internal_logging.h" 44 #include "base/logging.h" // for perftools_vsnprintf
45 #include "base/spinlock.h" // for SpinLockHolder, SpinLock
42 46
43 static const int kLogBufSize = 800; 47 static const int kLogBufSize = 800;
44 48
45 void TCMalloc_MESSAGE(const char* filename, 49 void TCMalloc_MESSAGE(const char* filename,
46 int line_number, 50 int line_number,
47 const char* format, ...) { 51 const char* format, ...) {
48 char buf[kLogBufSize]; 52 char buf[kLogBufSize];
49 const int n = snprintf(buf, sizeof(buf), "%s:%d] ", filename, line_number); 53 const int n = snprintf(buf, sizeof(buf), "%s:%d] ", filename, line_number);
50 if (n < kLogBufSize) { 54 if (n < kLogBufSize) {
51 va_list ap; 55 va_list ap;
52 va_start(ap, format); 56 va_start(ap, format);
53 vsnprintf(buf + n, kLogBufSize - n, format, ap); 57 perftools_vsnprintf(buf + n, kLogBufSize - n, format, ap);
54 va_end(ap); 58 va_end(ap);
55 } 59 }
56 write(STDERR_FILENO, buf, strlen(buf)); 60 write(STDERR_FILENO, buf, strlen(buf));
57 } 61 }
58 62
59 static const int kStatsBufferSize = 16 << 10; 63 static const int kStatsBufferSize = 16 << 10;
60 static char stats_buffer[kStatsBufferSize] = { 0 }; 64 static char stats_buffer[kStatsBufferSize] = { 0 };
61 65
62 static void TCMalloc_CRASH_internal(bool dump_stats, 66 static void TCMalloc_CRASH_internal(bool dump_stats,
63 const char* filename, 67 const char* filename,
64 int line_number, 68 int line_number,
65 const char* format, va_list ap) { 69 const char* format, va_list ap) {
66 char buf[kLogBufSize]; 70 char buf[kLogBufSize];
67 const int n = snprintf(buf, sizeof(buf), "%s:%d] ", filename, line_number); 71 const int n = snprintf(buf, sizeof(buf), "%s:%d] ", filename, line_number);
68 if (n < kLogBufSize) { 72 if (n < kLogBufSize) {
69 vsnprintf(buf + n, kLogBufSize - n, format, ap); 73 perftools_vsnprintf(buf + n, kLogBufSize - n, format, ap);
70 } 74 }
71 write(STDERR_FILENO, buf, strlen(buf)); 75 write(STDERR_FILENO, buf, strlen(buf));
72 if (dump_stats) { 76 if (dump_stats) {
73 MallocExtension::instance()->GetStats(stats_buffer, kStatsBufferSize); 77 MallocExtension::instance()->GetStats(stats_buffer, kStatsBufferSize);
74 write(STDERR_FILENO, stats_buffer, strlen(stats_buffer)); 78 write(STDERR_FILENO, stats_buffer, strlen(stats_buffer));
75 } 79 }
76 80
77 abort(); 81 abort();
78 } 82 }
79 83
(...skipping 12 matching lines...) Expand all
92 va_list ap; 96 va_list ap;
93 va_start(ap, format); 97 va_start(ap, format);
94 TCMalloc_CRASH_internal(dump_stats_, file_, line_, format, ap); 98 TCMalloc_CRASH_internal(dump_stats_, file_, line_, format, ap);
95 va_end(ap); 99 va_end(ap);
96 } 100 }
97 101
98 void TCMalloc_Printer::printf(const char* format, ...) { 102 void TCMalloc_Printer::printf(const char* format, ...) {
99 if (left_ > 0) { 103 if (left_ > 0) {
100 va_list ap; 104 va_list ap;
101 va_start(ap, format); 105 va_start(ap, format);
102 const int r = vsnprintf(buf_, left_, format, ap); 106 const int r = perftools_vsnprintf(buf_, left_, format, ap);
103 va_end(ap); 107 va_end(ap);
104 if (r < 0) { 108 if (r < 0) {
105 // Perhaps an old glibc that returns -1 on truncation? 109 // Perhaps an old glibc that returns -1 on truncation?
106 left_ = 0; 110 left_ = 0;
107 } else if (r > left_) { 111 } else if (r > left_) {
108 // Truncation 112 // Truncation
109 left_ = 0; 113 left_ = 0;
110 } else { 114 } else {
111 left_ -= r; 115 left_ -= r;
112 buf_ += r; 116 buf_ += r;
113 } 117 }
114 } 118 }
115 } 119 }
OLDNEW
« no previous file with comments | « third_party/tcmalloc/chromium/src/internal_logging.h ('k') | third_party/tcmalloc/chromium/src/linked_list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698