tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Tinycc-devel] Allow use of a custom allocator in libtcc


From: Eric Raible
Subject: [Tinycc-devel] Allow use of a custom allocator in libtcc
Date: Tue, 6 Feb 2024 20:25:28 -0800

I just pushed a change with the following commit message.
I'm sending this because the instructions say to chat it up after pushing.

Allow use of a custom allocator in libtcc
   
    When using libtcc it's reasonable to be able to use the application's
    memory allocator for all allocations, including tcc_new(), and including
    #define MEM_DEBUG
   
    Ideally the allocator would be stored in the TCCState, like TCCErrorFunc.
    That would imply a new API tcc_new_with_allocator(), but more importantly
    would require all uses of tcc_malloc(x) to be changed to s->tcc_malloc(x).
    That's a non-starter in my book.
   
    Instead I refactored the memory management code so that all allocations
    flow through tcc_realloc().  Which simply calls a function pointer, the
    default value of which is the previous tcc_realloc().
   
    It then becomess trivial to install a new allocator with the new function:
    LIBTCCAPI void tcc_set_realloc(TCCReallocFunc realloc);
   
    The resulting code adds the trivial cost of an additional function call
    per allocation/free.  It also doesn't distinguish between malloc failure
    and realloc failure, but since both just fprintf then exit() that seems
    unimportant to me.
   
    On the plus side the preprocessor magic is much more clear.  The diffs
    don't hightlight that, but take a look at the result to see if you agree.
   
    All tests passed on my x86 linux box.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]