Changeset 210c737 for libcfa/src
- Timestamp:
- Aug 1, 2023, 10:26:10 PM (2 years ago)
- Branches:
- master
- Children:
- 2cb15b0, d5f5eb7
- Parents:
- 4852232 (diff), afb3d68 (diff)
 Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
 Use the(diff)links above to see all the changes relative to each parent.
- Location:
- libcfa/src
- Files:
- 
      - 2 edited
 
 - 
          
  heap.cfa (modified) (8 diffs)
- 
          
  iostream.cfa (modified) (2 diffs)
 
Legend:
- Unmodified
- Added
- Removed
- 
      libcfa/src/heap.cfar4852232 r210c737 10 10 // Created On : Tue Dec 19 21:58:35 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Dec 30 08:37:37 202213 // Update Count : 16 0512 // Last Modified On : Fri Jul 28 18:27:53 2023 13 // Update Count : 1612 14 14 // 15 15 … … 369 369 static __thread size_t PAD1 CALIGN TLSMODEL __attribute__(( unused )); // protect false sharing 370 370 static __thread Heap * heapManager CALIGN TLSMODEL; 371 static __thread bool heapManagerBootFlag CALIGN TLSMODEL = false; 371 372 static __thread size_t PAD2 CALIGN TLSMODEL __attribute__(( unused )); // protect further false sharing 372 373 … … 488 489 allocUnfreed = 0; 489 490 #endif // __CFA_DEBUG__ 491 heapManagerBootFlag = true; 490 492 } // with 491 493 } // if … … 499 501 500 502 lock( heapMaster.mgrLock ); // protect heapMaster counters 503 504 assert( ! heapManagerBootFlag ); 501 505 502 506 // get storage for heap manager … … 514 518 515 519 void heapManagerDtor() libcfa_public { 520 if ( unlikely( ! heapManagerBootFlag ) ) return; // thread never used ? 521 516 522 lock( heapMaster.mgrLock ); 517 523 … … 526 532 // Do not set heapManager to NULL because it is used after Cforall is shutdown but before the program shuts down. 527 533 534 heapManagerBootFlag = false; 528 535 unlock( heapMaster.mgrLock ); 529 536 } // heapManagerDtor … … 535 542 extern int cfa_main_returned; // from interpose.cfa 536 543 extern "C" { 537 void memory_startup( void ) { 544 void memory_startup( void ) { // singleton => called once at start of program 538 545 if ( ! heapMasterBootFlag ) heapManagerCtor(); // sanity check 539 546 } // memory_startup … … 895 902 #endif // __STATISTICS__ 896 903 904 // Uncomment to get allocation addresses for a 0-sized allocation rather than a null pointer. 905 //#define __NONNULL_0_ALLOC__ 906 #if ! defined( __NONNULL_0_ALLOC__ ) 907 #define __NULL_0_ALLOC__ unlikely( size == 0 ) || /* 0 BYTE ALLOCATION RETURNS NULL POINTER */ 908 #else 909 #define __NULL_0_ALLOC__ 910 #endif // __NONNULL_0_ALLOC__ 911 897 912 #define PROLOG( counter, ... ) \ 898 913 BOOT_HEAP_MANAGER; \ 899 if ( unlikely( size == 0 ) || /* 0 BYTE ALLOCATION RETURNS NULL POINTER */ \ 914 if ( \ 915 __NULL_0_ALLOC__ \ 900 916 unlikely( size > ULONG_MAX - sizeof(Heap.Storage) ) ) { /* error check */ \ 901 917 STAT_0_CNT( counter ); \ 
- 
      libcfa/src/iostream.cfar4852232 r210c737 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 18 13:56:01202313 // Update Count : 140 312 // Last Modified On : Sun Jul 30 23:01:00 2023 13 // Update Count : 1406 14 14 // 15 15 … … 230 230 ostype & ?|?( ostype & os, const char s[] ) { 231 231 enum { Open = 1, Close, OpenClose }; 232 static const unsigned char mask[256] @= { 232 static const unsigned char mask[256] @= { // 256 covers all Latin-1 characters 233 233 // opening delimiters, no space after 234 234 ['('] : Open, ['['] : Open, ['{'] : Open, 
  Note:
 See   TracChangeset
 for help on using the changeset viewer.
  