You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by am...@apache.org on 2007/03/27 21:17:02 UTC

svn commit: r523039 - in /xerces/c/branches/xerces-2.7/src/xercesc: internal/XMLReader.cpp internal/XMLReader.hpp internal/XMLScanner.cpp util/XMLString.hpp

Author: amassari
Date: Tue Mar 27 12:17:01 2007
New Revision: 523039

URL: http://svn.apache.org/viewvc?view=rev&rev=523039
Log:
Performance improvements

Modified:
    xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLReader.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLReader.hpp
    xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLScanner.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/util/XMLString.hpp

Modified: xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLReader.cpp
URL: http://svn.apache.org/viewvc/xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLReader.cpp?view=diff&rev=523039&r1=523038&r2=523039
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLReader.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLReader.cpp Tue Mar 27 12:17:01 2007
@@ -1120,7 +1120,7 @@
         //  dirty comparison straight to its buffer with no requirement to unget
         //  if it fails.
         //
-        if (XMLString::compareNString(&fCharBuf[fCharIndex], toSkip, srcLen))
+        if (memcmp(&fCharBuf[fCharIndex], toSkip, srcLen*sizeof(XMLCh)))
             return false;
 
         //
@@ -1136,7 +1136,7 @@
             if (charsLeft == 0)
                 return false; // error situation
         }
-        if (XMLString::compareNString(&fCharBuf[fCharIndex], toSkip, charsLeft))
+        if (memcmp(&fCharBuf[fCharIndex], toSkip, charsLeft*sizeof(XMLCh)))
             return false;
 
         fCharIndex += charsLeft;
@@ -1151,7 +1151,7 @@
                 return false; // error situation
             if (charsLeft > remainingLen)
                 charsLeft = remainingLen;
-            if (XMLString::compareNString(&fCharBuf[fCharIndex], toSkip+offset, charsLeft))
+            if (memcmp(&fCharBuf[fCharIndex], toSkip+offset, charsLeft*sizeof(XMLCh)))
                 return false;
             offset += charsLeft;
             remainingLen -= charsLeft;
@@ -1205,7 +1205,7 @@
     //  dirty comparison straight to its buffer with no requirement to unget
     //  if it fails.
     //
-    if (XMLString::compareNString(&fCharBuf[fCharIndex], toPeek, srcLen))
+    if (memcmp(&fCharBuf[fCharIndex], toPeek, srcLen*sizeof(XMLCh)))
         return false;
 
     return true;
@@ -1848,8 +1848,6 @@
     {
         fCurCol++;
     }
-
-    return;
 }
 
 XERCES_CPP_NAMESPACE_END

Modified: xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLReader.hpp
URL: http://svn.apache.org/viewvc/xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLReader.hpp?view=diff&rev=523039&r1=523038&r2=523039
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLReader.hpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLReader.hpp Tue Mar 27 12:17:01 2007
@@ -770,7 +770,7 @@
     //  normal char get method in regards to newline normalization, though
     //  its not as complicated as the actual character getting method's.
     //
-    if ((chGotten == chCR || ((chGotten == chNEL || chGotten == chLineSeparator) && fNEL))
+    if ((chGotten == chCR || (fNEL && (chGotten == chNEL || chGotten == chLineSeparator)))
         && (fSource == Source_External))
         chGotten = chLF;
 

Modified: xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLScanner.cpp
URL: http://svn.apache.org/viewvc/xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLScanner.cpp?view=diff&rev=523039&r1=523038&r2=523039
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLScanner.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/internal/XMLScanner.cpp Tue Mar 27 12:17:01 2007
@@ -1945,6 +1945,11 @@
     //  in order to catch the scenario where the current entity ended at
     //  the > of some markup.
     XMLCh nextCh;
+
+    // avoid setting up the ThrowEOEJanitor if we know that we have data in the current reader
+    if(fReaderMgr.getCurrentReader() && fReaderMgr.getCurrentReader()->charsLeftInBuffer()>0)
+        nextCh = fReaderMgr.peekNextChar();
+    else
     {
         ThrowEOEJanitor janMgr(&fReaderMgr, true);
         nextCh = fReaderMgr.peekNextChar();

Modified: xerces/c/branches/xerces-2.7/src/xercesc/util/XMLString.hpp
URL: http://svn.apache.org/viewvc/xerces/c/branches/xerces-2.7/src/xercesc/util/XMLString.hpp?view=diff&rev=523039&r1=523038&r2=523039
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/util/XMLString.hpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/util/XMLString.hpp Tue Mar 27 12:17:01 2007
@@ -1587,14 +1587,10 @@
         return 0;
 
     const XMLCh* curCh = tohash;
-    unsigned int hashVal = (unsigned int)(*curCh);
-    curCh++;
+    unsigned int hashVal = (unsigned int)(*curCh++);
 
     while (*curCh)
-    {
-        hashVal = (hashVal * 38) + (hashVal >> 24) + (unsigned int)(*curCh);
-        curCh++;
-    }
+        hashVal = (hashVal * 38) + (hashVal >> 24) + (unsigned int)(*curCh++);
 
     // Divide by modulus
     return hashVal % hashModulus;



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org