It's probably not useful for users, but it is necessary for making the
right choice while building our own contribs. Acting on a report by
Masatoshi SANO.
This doesn't actually change the behavior, it just expresses more packages
in the manner of keeping all external plus some so-called "precious" internal
symbols. Some new symbol are listed as I noticed that they are used
only in tests but are apparently unreferenced from the pristine core.
More often than not ZSTD_createDStream and realloc will deadlock or crash
if called in a signal handler, which rendered the C backtracer basically
useless in any complicated debugging scenario where you really needed it.
- A silly reason prevented the histogram and precise cons-profiling to
both be enabled: there was a JRCX with an out-of-range branch target.
- Distinguish between "allocator histogram" and "allocator metrics"
because the former says something about user code that would likely hold
regardless of the garbage collector implementation, whereas the latter
measures aspects of gencgc such as the time taken to find free memory.
- Count the sum of bytes allocated for the inexact (power-of-2) bins.
- Instrumentation for the histogram is more amenable to inserting into
all of the backends than is the code for the precise profiler,
though at present it is still only implemented on x86-64.
It is also a little easier to control in a build script, as it requires
only a change to *features* rather than a compiler policy.
The issue was that the LINKAGE_TEMP_REG being NL3 was a C argument
register, so of course that caused clashing on C call-out, causing
problems with run-program. Going back to NL7 didn't work either
because it wasn't getting saved before entry into the trampoline. The
code here used to have NL7 before the trampoline code was gutted and
then restored, so I'm wondering how this ever worked before, because
it definitely did. Pick LIP as the TEMP_REG now because not only does
it get saved, it's also the least likely thing to get disturbed by
clobbering.
Fixes #lp2002930.
Also remove assembly routine printing because it doesn't need to be
part of the build script (unlike the other files in output/ which
can't trivially be recovered from a built image), and because not all
disassembler printers have been written on riscv yet.
The feature was checked-in without being completed and it's already
bitrotted. Wrapper is folded back into layout name-wise for the most
part now because that's how it's been effectively functioning. There
are still probably more cleanups to be done, related to this, but this
takes care of most of the dead code and unnecessary layers of
alternate names/indirection.
When detecting format control strings that contain potential mentions
of SB- packages, MAP-ALLOCATED-OBJECTS could find suspiciously live strings,
but then if GC occurs in the printing loop smashing some weak pointers
it could print "Found string NIL" so re-test for a non-broken weak pointer.
It pre-dates the ability to return literal ctypes given a constant call
to SPECIFIER-TYPE, and pre-dates hash-consing in general.
So it doesn't do much. Plus there is no such cache in make-host-1.
Or "what's good for the goose is good for the gander"
where "goose" = make-host-1 and "gander" = everything else.
Firstly, find-fdefn on a symbol is *not* redundant with having globladb info
since the fdefn goes in its own slot. But also the test was wrong
because it's trying to check whether the symbol is currently FBOUNDP.
Since FDEFNs can't go away, this change finds a little more to remove.
In practice, some un-fboundp symbols aren't removed because they have code
references, like STREAM-EXTERNAL-FORMAT calling S-%STREAM-EXTERNAL-FORMAT
which is defined only if sb-simple-streams gets loaded, etc, etc.