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

Side by Side Diff: experimental/LightSymbolsUtil/lightsymbols/lightsymbols.cc

Issue 1512753006: Remove unused CallStacker (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years 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 | « experimental/LightSymbolsUtil/lightsymbols/lightsymbols.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #include "lightsymbols.h"
2
3 LightSymbol::PLightSymbol LightSymbol::lsFrames[1000];
4 HANDLE LightSymbol::handleFrames[1000];
5 SZ* LightSymbol::fileNames;
6 bool LightSymbol::busted = false;
7
8
9 LightSymbol::LightSymbol(const char* sym, int fileId, int lineNumber) {
10 while (busted) {
11 busted = busted;
12 }
13 this->sym = sym;
14 this->fileId = fileId;
15 this->lineNumber = lineNumber;
16
17 LightSymbol** container = getThreadFrameContainer();
18
19 parentFrame = *container;
20 *container = this; // shortcut for get+set current frame
21 }
22
23 LightSymbol::~LightSymbol() {
24
25 // assert if (GetCurrentFrame() != this) {
26
27 SetCurrentFrame(parentFrame);
28 }
29
30 bool LightSymbol::GetCallStack(char* sz, int len, const char* separator) {
31 LightSymbol* ls = GetCurrentFrame();
32 if (ls == 0) {
33 return false;
34 } else {
35 return ls->GetCallStackCore(sz, len, separator);
36 }
37 }
38
39 LightSymbol** LightSymbol::getThreadFrameContainer() {
40 //pthread_t t = pthread_self();
41 HANDLE h = (HANDLE)GetCurrentThreadId(); // f, keep handle so I don't have to recompie tyhe whole app; update toi DWORD one I really need changes in header fi le
42 int i = 0;
43 while (handleFrames[i] != h && handleFrames[i] != NULL && i < 1000 - 1) {
44 i++;
45 }
46 if (handleFrames[i] == h) {
47 return &lsFrames[i];
48 }
49 handleFrames[i] = h;
50 return &lsFrames[i];
51 }
52
53 bool LightSymbol::GetCallStackCore(char* sz, int len, const char* separator) con st {
54 if (busted) {
55 return false;
56 }
57 if (fileNames == NULL) { // f multithreading synchr
58 FILE* log = fopen("d:\\edisonn\\log.txt", "wt");
59
60 if (log) { fprintf(log, "build\n");fflush(log); }
61
62 char szLine[10000];
63 FILE* file = fopen(getenv(LIGHT_SYMBOLS_FILE), "rt");
64 if (file == NULL) {
65 busted = true;
66 return false;
67 }
68
69 const char* trimed;
70
71 // count number of lines
72 int id;
73 int entries = 0;
74 while (true) {
75 id = -1;
76 if (fscanf(file, "%i", &id) == 0) break;
77 if (id == -1) break;
78 if (entries <= id + 1) {
79 entries = id + 1;
80 }
81 *szLine = '\0';
82 fgets(szLine, 10000, file);
83 trimed = trim(szLine);
84 }
85
86 fclose(file);
87 file = fopen(getenv(LIGHT_SYMBOLS_FILE), "rt");
88 if (file == NULL) {
89 busted = true;
90 return false; // f this
91 }
92
93 if (log) { fprintf(log, "entries: %i\n", entries);fflush(log); }
94
95 SZ* __fileNames = new SZ[entries];
96
97 while (true) {
98 id = -1;
99 if (fscanf(file, "%i", &id) == 0) break;
100 if (id == -1) break;
101 *szLine = '\0';
102 fgets(szLine, 10000, file);
103 trimed = trim(szLine);
104
105 if (log) { fprintf(log, "%i, %s", id, trimed); }
106
107 // ass u me the file is correct
108
109 __fileNames[id] = new char[strlen(trimed) + 1];
110 if (log) { fprintf(log, " - ");fflush(log); }
111 strcpy(__fileNames[id], trimed);
112 if (log) { fprintf(log, " _ \n");fflush(log); }
113 }
114 fclose(file);
115 fileNames = __fileNames;
116 if (log) { fclose(log); }
117 }
118
119 const LightSymbol* ls = this;
120 char* szOut = sz;
121 // f security
122 while (ls != NULL && len > 1000) {
123 sprintf(szOut, "%s, %s:%i%s", ls->sym, fileNames[ls->fileId], ls->lineNumber , separator);
124 while (*szOut && len > 0) {
125 szOut++;
126 len--;
127 }
128 ls = ls->parentFrame;
129 }
130
131 int more = 0;
132 while (ls != NULL) {
133 ls = ls->parentFrame;
134 }
135
136 if (more > 0) {
137 sprintf(szOut, " ... %i more frames. allocate more memory!", more);
138 }
139
140 return true;
141 }
142
143 LightSymbol* LightSymbol::GetCurrentFrame() {
144 return *getThreadFrameContainer();
145 }
146
147 void LightSymbol::SetCurrentFrame(LightSymbol* ls) {
148 *getThreadFrameContainer() = ls;
149 }
150
151 const char* LightSymbol::trim(char* sz) {
152 if (sz == NULL) return NULL;
153
154 while (*sz == ' ' || *sz == '\t' || *sz == '\r' || *sz == '\n' || *sz == ',')
155 sz++;
156
157 if (*sz == '\0') return sz;
158
159 int len = strlen(sz);
160 char* start = sz;
161 sz = sz + (len - 1);
162
163 while (sz >= start && (*sz == ' ' || *sz == '\t' || *sz == '\r' || *sz == '\n' || *sz == ',')) {
164 *sz = '\0';
165 sz--;
166 }
167
168 return start;
169 }
OLDNEW
« no previous file with comments | « experimental/LightSymbolsUtil/lightsymbols/lightsymbols.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698