Author: amassari
Date: Fri Mar  7 04:31:36 2008
New Revision: 634639

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

Modified:
    xerces/c/trunk/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.hpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMElementImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.hpp

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp?rev=634639&r1=634638&r2=634639&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp Fri Mar  7 
04:31:36 2008
@@ -36,12 +36,11 @@
 {
     fDoc = (DOMDocumentImpl*)doc;
 
-    fDataBuf = fDoc->popBuffer(XMLString::stringLen(dat)+1);
+    XMLSize_t len=XMLString::stringLen(dat);
+    fDataBuf = fDoc->popBuffer(len+1);
     if (!fDataBuf)
-        fDataBuf = new (fDoc) DOMBuffer(fDoc, dat);
-    else
-        fDataBuf->set(dat);
-
+        fDataBuf = new (fDoc) DOMBuffer(fDoc, len+15);
+    fDataBuf->set(dat, len);
 }
 
 
@@ -51,12 +50,11 @@
 {
     fDoc = (DOMDocumentImpl*)other.fDoc;
 
-    fDataBuf = fDoc->popBuffer(other.getLength()+1);
+    XMLSize_t len=other.getLength();
+    fDataBuf = fDoc->popBuffer(len+1);
     if (!fDataBuf)
-        fDataBuf = new (fDoc) DOMBuffer(fDoc, other.fDataBuf->getRawBuffer());
-    else
-        fDataBuf->set(other.fDataBuf->getRawBuffer());
-
+        fDataBuf = new (fDoc) DOMBuffer(fDoc, len+15);
+    fDataBuf->set(other.fDataBuf->getRawBuffer(), len);
 }
 
 

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.hpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.hpp?rev=634639&r1=634638&r2=634639&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.hpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.hpp Fri Mar  7 04:31:36 
2008
@@ -368,6 +368,12 @@
     return p;
 }
 
+inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER 
DOMDocumentImpl *doc)
+{
+    void* p = doc->allocate(amt);
+    return p;
+}
+
 inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER 
DOMDocument *doc)
 {
     XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager* 
mgr=(XERCES_CPP_NAMESPACE_QUALIFIER 
DOMMemoryManager*)doc->getFeature(XERCES_CPP_NAMESPACE_QUALIFIER 
XMLUni::fgXercescInterfaceDOMMemoryManager,0);
@@ -388,6 +394,11 @@
     return;
 }
 inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER 
DOMDocument * /*doc*/, XERCES_CPP_NAMESPACE_QUALIFIER 
DOMMemoryManager::NodeObjectType /*type*/)
+{
+    return;
+}
+
+inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER 
DOMDocumentImpl * /*doc*/)
 {
     return;
 }

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMElementImpl.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMElementImpl.cpp?rev=634639&r1=634638&r2=634639&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMElementImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMElementImpl.cpp Fri Mar  7 04:31:36 
2008
@@ -49,11 +49,11 @@
     fName = docImpl->getPooledString(eName);
     setupDefaultAttributes();
     if (!fDefaultAttributes) {
-        fDefaultAttributes = new (getOwnerDocument()) DOMAttrMapImpl(this);
-        fAttributes = new (getOwnerDocument()) DOMAttrMapImpl(this);
+        fDefaultAttributes = new (docImpl) DOMAttrMapImpl(this);
+        fAttributes = new (docImpl) DOMAttrMapImpl(this);
     }
     else {
-        fAttributes = new (getOwnerDocument()) DOMAttrMapImpl(this, 
fDefaultAttributes);
+        fAttributes = new (docImpl) DOMAttrMapImpl(this, fDefaultAttributes);
     }
 }
 

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.cpp?rev=634639&r1=634638&r2=634639&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.cpp Fri Mar  7 04:31:36 
2008
@@ -121,25 +121,6 @@
     fBuffer[0] = XMLCh(0);
 }
 
-DOMBuffer::DOMBuffer(DOMDocumentImpl *doc, const XMLCh* string) :
-    fBuffer(0)
-    , fIndex(0)
-    , fCapacity(0)
-    , fDoc(doc)
-{
-    XMLSize_t actualCount = XMLString::stringLen(string);
-    fCapacity = actualCount + 15;
-
-    // Buffer is one larger than capacity, to allow for zero term
-    fBuffer = (XMLCh*) doc->allocate((fCapacity+1)*sizeof(XMLCh));
-
-    memcpy(fBuffer, string, actualCount * sizeof(XMLCh));
-    fIndex = actualCount;
-
-    // Keep it null terminated
-    fBuffer[fIndex] = 0;
-}
-
 // ---------------------------------------------------------------------------
 //  DOMBuffer: Buffer management
 // ---------------------------------------------------------------------------

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.hpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.hpp?rev=634639&r1=634638&r2=634639&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.hpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.hpp Fri Mar  7 04:31:36 
2008
@@ -80,8 +80,6 @@
     // -----------------------------------------------------------------------
     DOMBuffer(DOMDocumentImpl *doc, XMLSize_t capacity = 31);
 
-    DOMBuffer(DOMDocumentImpl *doc, const XMLCh* string);
-
     ~DOMBuffer()
     {
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to