| 161 | } |
| 162 | |
| 163 | ProfileProcId* DbgProfiler::Get(const StringImpl& str, bool* outIsNew) |
| 164 | { |
| 165 | ProfileProdIdEntry checkEntry; |
| 166 | checkEntry.mProcId = (ProfileProcId*)&str; |
| 167 | |
| 168 | ProfileProdIdEntry* entryPtr; |
| 169 | if (mUniqueProcSet.TryAdd(checkEntry, &entryPtr)) |
| 170 | { |
| 171 | auto procId = new ProfileProcId(); |
| 172 | procId->mProcName = str; |
| 173 | procId->mIsIdle = false; |
| 174 | entryPtr->mProcId = procId; |
| 175 | if (outIsNew != NULL) |
| 176 | *outIsNew = true; |
| 177 | return procId; |
| 178 | } |
| 179 | else |
| 180 | { |
| 181 | if (outIsNew != NULL) |
| 182 | *outIsNew = false; |
| 183 | return entryPtr->mProcId; |
| 184 | } |
| 185 | } |
| 186 | |
| 187 | void DbgProfiler::ThreadProc() |
| 188 | { |
no test coverage detected