Parent Directory | Revision Log
Links to HEAD: | (view) (download) (as text) (annotate) |
Sticky Revision: |
Use std::atomic for CObject reference counter. Use atomic for in-heap detection TLS container. JIRA: OMDM-5
Use proper memory order for new pointer set initializaiton. JIRA: CXX-12960
Fixed TLS cleanup. JIRA CXX-12165
Move SEraseLastNewPtrMultiple under #ifndef NCBI_NO_THREADS. JIRA: CXX-12165
Prevent segfault on application exit. JIRA CXX-12165
Cleanup CObject new ptr storage in non-CThread Win32 threads too. JIRA: CXX-12165
Avoid premature destruction of CObject constructor tracking vector in ST mode. JIRA: CXX-10419
Avoid using static bad_alloc instance. JIRA: CXX-6006
Added 64-bit atomic counter where possible - currently GCC/ICC/MSVC on Interl x64. Moved non API CObject counter constant from header to cpp. Added comments. JIRA: CXX-5828
Use ERR_FATAL macro for correct no-return info. JIRA: CXX-5700
Replacing LOG_POST with ERR_POST in corelib. JIRA CXX-5433
Fixed usage of NCBI_PARAMs in corelib. JIRA CXX-65
Log stack trace on NULL pointer error in debug mode. JIRA CXX-4263
Reimplemented CSafeStaticPtr and CSafeStaticRef as CSafeStatic. JIRA CXX-4128
Inline internal method CObject::InitCounter(). JIRA: CXX-3540
Fixed assertion checks in TLS mode.
Removed obsolete commented code. JIRA: CXX-3350
Removed most static NCBI_PARAMs. JIRA CXX-65
Fix recursive object creation handling in single-threaded builds. JIRA: CXX-1808.
Added WIN32 TLS code. JIRA: CXX-1808
Allow recursive object creation. JIRA: CXX-1808
In-heap CObject detection via TLS variable. JIRA: CXX-1808
Print stack trace with critical error messages. JIRA: CXX-2824
Avoid warning.
Use more efficient direct type_info comparison. JIRA: CXX-492
Added CObjectCounterLocker::TransferLock() and updated CRef<>::Swap() to support MonitorObjectType(). JIRA: CXX-492
Added CObjectCounterLocker::MonitorObjectType(). JIRA: CXX-492
Removed constness from CObject::DeleteThis() as all of its implementations are meant to change the object. JIRA: CXX-1979
Introducing CWeakObject class. (JIRA: CXX-1758)
Fix compilation errors.
- Make possible for CObject-derived classes to be not deleted after removing last reference. - Fix for CWeakRef to allow CObjectEx to exist after last reference is removed. NOJIRA
Don't fill allocated memory by default on MSVC. JIRA CXX-364
Change CWeakRef<> and CWeakIRef<> to be completely policy-driven as CRef and CIRef siblings. JIRA: CXX-497
Introduce class CObjectEx and templates CWeakRef<> and CWeakIRef<> for weak referencing to objects. JIRA: CXX-497
Added pointer type information to null pointer exception.
Memory filling in CObject::operator new() now is optional.
New system of log and error posting slightly modified and beautified. Now it throws compile-time error if wrong error subcode is used in ERR_POST_X and LOG_POST_X macros. See comments to ERR_POST_X and LOG_POST_X for more details of their use. All error codes in corelib are moved to public header corelib/error_codes.hpp. JIRA: CXX-3
Created a set of macros for convenient way of structural error codes and unique subcodes (see ERR_POST_X, LOG_POST_X and related macros in ncbidiag.hpp). All corelib changed to use these macros. JIRA: CXX-3
Fixed svn properties in trunk/c++.
CVS $Log$ keyword clean-up: everything except "internal".
Throw null pointer exception with critical severity.
Moved GetErrorCodeString method into cpp
RemoveLastReference, DoDeleteThisObject: Ensure that both sides of == have the same signedness to ensure correct behavior under VisualAge.
Implemented templates CIRef and CIConstRef.
Fixed names of env. variables.
Added explicit environment variable name for params. Added default value caching flag to CParam constructor.
Replaced GetConfigXXX with CParam<>.
Fixed warning.
Allow allocation of CObjects from CObjectMemoryPool. Documented CObject counter bits.
DoDeleteThisObject() fails for objects not in heap.
Allow to set NCBI_ABORT_ON_NULL and NCBI_ABORT_ON_COBJECT_THROW via registry.
Relax check for ref counter to allow temporary references.
Renamed debug alloc functions to avoid name clash with system libraries. Changed memory filling constants.
Added include of ncbi_pch.hpp
CObject::InitCounter() -- ATTENTION: this code can cause UMR -- it's okay
Modified debug new/delete code for 64 bit builds.
Added code to debug memory allocation problems (currently commented out).
Avoid throwing exceptions from destructors. Display Fatal message in Debug mode and Critical message in Release mode.
Allow debug abort when: CObjectException is thrown - env var NCBI_ABORT_ON_COBJECT_THROW=[Yy1], CNullPointerException is thrown - env var NCBI_ABORT_ON_NULL=[Yy1]. Allow quit abort in debug mode and coredump in release mode: env var DIAG_SILENT_ABORT=[Yy1Nn0].
Moved atomic counter swap functions to separate file. Added CRef<>::AtomicResetFrom(), CRef<>::AtomicReleaseTo() methods.
Changed name of implementation for AddReferenceOverflow(). It is now CheckReferenceOverflow().
Added matching operator delete.
Added inplace operator new().
InitCounter: read m_Value directly rather than going through Get(), which would end up spinning forever if it came across NCBI_COUNTER_RESERVED_VALUE.
Added CObject::ThrowNullPointerException() to get around some inlining issues.
Renamed sm_Mutex -> sm_AtomicCounterMutex
Safe initialization of static mutexes
Remove virtual inheritance, fixed heap detection
renamed CNcbiException and its descendents
exceptions replaced by CNcbiException-type ones
minor change in debug dump
minor modification od DebugDump
Provide CAtomicCounter::sm_Mutex if necessary.
Use low-level atomic operations for reference counts
added DebugDump base class and function to CObject
DebugDump() moved into a separate class
added DebugDump function to CObject
more stack/heap tests
object on stack vs on heap - do it more accurately
CVS log moved to end of the file
Clarified InitCounter's treatment of statically allocated objects.
Test more accurately whether CObjects were created on the stack.
Typos corrected
Converted eCounterNotInHeap to TCounter(eCounterNotInHeap)
Minor cosmetics
Made "CObject" MT-safe + CObject::DoDeleteThisObject()
Fixed error check for case CObject constructor never called.
Fixed missing new[] and delete[] on MSVC.
Fixed detection of heap objects. Removed ECanDelete enum and related constructors. Disabled sync_with_stdio ad the beginning of AppMain.
Detected misuse of CObject constructors will be reported via ERR_POST and will not throw exception.
Added heuristic for detection of CObject allocation in heap.
Changed refernce counter to allow detection of more errors.
Added SetCanDelete() method to allow to change CObject 'in heap' status immediately after creation.
Removed unneeded THROWS declaration - they lead to encreased code size.
Added const version of CRef - CConstRef. CRef and CConstRef now accept classes inherited from CObject.
Simplified error check.
Fixed throws instructions.
Added CObject class as base for reference counted objects. Added CRef templace for reference to CObject descendant.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.
NCBI Systems Team">NCBI Systems Team | ViewVC Help |
Powered by ViewVC 1.1.20 |