Commit fa53ce89 authored by dill Upstream's avatar dill Upstream Committed by Eisenhauer, Greg
Browse files

dill 2026-04-17 (9d32c1df)

Code extracted from:

    https://github.com/GTkorvo/dill.git

at commit 9d32c1df536547e8b782a899a3d16697f978f55c (master).

Upstream Shortlog
-----------------

Greg Eisenhauer (4):
      ce161228 Add global register pre-assignment for virtual mode loops (#84)
      1929b841 ARM64 built-in disassembler for dill_dump (#85)
      9afe8637 Restore JIT execute mode in finalize_package and free_stream (#86)
      9d32c1df Fix ARM64 Linux support (#87)
parent 036ebc16
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.14)
# The directory label is used for CDash to treat DILL as a subproject of GTKorvo
set(CMAKE_DIRECTORY_LABELS DILL)

project(DILL VERSION 3.3.0 LANGUAGES C CXX)
project(DILL VERSION 3.4.1 LANGUAGES C CXX)

# Some boilerplate to setup nice output directories
include(GNUInstallDirs)
+457 −33

File changed.

Preview size limit exceeded, changes collapsed.

+12 −0
Original line number Diff line number Diff line
@@ -249,6 +249,7 @@ set_mach_reset(dill_stream s, char* arch)
extern void
dill_free_stream(dill_stream s)
{
    JIT_PROTECT(1);  /* ensure execute mode is restored on stream cleanup */
    if (s->p->branch_table.label_locs)
        free(s->p->branch_table.label_locs);
    if (s->p->branch_table.label_name) {
@@ -527,8 +528,12 @@ dill_finalize(dill_stream s)
#if defined(HOST_ARM8) || defined(HOST_ARM64)
    /* Check for NULL - virtual mode already flushed in its inner dill_finalize */
    if (s->p->code_base != NULL) {
#if defined(__APPLE__)
        sys_icache_invalidate(s->p->code_base,
            (size_t)((char*)s->p->cur_ip - (char*)s->p->code_base));
#else
        __clear_cache(s->p->code_base, (char*)s->p->cur_ip);
#endif
    }
#endif
    return handle;
@@ -550,8 +555,12 @@ dill_get_handle(dill_stream s)
    }
    JIT_PROTECT(1);  /* enable execute */
#if defined(HOST_ARM8) || defined(HOST_ARM64)
#if defined(__APPLE__)
    sys_icache_invalidate(native_base,
        (size_t)((char*)s->p->cur_ip - (char*)native_base));
#else
    __clear_cache(native_base, (char*)s->p->cur_ip);
#endif
#endif
    handle->fp = (void (*)())s->p->fp;
    handle->ref_count = 1;
@@ -642,6 +651,7 @@ dill_finalize_package(dill_stream s, int* pkg_len)
    s->p->save_param_count = s->p->c_param_count;
    s->p->c_param_count = 0;
    char* p = dill_build_package(s, pkg_len);
    JIT_PROTECT(1);  /* restore execute — match dill_finalize behavior */
    return p;
}

@@ -1754,6 +1764,7 @@ dill_dump(dill_stream s)
        int insn_count = 0;
        if ((s->j != s->p->virtual.mach_jump) && (s->p->fp != NULL))
            base = s->p->fp;
        JIT_PROTECT(0);  /* enable read access for code dump */
        for (p = base; (char*)p < s->p->cur_ip;) {
            int i;
            struct branch_table* t = &s->p->branch_table;
@@ -1773,6 +1784,7 @@ dill_dump(dill_stream s)
            p = (char*)p + l;
            insn_count++;
        }
        JIT_PROTECT(1);  /* restore execute-only */
        printf("\nDumped %d instructions\n\n", insn_count);
    }
}
+3 −3

File changed.

Preview size limit exceeded, changes collapsed.

+157 −12

File changed.

Preview size limit exceeded, changes collapsed.

Loading