- Timestamp:
- Aug 2, 2012 2:03:50 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kObjCache/kObjCache.c
r2616 r2617 129 129 static char g_szLine[KOBJCACHE_MAX_LINE_LEN + 16]; 130 130 131 /** How many times we've moved memory around. */ 132 static size_t g_cMemMoves = 0; 133 /** How much memory we've moved. */ 134 static size_t g_cbMemMoved = 0; 135 131 136 132 137 /******************************************************************************* … … 1205 1210 assert(pCppRd->offRead >= offStart); 1206 1211 1212 g_cMemMoves++; 1213 g_cbMemMoved += cbToMove + 1; 1207 1214 memmove(pszStart, pszStart + cbRemove, cbToMove + 1); 1208 1215 … … 1221 1228 if (offDelta) 1222 1229 { 1223 size_t cb Left= pCppRd->offRead - offStart - cchReplaced;1224 assert(cb Left<= pCppRd->offRead);1230 size_t cbToMove = pCppRd->offRead - offStart - cchReplaced; 1231 assert(cbToMove <= pCppRd->offRead); 1225 1232 1226 1233 if (cchReplacement > cchReplaced) … … 1228 1235 kOCCppRdGrowBuffer(pCppRd); 1229 1236 1237 g_cMemMoves++; 1238 g_cbMemMoved += cbToMove + 1; 1230 1239 memmove(pCppRd->pszBuf + offStart + cchReplacement, 1231 1240 pCppRd->pszBuf + offStart + cchReplaced, 1232 cb Left+ 1);1241 cbToMove + 1); 1233 1242 1234 1243 pCppRd->offRead += offDelta; … … 1247 1256 1248 1257 1258 static void kOCCppRdOptCommitEx(PKOCCPPRD pCppRd, size_t offCur) 1259 { 1260 pCppRd->cchOptimized = offCur; 1261 pCppRd->uOptLineNo = pCppRd->uCurLineNo; 1262 } 1263 1264 1265 static void kOCCppRdOptCommit(PKOCCPPRD pCppRd) 1266 { 1267 pCppRd->cchOptimized = pCppRd->offCur; 1268 pCppRd->uOptLineNo = pCppRd->uCurLineNo; 1269 } 1270 1271 1272 1249 1273 static char *kOCCppRdOptGetEol(PKOCCPPRD pCppRd, char *pszCur, size_t cbLeft) 1250 1274 { … … 1340 1364 pszCur += offDelta; 1341 1365 1342 pCppRd->cchOptimized = cchOptimized + cchLineDir; 1343 pCppRd->uOptLineNo = pCppRd->uCurLineNo; 1344 1366 kOCCppRdOptCommitEx(pCppRd, cchOptimized + cchLineDir); 1345 1367 /* pCppRd->offCur is adjusted by the replace call */ 1346 1368 } … … 1546 1568 pCppRd->uCurLineNo++; 1547 1569 if (!fEmptyLine) 1548 { 1549 pCppRd->cchOptimized = pCppRd->offCur; 1550 pCppRd->uOptLineNo = pCppRd->uCurLineNo; 1551 } 1570 kOCCppRdOptCommit(pCppRd); 1552 1571 else 1553 1572 pCppRd->cEmptyLines++; … … 2919 2938 * @param pszMsg The operation message for info/error messages. 2920 2939 * @param pszPipeName The pipe name if it is supposed to be named. (Windows only.) 2921 */ 2922 static void kOCEntryCreatePipe(PKOCENTRY pEntry, int *paFDs, const char *pszPipeName, const char *pszMsg) 2940 * @param fText Whether to read text mode or binary mode. 2941 */ 2942 static void kOCEntryCreatePipe(PKOCENTRY pEntry, int *paFDs, const char *pszPipeName, const char *pszMsg, int fText) 2923 2943 { 2924 2944 paFDs[0] = paFDs[1] = -1; … … 2942 2962 FatalDie("%s - _open_osfhandle failed: %d\n", pszMsg, strerror(errno)); 2943 2963 } 2944 else if ( _pipe(paFDs, 256*1024, _O_NOINHERIT | _O_BINARY) < 02945 && _pipe(paFDs, 0, _O_NOINHERIT | _O_BINARY) < 0)2964 else if ( _pipe(paFDs, 256*1024, _O_NOINHERIT | (fText ? _O_BINARY : _O_TEXT)) < 0 2965 && _pipe(paFDs, 0, _O_NOINHERIT | (fText ? _O_BINARY : _O_TEXT)) < 0) 2946 2966 #else 2947 2967 if (pipe(paFDs) < 0) … … 2972 2992 pid_t pid; 2973 2993 2974 kOCEntryCreatePipe(pEntry, fds, NULL, pszMsg );2994 kOCEntryCreatePipe(pEntry, fds, NULL, pszMsg, pEntry->fOptimizeCpp); 2975 2995 pid = kOCEntrySpawnChild(pEntry, &pEntry->New.cMsCpp, papszArgv, cArgv, -1, fds[1 /* write */], pszMsg); 2976 2996 … … 2996 3016 pid_t pid; 2997 3017 2998 kOCEntryCreatePipe(pEntry, fds, pEntry->pszNmPipeCompile, pszMsg );3018 kOCEntryCreatePipe(pEntry, fds, pEntry->pszNmPipeCompile, pszMsg, 0 /*fText*/); 2999 3019 pid = kOCEntrySpawnChild(pEntry, &pEntry->New.cMsCompile, papszArgv, cArgv, fds[0 /* read */], -1, pszMsg); 3000 3020 #ifdef __WIN__ … … 3030 3050 * The producer. 3031 3051 */ 3032 kOCEntryCreatePipe(pEntry, fds, NULL, pszMsg );3052 kOCEntryCreatePipe(pEntry, fds, NULL, pszMsg, pEntry->fOptimizeCpp); 3033 3053 pidConsumer = kOCEntrySpawnChild(pEntry, &pEntry->New.cMsCpp, papszProdArgv, cProdArgv, -1, fds[1 /* write */], pszMsg); 3034 3054 fdIn = fds[0 /* read */]; … … 3037 3057 * The consumer. 3038 3058 */ 3039 kOCEntryCreatePipe(pEntry, fds, pEntry->pszNmPipeCompile, pszMsg );3059 kOCEntryCreatePipe(pEntry, fds, pEntry->pszNmPipeCompile, pszMsg, 0 /*fText*/); 3040 3060 pidProducer = kOCEntrySpawnChild(pEntry, &pEntry->New.cMsCompile, papszConsArgv, cConsArgv, fds[0 /* read */], -1, pszMsg); 3041 3061 fdOut = fds[1 /* write */]; … … 5119 5139 kObjCacheUnlock(pCache); 5120 5140 kObjCacheDestroy(pCache); 5141 if (fOptimizePreprocessorOutput) 5142 { 5143 InfoMsg(1, "g_cbMemMoved=%#x (%d)\n", g_cbMemMoved, g_cbMemMoved); 5144 InfoMsg(1, "g_cMemMoves=%#x (%d)\n", g_cMemMoves, g_cMemMoves); 5145 } 5146 5121 5147 return 0; 5122 5148 }
Note:
See TracChangeset
for help on using the changeset viewer.