Changes in / [e1056381:ed12051]


Ignore:
Files:
3 added
4 deleted
13 edited

Legend:

Unmodified
Added
Removed
  • libcfa/prelude/Makefile.in

    re1056381 red12051  
    1 # Makefile.in generated by automake 1.15 from Makefile.am.
     1# Makefile.in generated by automake 1.16.1 from Makefile.am.
    22# @configure_input@
    33
    4 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
     4# Copyright (C) 1994-2018 Free Software Foundation, Inc.
    55
    66# This Makefile.in is free software; the Free Software Foundation
     
    331331            cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
    332332          *) \
    333             echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
    334             cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
     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);; \
    335335        esac;
    336336
     
    377377
    378378
    379 distdir: $(DISTFILES)
     379distdir: $(BUILT_SOURCES)
     380        $(MAKE) $(AM_MAKEFLAGS) distdir-am
     381
     382distdir-am: $(DISTFILES)
    380383        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
    381384        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
  • libcfa/src/Makefile.am

    re1056381 red12051  
    3333# The built sources must not depend on the installed headers
    3434AM_CFAFLAGS = -quiet -cfalib -I$(srcdir)/stdhdr $(if $(findstring ${gdbwaittarget}, ${@}), -XCFA --gdb) @CONFIG_CFAFLAGS@
    35 AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC -fexceptions -pthread @ARCH_FLAGS@ @CONFIG_CFLAGS@
     35AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC -pthread @ARCH_FLAGS@ @CONFIG_CFLAGS@
    3636AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
    3737CFACC = @CFACC@
  • libcfa/src/Makefile.in

    re1056381 red12051  
    456456# The built sources must not depend on the installed headers
    457457AM_CFAFLAGS = -quiet -cfalib -I$(srcdir)/stdhdr $(if $(findstring ${gdbwaittarget}, ${@}), -XCFA --gdb) @CONFIG_CFAFLAGS@
    458 AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC -fexceptions -pthread @ARCH_FLAGS@ @CONFIG_CFLAGS@
     458AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC -pthread @ARCH_FLAGS@ @CONFIG_CFLAGS@
    459459AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
    460460@BUILDLIB_FALSE@headers_nosrc =
  • libcfa/src/bitmanip.hfa

    re1056381 red12051  
    1111// Created On       : Sat Mar 14 18:12:27 2020
    1212// Last Modified By : Peter A. Buhr
    13 // Last Modified On : Mon Apr  6 22:17:19 2020
    14 // Update Count     : 78
     13// Last Modified On : Mon Mar 16 14:28:46 2020
     14// Update Count     : 49
    1515//
    1616
     
    2323#include <assert.h>
    2424
    25 #define __bitsizeof( n ) (sizeof(n) * __CHAR_BIT__)
    26 
    2725static inline {
    2826    // Count leading 0 bits.
    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); }
     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__; }
    3432
    3533    // Count trailing 0 bits.
    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); }
     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__; }
    4139
    4240    // Count all 1 bits.
    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 ); }
     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 ); }
    4846
    4947    // Count all 0 bits.
    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 ); }
     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 ); }
    5553
    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 ); }
     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 ); }
    6258
    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 ); }
     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; }
    6765
    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; }
     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
    7470
    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; }
     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
    8176
    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
     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}
    10083
    10184// Local Variables: //
  • libcfa/src/exception.c

    re1056381 red12051  
    1010// Created On       : Mon Jun 26 15:13:00 2017
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Mon Apr 06 14:40:00 2020
    13 // Update Count     : 15
     12// Last Modified On : Fri Apr 03 11:57:00 2020
     13// Update Count     : 14
    1414//
    1515
     
    7575// RESUMPTION ================================================================
    7676
    77 static void reset_top_resume(struct __cfaehm_try_resume_node ** store) {
    78         this_exception_context()->top_resume = *store;
    79 }
    80 
    8177void __cfaehm_throw_resume(exception_t * except) {
    8278        struct exception_context_t * context = this_exception_context();
     
    8480        __cfaabi_dbg_print_safe("Throwing resumption exception\n");
    8581
    86         __attribute__((cleanup(reset_top_resume)))
    8782        struct __cfaehm_try_resume_node * original_head = context->top_resume;
    8883        struct __cfaehm_try_resume_node * current = context->top_resume;
     
    9186                context->top_resume = current->next;
    9287                if (current->handler(except)) {
     88                        context->top_resume = original_head;
    9389                        return;
    9490                }
     
    9692
    9793        __cfaabi_dbg_print_safe("Unhandled exception\n");
     94        context->top_resume = original_head;
    9895
    9996        // Fall back to termination:
  • tests/.expect/alloc.txt

    re1056381 red12051  
    3535CFA realloc array alloc, fill
    36360xdeadbeef 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
     37CFA realloc array alloc, 5
     380xdeadbeef 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
     39CFA realloc array alloc, 5
     400xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef
     41CFA realloc array alloc, 5
     420xdeadbeef 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 0xffffffff
    3743
    3844C   memalign 42 42.5
  • tests/alloc.cfa

    re1056381 red12051  
    1010// Created On       : Wed Feb  3 07:56:22 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Apr  6 21:08:23 2020
    13 // Update Count     : 428
     12// Last Modified On : Wed Apr  1 10:58:35 2020
     13// Update Count     : 424
    1414//
    1515
     
    151151        ip = alloc_set( ip, 3 * dim, fill );                            // CFA realloc array alloc, fill
    152152        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, 5
     158        printf( "CFA realloc array alloc, 5\n" );
    153159        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         printf( "CFA realloc array alloc, 5\n" );
    159         for ( i; 5 * dim ) { printf( "%#x ", ip[i] ); }
    160160        printf( "\n" );
    161161        // do not free
     
    167167        // do not free
    168168
    169         ip = alloc_set( ip, 5 * dim, 5 );                                       // CFA realloc array alloc, 5
     169        ip = alloc_set( ip, 3 * dim, 5 );                                       // CFA realloc array alloc, 5
    170170        printf( "CFA realloc array alloc, 5\n" );
    171         for ( i; 5 * dim ) { printf( "%#x ", ip[i] ); }
    172         printf( "\n" );
    173 #endif // 0
    174         free( ip );
     171        for ( i; 3 * dim ) { printf( "%#x ", ip[i] );; }
     172        printf( "\n" );
     173        free( ip );
     174
    175175
    176176        // resize, non-array types
  • tests/exceptions/.expect/interact.txt

    re1056381 red12051  
    1414resumption catch, will terminate
    1515inner 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

    re1056381 red12051  
    2525caught second exception
    2626recaught first exception
    27 
    28 inner catch
    29 inner catch
    30 outer catch
  • tests/exceptions/.expect/terminate.txt

    re1056381 red12051  
    2424caught second exception
    2525recaught first exception
    26 
    27 inner catch
    28 outer catch
  • tests/exceptions/interact.cfa

    re1056381 red12051  
    8686                printf("outer terminate catch (error)\n");
    8787        }
     88#if 0
    8889        printf("\n");
    8990
     
    110111                printf("outermost catch (error)\n");
    111112        }
     113#endif
    112114}
  • tests/exceptions/resume.cfa

    re1056381 red12051  
    9999                printf("caught second exception (bad location)\n");
    100100        }
    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         }
    115101}
  • tests/exceptions/terminate.cfa

    re1056381 red12051  
    9999                printf("caught second exception (bad location)\n");
    100100        }
    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         }
    115101}
Note: See TracChangeset for help on using the changeset viewer.