Browse Source

minor changes

rename a couple of local vars for clarity
common up a couple of memcpy's for efficiency

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
Jake Smith 13 years ago
parent
commit
46bbe57f17
1 changed files with 38 additions and 33 deletions
  1. 38 33
      system/jhtree/ctfile.cpp

+ 38 - 33
system/jhtree/ctfile.cpp

@@ -627,79 +627,84 @@ void CJHTreeNode::unpack(const void *node, bool needCopy)
                 bool handleVariable = isVariable && isLeaf();
                 KEYRECSIZE_T workRecLen;
                 MemoryBuffer keyBufMb;
-                const char *s = keys;
-                char *t;
+                const char *source = keys;
+                char *target;
                 // do first row
                 if (handleVariable) {
-                    memcpy(&workRecLen, s, sizeof(workRecLen));
+                    memcpy(&workRecLen, source, sizeof(workRecLen));
                     _WINREV(workRecLen);
-                    t = (char *)keyBufMb.reserve(sizeof(workRecLen)+sizeof(offset_t)+workRecLen);
-                    memcpy(t, s, sizeof(workRecLen));
-                    s += sizeof(workRecLen);
-                    t += sizeof(workRecLen);
+                    size32_t tmpSz = sizeof(workRecLen) + sizeof(offset_t);
+                    target = (char *)keyBufMb.reserve(tmpSz+workRecLen);
+                    memcpy(target, source, tmpSz);
+                    source += tmpSz;
+                    target += tmpSz;
                 }
                 else {
-                    t = (char *)keyBufMb.reserveTruncate(hdr.numKeys * keyRecLen);
+                    target = (char *)keyBufMb.reserveTruncate(hdr.numKeys * keyRecLen);
                     workRecLen = keyRecLen - sizeof(offset_t);
+                    memcpy(target, source, sizeof(offset_t));
+                    source += sizeof(offset_t);
+                    target += sizeof(offset_t);
                 }
-                memcpy(t, s, sizeof(offset_t));
-                s += sizeof(offset_t);
-                t += sizeof(offset_t);
 
                 // this is where next row gets data from
                 const char *prev, *next;
                 unsigned prevOffset;
                 if (handleVariable)
-                    prevOffset = t-((char *)keyBufMb.bufferBase());
+                    prevOffset = target-((char *)keyBufMb.bufferBase());
                 else
-                    next = t;
+                    next = target;
 
-                unsigned char pack1 = *s++;
+                unsigned char pack1 = *source++;
 #ifdef _DEBUG
                 assertex(0==pack1); // 1st time will be always be 0
 #endif
                 KEYRECSIZE_T left = workRecLen;
                 while (left--) {
-                    *t = *s;
-                    s++;
-                    t++;
+                    *target = *source;
+                    source++;
+                    target++;
                 }
                 // do subsequent rows
                 for (i = 1; i < hdr.numKeys; i++) {
                     if (handleVariable) {
-                        memcpy(&workRecLen, s, sizeof(workRecLen));
+                        memcpy(&workRecLen, source, sizeof(workRecLen));
                         _WINREV(workRecLen);
-                        t = (char *)keyBufMb.reserve(sizeof(workRecLen)+sizeof(offset_t)+workRecLen);
-                        memcpy(t, s, sizeof(workRecLen));
-                        t += sizeof(workRecLen);
-                        s += sizeof(workRecLen);
+                        target = (char *)keyBufMb.reserve(sizeof(workRecLen)+sizeof(offset_t)+workRecLen);
+                        size32_t tmpSz = sizeof(workRecLen)+sizeof(offset_t);
+                        memcpy(target, source, tmpSz);
+                        target += tmpSz;
+                        source += tmpSz;
                     }
-                    memcpy(t, s, sizeof(offset_t));
-                    s += sizeof(offset_t);
-                    t += sizeof(offset_t);
-                    pack1 = *s++;
+                    else
+                    {
+                        memcpy(target, source, sizeof(offset_t));
+                        source += sizeof(offset_t);
+                        target += sizeof(offset_t);
+                    }
+                    pack1 = *source++;
 #ifdef _DEBUG
                     assertex(pack1<=workRecLen);            
 #endif
                     if (handleVariable) {
                         prev = ((char *)keyBufMb.bufferBase())+prevOffset;
                         // for next
-                        prevOffset = t-((char *)keyBufMb.bufferBase());
+                        prevOffset = target-((char *)keyBufMb.bufferBase());
                     }
                     else {
                         prev = next;
-                        next = t;
+                        next = target;
                     }
                     left = workRecLen - pack1;
                     while (pack1--) {
-                        *t = *prev;
+                        *target = *prev;
                         prev++;
-                        t++;
+                        target++;
                     }
                     while (left--) {
-                        *t = *s;
-                        s++;
-                        t++;
+                        *target = *source;
+                        source++;
+                        target++;
                     }
                 }
                 expandedSize = keyBufMb.length();