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]