| 974 | } |
| 975 | |
| 976 | BfCodeGenDirectoryData * BfCodeGen::GetDirCache(const StringImpl & cacheDir) |
| 977 | { |
| 978 | BfCodeGenDirectoryData* dirCache = NULL; |
| 979 | BfCodeGenDirectoryData** dirCachePtr = NULL; |
| 980 | if (mDirectoryCache.TryAdd(cacheDir, NULL, &dirCachePtr)) |
| 981 | { |
| 982 | dirCache = new BfCodeGenDirectoryData(); |
| 983 | *dirCachePtr = dirCache; |
| 984 | dirCache->mCodeGen = this; |
| 985 | dirCache->mDirectoryName = cacheDir; |
| 986 | if (!mDisableCacheReads) |
| 987 | dirCache->Read(); |
| 988 | } |
| 989 | else |
| 990 | { |
| 991 | dirCache = *dirCachePtr; |
| 992 | } |
| 993 | return dirCache; |
| 994 | } |
| 995 | |
| 996 | void BfCodeGen::Cancel() |
| 997 | { |