Changes in / [ed12051:e1056381]
- Files:
-
- 4 added
- 3 deleted
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/prelude/Makefile.in
red12051 re1056381 1 # Makefile.in generated by automake 1.1 6.1from Makefile.am.1 # Makefile.in generated by automake 1.15 from Makefile.am. 2 2 # @configure_input@ 3 3 4 # Copyright (C) 1994-201 8Free Software Foundation, Inc.4 # Copyright (C) 1994-2014 Free Software Foundation, Inc. 5 5 6 6 # This Makefile.in is free software; the Free Software Foundation … … 331 331 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ 332 332 *) \ 333 echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__ maybe_remake_depfiles)'; \334 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__ maybe_remake_depfiles);; \333 echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ 334 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ 335 335 esac; 336 336 … … 377 377 378 378 379 distdir: $(BUILT_SOURCES) 380 $(MAKE) $(AM_MAKEFLAGS) distdir-am 381 382 distdir-am: $(DISTFILES) 379 distdir: $(DISTFILES) 383 380 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ 384 381 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -
libcfa/src/Makefile.am
red12051 re1056381 33 33 # The built sources must not depend on the installed headers 34 34 AM_CFAFLAGS = -quiet -cfalib -I$(srcdir)/stdhdr $(if $(findstring ${gdbwaittarget}, ${@}), -XCFA --gdb) @CONFIG_CFAFLAGS@ 35 AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC - pthread @ARCH_FLAGS@ @CONFIG_CFLAGS@35 AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC -fexceptions -pthread @ARCH_FLAGS@ @CONFIG_CFLAGS@ 36 36 AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@ 37 37 CFACC = @CFACC@ -
libcfa/src/Makefile.in
red12051 re1056381 456 456 # The built sources must not depend on the installed headers 457 457 AM_CFAFLAGS = -quiet -cfalib -I$(srcdir)/stdhdr $(if $(findstring ${gdbwaittarget}, ${@}), -XCFA --gdb) @CONFIG_CFAFLAGS@ 458 AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC - pthread @ARCH_FLAGS@ @CONFIG_CFLAGS@458 AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC -fexceptions -pthread @ARCH_FLAGS@ @CONFIG_CFLAGS@ 459 459 AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@ 460 460 @BUILDLIB_FALSE@headers_nosrc = -
libcfa/src/bitmanip.hfa
red12051 re1056381 11 11 // Created On : Sat Mar 14 18:12:27 2020 12 12 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Mon Mar 16 14:28:46202014 // Update Count : 4913 // Last Modified On : Mon Apr 6 22:17:19 2020 14 // Update Count : 78 15 15 // 16 16 … … 23 23 #include <assert.h> 24 24 25 #define __bitsizeof( n ) (sizeof(n) * __CHAR_BIT__) 26 25 27 static inline { 26 28 // Count leading 0 bits. 27 unsigned int cl0( unsigned char n ) { return n != 0 ? __builtin_clz( n ) - (sizeof(unsigned int) * __CHAR_BIT__ - sizeof(n) * __CHAR_BIT__) : sizeof(n) * __CHAR_BIT__; }28 unsigned int cl0( unsigned short int n ) { return n != 0 ? __builtin_clz( n ) - (sizeof(unsigned int) * __CHAR_BIT__ - sizeof(n) * __CHAR_BIT__) : sizeof(n) * __CHAR_BIT__; }29 unsigned int cl0( unsigned int n ) { return n != 0 ? __builtin_clz( n ) : sizeof(n) * __CHAR_BIT__; }30 unsigned int cl0( unsigned long int n ) { return n != 0 ? __builtin_clzl( n ) : sizeof(n) * __CHAR_BIT__; }31 unsigned int cl0( unsigned long long int n ) { return n != 0 ? __builtin_clzll( n ) : sizeof(n) * __CHAR_BIT__; }29 unsigned int leading0s( unsigned char n ) { return n != 0 ? __builtin_clz( n ) - (__bitsizeof(unsigned int) - __bitsizeof(n)) : __bitsizeof(n); } 30 unsigned int leading0s( unsigned short int n ) { return n != 0 ? __builtin_clz( n ) - (__bitsizeof(unsigned int) - __bitsizeof(n)) : __bitsizeof(n); } 31 unsigned int leading0s( unsigned int n ) { return n != 0 ? __builtin_clz( n ) : __bitsizeof(n); } 32 unsigned int leading0s( unsigned long int n ) { return n != 0 ? __builtin_clzl( n ) : __bitsizeof(n); } 33 unsigned int leading0s( unsigned long long int n ) { return n != 0 ? __builtin_clzll( n ) : __bitsizeof(n); } 32 34 33 35 // Count trailing 0 bits. 34 unsigned int ct0( unsigned char n ) { return n != 0 ? __builtin_ctz( n ) : sizeof(n) * __CHAR_BIT__; }35 unsigned int ct0( unsigned short int n ) { return n != 0 ? __builtin_ctz( n ) : sizeof(n) * __CHAR_BIT__; }36 unsigned int ct0( unsigned int n ) { return n != 0 ? __builtin_ctz( n ) : sizeof(n) * __CHAR_BIT__; }37 unsigned int ct0( unsigned long int n ) { return n != 0 ? __builtin_ctzl( n ) : sizeof(n) * __CHAR_BIT__; }38 unsigned int ct0( unsigned long long int n ) { return n != 0 ? __builtin_ctzll( n ) : sizeof(n) * __CHAR_BIT__; }36 unsigned int trailing0s( unsigned char n ) { return n != 0 ? __builtin_ctz( n ) : __bitsizeof(n); } 37 unsigned int trailing0s( unsigned short int n ) { return n != 0 ? __builtin_ctz( n ) : __bitsizeof(n); } 38 unsigned int trailing0s( unsigned int n ) { return n != 0 ? __builtin_ctz( n ) : __bitsizeof(n); } 39 unsigned int trailing0s( unsigned long int n ) { return n != 0 ? __builtin_ctzl( n ) : __bitsizeof(n); } 40 unsigned int trailing0s( unsigned long long int n ) { return n != 0 ? __builtin_ctzll( n ) : __bitsizeof(n); } 39 41 40 42 // Count all 1 bits. 41 unsigned int ca1( unsigned char n ) { return __builtin_popcount( n ); }42 unsigned int ca1( unsigned short int n ) { return __builtin_popcount( n ); }43 unsigned int ca1( unsigned int n ) { return __builtin_popcount( n ); }44 unsigned int ca1( unsigned long int n ) { return __builtin_popcountl( n ); }45 unsigned int ca1( unsigned long long int n ) { return __builtin_popcountll( n ); }43 unsigned int all1s( unsigned char n ) { return __builtin_popcount( n ); } 44 unsigned int all1s( unsigned short int n ) { return __builtin_popcount( n ); } 45 unsigned int all1s( unsigned int n ) { return __builtin_popcount( n ); } 46 unsigned int all1s( unsigned long int n ) { return __builtin_popcountl( n ); } 47 unsigned int all1s( unsigned long long int n ) { return __builtin_popcountll( n ); } 46 48 47 49 // Count all 0 bits. 48 unsigned int ca0( unsigned char n ) { return sizeof(n) * __CHAR_BIT__- __builtin_popcount( n ); }49 unsigned int ca0( unsigned short int n ) { return sizeof(n) * __CHAR_BIT__- __builtin_popcount( n ); }50 unsigned int ca0( unsigned int n ) { return sizeof(n) * __CHAR_BIT__- __builtin_popcount( n ); }51 unsigned int ca0( unsigned long int n ) { return sizeof(n) * __CHAR_BIT__- __builtin_popcountl( n ); }52 unsigned int ca0( unsigned long long int n ) { return sizeof(n) * __CHAR_BIT__- __builtin_popcountll( n ); }50 unsigned int all0s( unsigned char n ) { return __bitsizeof(n) - __builtin_popcount( n ); } 51 unsigned int all0s( unsigned short int n ) { return __bitsizeof(n) - __builtin_popcount( n ); } 52 unsigned int all0s( unsigned int n ) { return __bitsizeof(n) - __builtin_popcount( n ); } 53 unsigned int all0s( unsigned long int n ) { return __bitsizeof(n) - __builtin_popcountl( n ); } 54 unsigned int all0s( unsigned long long int n ) { return __bitsizeof(n) - __builtin_popcountll( n ); } 53 55 54 // Find least significiant set bit. (ffs) 55 unsigned int fls( unsigned int n ) { return __builtin_ffs( n ); } 56 unsigned int fls( unsigned long int n ) { return __builtin_ffsl( n ); } 57 unsigned int fls( unsigned long long int n ) { return __builtin_ffsll( n ); } 56 // Find least significiant zero bit. (ffs) 57 unsigned int low0( unsigned char n ) { return __builtin_ffs( (typeof(n))~n ); } 58 unsigned int low0( unsigned short int n ) { return __builtin_ffs( (typeof(n))~n ); } 59 unsigned int low0( unsigned int n ) { return __builtin_ffs( ~n ); } 60 unsigned int low0( unsigned long int n ) { return __builtin_ffsl( ~n ); } 61 unsigned int low0( unsigned long long int n ) { return __builtin_ffsll( ~n ); } 58 62 59 // Find most significiant set bit. 60 unsigned int fms( unsigned char n ) { return n != 0 ? sizeof(unsigned int) * __CHAR_BIT__ - __builtin_clz( n ) : 0; } 61 unsigned int fms( unsigned short int n ) { return n != 0 ? sizeof(unsigned int) * __CHAR_BIT__ - __builtin_clz( n ) : 0; } 62 unsigned int fms( unsigned int n ) { return n != 0 ? sizeof(n) * __CHAR_BIT__ - __builtin_clz( n ) : 0; } 63 unsigned int fms( unsigned long int n ) { return n != 0 ? sizeof(n) * __CHAR_BIT__ - __builtin_clzl( n ) : 0; } 64 unsigned int fms( unsigned long long int n ) { return n != 0 ? sizeof(n) * __CHAR_BIT__ - __builtin_clzll( n ) : 0; } 63 // Find least significiant one bit. 64 unsigned int low1( unsigned int n ) { return __builtin_ffs( n ); } 65 unsigned int low1( unsigned long int n ) { return __builtin_ffsl( n ); } 66 unsigned int low1( unsigned long long int n ) { return __builtin_ffsll( n ); } 65 67 66 // Check for power of 2 67 bool pow2( unsigned long int value ) { 68 return (value & (value - 1)) == 0; // clears bits below value, rounding down to the next lower multiple of value 69 } // pow2 68 // Find most significiant zero bit. 69 unsigned int high0( unsigned char n ) { return n != (typeof(n))-1 ? __bitsizeof(unsigned int) - __builtin_clz( (typeof(n))~n ) : 0; } 70 unsigned int high0( unsigned short int n ) { return n != (typeof(n))-1 ? __bitsizeof(unsigned int) - __builtin_clz( (typeof(n))~n ) : 0; } 71 unsigned int high0( unsigned int n ) { return n != -1 ? __bitsizeof(n) - __builtin_clz( ~n ) : 0; } 72 unsigned int high0( unsigned long int n ) { return n != -1 ? __bitsizeof(n) - __builtin_clzl( ~n ) : 0; } 73 unsigned int high0( unsigned long long int n ) { return n != -1 ? __bitsizeof(n) - __builtin_clzll( ~n ) : 0; } 70 74 71 // Returns value aligned at the floor of align. 72 unsigned long int floor( unsigned long int value, unsigned long int align ) { 73 assert( pow2( align ) ); 74 return value & -align; // clear bits above or equal to align, giving value % align 75 } // floor 75 // Find most significiant one bit. 76 unsigned int high1( unsigned char n ) { return n != 0 ? __bitsizeof(unsigned int) - __builtin_clz( n ) : 0; } 77 unsigned int high1( unsigned short int n ) { return n != 0 ? __bitsizeof(unsigned int) - __builtin_clz( n ) : 0; } 78 unsigned int high1( unsigned int n ) { return n != 0 ? __bitsizeof(n) - __builtin_clz( n ) : 0; } 79 unsigned int high1( unsigned long int n ) { return n != 0 ? __bitsizeof(n) - __builtin_clzl( n ) : 0; } 80 unsigned int high1( unsigned long long int n ) { return n != 0 ? __bitsizeof(n) - __builtin_clzll( n ) : 0; } 76 81 77 // Returns value aligned at the ceiling of align. 78 unsigned long int ceiling( unsigned long int value, unsigned long int align ) { 79 assert( pow2( align ) ); 80 return -floor( -value, align ); // negate, round down, negate is the same as round up 81 } // ceiling 82 } 82 // Check for power of 2, clears bits below value, rounding down to the next lower multiple of value. 83 bool is_pow2( int value ) { return (value & (value - 1)) == 0; } 84 bool is_pow2( unsigned long long int value ) { return (value & (value - 1)) == 0; } 85 86 // Returns value aligned at the floor of align, clear bits above or equal to align, giving value % align. 87 unsigned int floor2( unsigned int value, unsigned int align ) { assert( is_pow2( align ) ); return value & -align; } 88 unsigned long long int floor2( unsigned long long int value, unsigned long long int align ) { assert( is_pow2( align ) ); return value & -align; } 89 90 unsigned int floor( unsigned int value, unsigned int align ) { return value / align * align; } 91 unsigned long long int floor( unsigned long long int value, unsigned long long int align ) { return value / align * align; } 92 93 // Returns value aligned at the ceiling of align, negate, round down, negate is the same as round up. 94 unsigned int ceiling2( unsigned int value, unsigned int align ) { assert( is_pow2( align ) ); return -floor2( -value, align ); } 95 unsigned long long int ceiling2( unsigned long long int value, unsigned long long int align ) { assert( is_pow2( align ) ); return -floor2( -value, align ); } 96 97 unsigned int ceiling( unsigned int value, unsigned int align ) { return (value + (align - 1)) / align; } 98 unsigned long long int ceiling( unsigned long long int value, unsigned long long int align ) { return (value + (align - 1)) / align; } 99 } // distribution 83 100 84 101 // Local Variables: // -
libcfa/src/exception.c
red12051 re1056381 10 10 // Created On : Mon Jun 26 15:13:00 2017 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Apr 03 11:57:00 202013 // Update Count : 1 412 // Last Modified On : Mon Apr 06 14:40:00 2020 13 // Update Count : 15 14 14 // 15 15 … … 75 75 // RESUMPTION ================================================================ 76 76 77 static void reset_top_resume(struct __cfaehm_try_resume_node ** store) { 78 this_exception_context()->top_resume = *store; 79 } 80 77 81 void __cfaehm_throw_resume(exception_t * except) { 78 82 struct exception_context_t * context = this_exception_context(); … … 80 84 __cfaabi_dbg_print_safe("Throwing resumption exception\n"); 81 85 86 __attribute__((cleanup(reset_top_resume))) 82 87 struct __cfaehm_try_resume_node * original_head = context->top_resume; 83 88 struct __cfaehm_try_resume_node * current = context->top_resume; … … 86 91 context->top_resume = current->next; 87 92 if (current->handler(except)) { 88 context->top_resume = original_head;89 93 return; 90 94 } … … 92 96 93 97 __cfaabi_dbg_print_safe("Unhandled exception\n"); 94 context->top_resume = original_head;95 98 96 99 // Fall back to termination: -
tests/.expect/alloc.txt
red12051 re1056381 35 35 CFA realloc array alloc, fill 36 36 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 37 CFA realloc array alloc, 538 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede39 CFA realloc array alloc, 540 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef41 CFA realloc array alloc, 542 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff43 37 44 38 C memalign 42 42.5 -
tests/alloc.cfa
red12051 re1056381 10 10 // Created On : Wed Feb 3 07:56:22 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Apr 1 10:58:35202013 // Update Count : 42 412 // Last Modified On : Mon Apr 6 21:08:23 2020 13 // Update Count : 428 14 14 // 15 15 … … 151 151 ip = alloc_set( ip, 3 * dim, fill ); // CFA realloc array alloc, fill 152 152 printf( "CFA realloc array alloc, fill\n" ); 153 for ( i; 3 * dim ) { printf( "%#x ", ip[i] ); ;}154 printf( "\n" ); 155 // do not free 156 157 ip = alloc_set( ip, 3* dim, 5 ); // CFA realloc array alloc, 5153 for ( i; 3 * dim ) { printf( "%#x ", ip[i] ); } 154 printf( "\n" ); 155 // do not free 156 #if 0 // FIX ME 157 ip = alloc_set( ip, 5 * dim, 5 ); // CFA realloc array alloc, 5 158 158 printf( "CFA realloc array alloc, 5\n" ); 159 for ( i; 3* dim ) { printf( "%#x ", ip[i] ); }159 for ( i; 5 * dim ) { printf( "%#x ", ip[i] ); } 160 160 printf( "\n" ); 161 161 // do not free … … 167 167 // do not free 168 168 169 ip = alloc_set( ip, 3* dim, 5 ); // CFA realloc array alloc, 5169 ip = alloc_set( ip, 5 * dim, 5 ); // CFA realloc array alloc, 5 170 170 printf( "CFA realloc array alloc, 5\n" ); 171 for ( i; 3 * dim ) { printf( "%#x ", ip[i] );; }172 printf( "\n" ); 173 free( ip ); 174 171 for ( i; 5 * dim ) { printf( "%#x ", ip[i] ); } 172 printf( "\n" ); 173 #endif // 0 174 free( ip ); 175 175 176 176 // resize, non-array types -
tests/exceptions/.expect/interact.txt
red12051 re1056381 14 14 resumption catch, will terminate 15 15 inner termination catch 16 17 throwing resume moon 18 resumption moon catch, will terminate 19 termination catch 20 throwing resume star 21 resumption star catch -
tests/exceptions/.expect/resume.txt
red12051 re1056381 25 25 caught second exception 26 26 recaught first exception 27 28 inner catch 29 inner catch 30 outer catch -
tests/exceptions/.expect/terminate.txt
red12051 re1056381 24 24 caught second exception 25 25 recaught first exception 26 27 inner catch 28 outer catch -
tests/exceptions/interact.cfa
red12051 re1056381 86 86 printf("outer terminate catch (error)\n"); 87 87 } 88 #if 089 88 printf("\n"); 90 89 … … 111 110 printf("outermost catch (error)\n"); 112 111 } 113 #endif114 112 } -
tests/exceptions/resume.cfa
red12051 re1056381 99 99 printf("caught second exception (bad location)\n"); 100 100 } 101 printf("\n"); 102 103 // Check successive operations. 104 try { 105 try { 106 THROW_RESUME(&(zen){}); 107 THROW_RESUME(&(zen){}); 108 } catchResume (zen *) { 109 printf("inner catch\n"); 110 } 111 THROW_RESUME(&(zen){}); 112 } catchResume (zen *) { 113 printf("outer catch\n"); 114 } 101 115 } -
tests/exceptions/terminate.cfa
red12051 re1056381 99 99 printf("caught second exception (bad location)\n"); 100 100 } 101 printf("\n"); 102 103 // Check successive operations. 104 try { 105 try { 106 THROW(&(zen){}); 107 THROW(&(zen){}); 108 } catch (zen *) { 109 printf("inner catch\n"); 110 } 111 THROW(&(zen){}); 112 } catch (zen *) { 113 printf("outer catch\n"); 114 } 101 115 }
Note: See TracChangeset
for help on using the changeset viewer.