X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2bd5bbc948bd22c5a0edde9e35e4995c919f593b..794bcc2dea743ac907b839f54e451847c9ea4b72:/src/common/memory.cpp diff --git a/src/common/memory.cpp b/src/common/memory.cpp index 0f51b89b6d..a67263d476 100644 --- a/src/common/memory.cpp +++ b/src/common/memory.cpp @@ -35,7 +35,7 @@ #include "wx/app.h" #endif -#include +#include "wx/log.h" #include #include "wx/ioswrap.h" @@ -46,7 +46,8 @@ #include #endif -#if !defined(__WATCOMC__) && !defined(__VMS__) && !defined( __MWERKS__ ) && !defined(__SALFORDC__) +#if !defined(__WATCOMC__) && !(defined(__VMS__) && ( __VMS_VER < 70000000 ) )\ + && !defined( __MWERKS__ ) && !defined(__SALFORDC__) #include #endif @@ -472,6 +473,11 @@ int wxDebugContext::debugLevel = 1; bool wxDebugContext::debugOn = TRUE; wxMemStruct *wxDebugContext::checkPoint = NULL; +// For faster alignment calculation +static wxMarkerType markerCalc[2]; +int wxDebugContext::m_balign = (int)((char *)&markerCalc[1] - (char*)&markerCalc[0]); +int wxDebugContext::m_balignmask = (int)((char *)&markerCalc[1] - (char*)&markerCalc[0]) - 1; + wxDebugContext::wxDebugContext(void) { // m_streamBuf = new wxDebugStreamBuf; @@ -595,6 +601,9 @@ char * wxDebugContext::StartPos (const char * caller) I don't know how portable this stuff is, but it seems to work for me at the moment. It would be real nice if I knew more about this! + + // Note: this function is now obsolete (along with CalcAlignment) + // because the calculations are done statically, for greater speed. */ size_t wxDebugContext::GetPadding (const size_t size) { @@ -602,11 +611,22 @@ size_t wxDebugContext::GetPadding (const size_t size) return (pad) ? sizeof(wxMarkerType) - pad : 0; } - - size_t wxDebugContext::PaddedSize (const size_t size) { + // Added by Terry Farnham to replace + // slow GetPadding call. + int padb; + + padb = size & m_balignmask; + if(padb) + return(size + m_balign - padb); + else + return(size); + +// Old (slow) code +#if 0 return size + GetPadding (size); +#endif } /* @@ -1003,8 +1023,6 @@ void operator delete (void * buf) #if defined(__VISUALC__) && (__VISUALC__ >= 1200) void operator delete(void* pData, wxChar* /* fileName */, int /* lineNum */) { -// ::operator delete(pData); - // JACS 21/11/1998: surely we need to call wxDebugFree? wxDebugFree(pData, FALSE); } // New operator 21/11/1998