diff options
| author | Mattias EngdegÄrd | 2024-03-18 19:56:20 +0100 |
|---|---|---|
| committer | Mattias EngdegÄrd | 2024-03-23 09:52:45 +0100 |
| commit | 01e5337293cf0da834a0e44f33330f8bfe78d945 (patch) | |
| tree | f2bb0f82897457b993db2e8e0323cf01c9ebb50f /admin/notes/java | |
| parent | 3a3568784eab9eb7889d23e40f498f3cf89beea0 (diff) | |
| download | emacs-01e5337293cf0da834a0e44f33330f8bfe78d945.tar.gz emacs-01e5337293cf0da834a0e44f33330f8bfe78d945.zip | |
Add back timsort key function handling (bug#69709)
The original timsort code did provide for a key (accessor) function
along with the necessary storage management, but we dropped it because
our `sort` function didn't need it.
Now it's been put back since it seems that it will come in handy after all.
* src/fns.c (sort_list, sort_vector, Fsort): Pass Qnil as key function
to tim_sort.
* src/sort.c (reverse_slice, sortslice_copy)
(sortslice_copy_incr, sortslice_copy_decr, sortslice_memcpy)
(sortslice_memmove, sortslice_advance): New functions.
(sortslice): New type.
(struct stretch, struct reloc, merge_state)
(binarysort, merge_init, merge_markmem, cleanup_mem)
(merge_register_cleanup, merge_getmem, merge_lo, merge_hi, merge_at)
(found_new_run, reverse_sortslice, resolve_fun, tim_sort):
Merge back previously discarded parts from the upstreams timsort code
that dealt with key functions, and adapt them to fit in.
Diffstat (limited to 'admin/notes/java')
0 files changed, 0 insertions, 0 deletions