Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

sbcl Log


Commit Date  
[18a56b] by Stas Boukarev Stas Boukarev

Don't write sbcl-core-version-integer into cores.

It hasn't been maintained in almost a decade and build-id is actually
used to distinguish between different cores.
Assign build-id-core-entry-type-code the value
version-core-entry-type-code previously held, that way loading old
core files fails with a proper error instead of "unknown core file
entry".

2014-04-12 10:05:23 Tree
[4e459f] by Alastair Bridgewater Alastair Bridgewater

code/late-type: Replace array type unity logic with sane version.

* Discovered based on a bug report by jasom in #lisp, with
diagnosis by pkhuong, input as to what the right thing is from
Krystof, and patch review by both.

* Define a bunch of test cases for various cases that should (or
shouldn't) produce a specific simple array type (rather than a
full union-type).

* Completely gut and rebuild the unity logic, factoring it out
into multiple functions each responsible for a single part of the
array type, and a function to determine if unity makes sense.

2014-04-11 00:58:47 Tree
[c558ac] by Douglas Katzman Douglas Katzman

Delete the ill-conceived thread-struct-slot-offset function.

Thanks to statssats for fixing my totally braindamaged implementation.
This additional change avoids having to scan all thread slots in every
use of the symbol-value vops.

2014-04-11 00:14:10 Tree
[55cb4d] by Stas Boukarev Stas Boukarev

Fix access to slots of the thread struct.

Use actual symbols to determine whether a variable is specially
handled, not their names.

2014-04-10 18:27:04 Tree
[708bfd] by Douglas Katzman Douglas Katzman

Fix debugger regression and also avoid style warning in genesis.

2014-04-10 13:08:57 Tree
[6b74d4] by Douglas Katzman Douglas Katzman

Use load-time-assigned TLS indices for x86-64 opportunistically.

This change makes SYMBOL-VALUE understand that whenever the BIND vop
will have forced the fasloader to assign a TLS index to a symbol,
so that the index may be used as the 'disp' field of an EA, subsequent
references to the symbol should do likewise rather than load the index
to be used as the 'index' field of an EA.

This approach causes nondeterminism of compiled code but so localized
that it seems a worthwhile tradeoff with no semantic impact.
We could easily add a declaration to the effect that a symbol should
always be assumed to have been given an index by the loader, thus
removing the nondeterminism.

Also:
- thread slots manifesting as special variables will never
fallback to the symbol's global value.
- special variables in the COMMON-LISP package will always get
an index. There aren't enough of them to make this problematic
and it leads to nicer looking code for %WITH-REBOUND-IO-SYNTAX.

2014-04-09 21:57:54 Tree
[f72dea] by Alastair Bridgewater Alastair Bridgewater

compiler/ppc/subprim: Apply most of the same LENGTH/LIST changes as on SPARC.

* Second verse, not quite same as the first, because PPC doesn't
have branch-delay slots.

* Move the error-trap out-of-line, remove the second type test,
rotate and partially unroll the loop so that the nromal exit just
falls out the bottom but we still don't have to branch into the
middle.

* Justification and explanation is the same as for the SPARC
versions, not too many commits ago.

2014-04-09 02:18:21 Tree
[407ab5] by Douglas Katzman Douglas Katzman

Fix two C warnings.

2014-04-08 15:55:59 Tree
[66c30b] by Douglas Katzman Douglas Katzman

Undo my previous "fix" but save 2 bytes. Yay.

2014-04-08 15:06:41 Tree
[7abfcc] by Douglas Katzman Douglas Katzman

Remove extra push/pop from alloc_tramp - no need to save r11 twice.

2014-04-08 14:25:55 Tree
[d7b75c] by Alastair Bridgewater Alastair Bridgewater

compiler/sparc/subprim: Clean up a FIXME in LENGTH/LIST.

* There's a longstanding FIXME in this code, due to it using two
type tests each time through the loop, even though one can only
ever trigger on the first iteration, and due to PPC being the only
other backend that does so.

* Actually, it's worse than that: That type test that can only
trigger on the first iteration? It can't, thanks to the VOP
:ARG-TYPES parameter... Well, unless someone gets really careless
with their low-SAFETY code.

* First, change the out-of-line error trap to use PTR rather
than OBJ. Means the debugger can't always point out a variable at
fault, but also means that we only need the one error trap. And,
as mentioned above, it'd take someone doing something broken at
low SAFETY for it to matter anyway.

* Second, kill the inline error trap and its type test.

* Third, do a partial unroll and loop rotation, putting the exit
test at the end so that we can do fall-through exit, and
duplicating it at the beginning so that we don't need to jump into
the middle of the loop body.

* And the entire approach, with the exception of the use of
branch-delay slots, can also be done on PPC... But not in this
commit.

2014-04-08 00:43:07 Tree
[dff186] by Alastair Bridgewater Alastair Bridgewater

Move SPARC over to slimmed-down EMIT-ERROR-BREAK interface, part 2.

* Now that the noisy touch-lots-of-files work has been done, we
can settle in to do the harder-to-validate bits that are entirely
contained within a single file.

* Based somewhat on the PPC version in 1.0.28.16, with a
slightly different choice of implementation strategy, and a result
that hews closer to the code originally replaced.

2014-04-08 00:43:07 Tree
[190694] by Alastair Bridgewater Alastair Bridgewater

compiler/generic/array: Invert conditionals for EMIT-ERROR-BREAK changes.

* This is the halfway point for these changes: Fully half of the
backends are on the new version of the interface while half are
still on the old version.

* Instead of having the conditionals list the platforms that
have been updated (a list that can only grow), list the platforms
that have NOT been updated (a list that can be expected to shrink).

2014-04-08 00:43:07 Tree
[09610e] by Alastair Bridgewater Alastair Bridgewater

Move SPARC over to slimmed-down EMIT-ERROR-BREAK interface, part 1.

* The prep-work has already been done in eliminating the
continuable error bits, now it's time for the first part of the
main show: adjusting the INTERFACE parts.

* For this part we're just pushing a QUOTE from the guts of a
macro code generation function out to the call sites, matching the
other platforms that have already made this change. We'll do the
actual implementation damage in part 2.

2014-04-08 00:43:07 Tree
[738b8a] by Alastair Bridgewater Alastair Bridgewater

compiler/sparc/macros: Kill the continuable-error trap noise.

* We don't use continuable error traps anywhere, and the
debugger doesn't support them. If anyone wants to resurrect such
support (and I can see it as a possibility), they can either dig
the old code out of source control or re-derive it themselves.

2014-04-08 00:43:07 Tree
[6fe419] by Alastair Bridgewater Alastair Bridgewater

compiler/sparc/subprim: Change LENGTH/LIST to use non-continuable errors.

* There's a small stack of more to be done here, but the use of
continuable errors, while supported at least somewhat by the
runtime, simply isn't supported by the debugger, so there's no
point in using them over the non-continuable errors... And these
are the last two use sites for continuable errors on SPARC.

* There are a few more opportunities for excellence here, but
there are some fiddly little details involved, so they call for
separate commits.

2014-04-08 00:43:06 Tree
[a8b95a] by Douglas Katzman Douglas Katzman

Unbreak builds without sb-thread feature

2014-04-07 23:53:32 Tree
[4036bf] by Douglas Katzman Douglas Katzman

Improve readability

2014-04-07 23:34:31 Tree
[b4558d] by Douglas Katzman Douglas Katzman

Rearrange and fix whitespace.

2014-04-07 22:55:12 Tree
[f13f1f] by Douglas Katzman Douglas Katzman

Shrink symbols on x86-64 by putting tls-index in the header.

Using the upper 4 bytes of the header makes symbols take up
6 words instead of 8, reducing the initial core by 565KB.

The patch could theoretically be applied for 32-bit builds,
but using a 2-byte index limits the TLS_SIZE to 2^14 words.
This is sufficient at present, but I wouldn't want to undo
the space savings if it is decided that TLS_SIZE should
be enlarged by a factor of 8 or more in the future.

In C, tls_index_of() should be used in lieu of sym->tls_index.
This is defined to be the constant 0 for non-threaded builds,
so eliminates #ifdef LISP_FEATURE_SB_THREAD in three places.

2014-04-07 18:12:08 Tree
[ff62e8] by Douglas Katzman Douglas Katzman

Use handy inline function instead of hairy expression.

2014-04-07 15:30:31 Tree
[c14700] by Douglas Katzman Douglas Katzman

Fix compiler warnings in coreparse - printf's "%p" wants void*.

2014-04-07 15:25:46 Tree
[ae40e2] by Douglas Katzman Douglas Katzman

Have LDB understand UCS-4 strings instead of showing as #<ptr to...>

Also fix 2 warnings about comparison between signed and unsigned.

2014-04-07 14:57:35 Tree
[9759f6] by Nathan Froyd Nathan Froyd

add :TYPE for some STRING-OUTPUT-STREAM slots

The transition through FILL shows up in some profiles when
GET-OUTPUT-STREAM-STRING is used heavily. Add :TYPE information to the
appropriate slots so the compiler knows LIST-FILL* can be used.

Moving the NREVERSE call is required so the compiler understands that
PREV is actually of list type. NREVERSE's :DERIVE-TYPE is set up
correctly; I think the compiler's failure to understand that

(setf prev (nreverse prev))

is not also a list is just fallout from the compiler not dealing
well with SETF and/or some fault in the type derivation itself.

2014-04-07 00:40:28 Tree
[1e6d78] by Douglas Katzman Douglas Katzman

Remove all C code that dealt with TLS index assignment.

While this reduces duplicated code, it regretably introduces duplicate data.
At least the lose() message informs you what list should be maintained.

2014-04-05 23:52:01 Tree
Older >