sbcl Log

Commit Date  
[e4dd74] (sbcl-1.1.15) by Christophe Rhodes Christophe Rhodes

1.1.15: will be tagged as "sbcl-1.1.15"

2014-01-29 11:29:32 Tree
[12adfa] by Jan Moringen Jan Moringen , pushed by Christophe Rhodes Christophe Rhodes

Simplifications in src/compiler/proclaim.lisp

2014-01-22 12:18:15 Tree
[659a62] by Jan Moringen Jan Moringen , pushed by Christophe Rhodes Christophe Rhodes


* New functions have been PROCLAIM-[F]TYPE extracted from PROCLAIM

* PROCLAIM could be slightly simplified

* FIXME about not being able to use TYPE-PROCLAMATION-MISMATCH has
been resolved

now uses PROCLAIM-FTYPE instead of duplicating the logic

* The proclamation-related condition hierarchy now looks like this

| | |
| | |
proclamation-mismatch style-warning error
| | | |
| | | |
type-p-m ftype-p-m-----------------+ |
| | | | |
| +-----------|-------+ | |
| | | | | |
type-p-m-warning ftype-p-m-warning ftype-p-m-error

Report functions of these condition are more regular now and should
work a bit better in logical blocks

2014-01-22 12:18:02 Tree
[2fe4c7] by Jan Moringen Jan Moringen , pushed by Christophe Rhodes Christophe Rhodes

Simplify report function of PACKAGE-LOCK-VIOLATION

2014-01-22 11:39:08 Tree
[6fbbc8] by Jan Moringen Jan Moringen , pushed by Christophe Rhodes Christophe Rhodes

Fix format argument handling of ASSERT-SYMBOL-HOME-PACKAGE-UNLOCKED

* ASSERT-SYMBOL-HOME-PACKAGE-UNLOCKED was already used as if it
accepted an optional format string and format arguments, but that
was not the case, previously

* ASSERT-SYMBOL-HOME-PACKAGE-UNLOCKED has been slightly simplified

2014-01-22 11:39:08 Tree
[da5e41] by Stas Boukarev Stas Boukarev

Optimize sb-bsd-sockets a bit.

Add declarations and rearrange some code to reduce consing.

2014-01-18 20:31:58 Tree
[d0b03c] by Stas Boukarev Stas Boukarev

run-program: Don't check element-type of :output/:input streams.

Instead of checking ahead of time that stream-element-type is
compatible with unsigned-byte-8 buffers, rely on
write-sequence/read-sequence to signal any type errors, while wrapping
them in handler-bind to resignal errors with more context.

2014-01-16 11:50:44 Tree
[260de2] by Stas Boukarev Stas Boukarev

Fix make-array transforms.

Don't call UPGRADED-ARRAY-ELEMENT-TYPE on types without checking that
they don't contain unknown types (i.e., intersections or unions
containing unknown-type), since U-A-E-T now signals errors for these.

Reported by Bart Botta.

2014-01-05 10:00:54 Tree
[a6c4b6] by Christophe Rhodes Christophe Rhodes

better encapsulation support in generic functions

It's not very nice to alter the fdefinition of names which refer to
generic functions: it might not be strictly required by the spec, but
preserving the class of generic functions when encapsulated is more
friendly, so that attempts to trace or profile them doesn't break any
metaobject protocol logic which refers to particular functions by
name. Fortunately, it's fairly straightforward to
support (un)encapsulation of generic functions through adapting the
discriminating function instead.

2014-01-04 19:42:59 Tree
[a189a6] by Stas Boukarev Stas Boukarev

UPGRADED-ARRAY-ELEMENT-TYPE: more thoroughly signal errors on unknown types.

Intersection and union types containing unknown types were handled incorrectly.
(upgraded-array-element-type '(and fixnum unknown)) => was FIXNUM.

2014-01-03 14:03:21 Tree
[8f26d1] by Stas Boukarev Stas Boukarev

Fix the recent %vector-widetag-and-n-bits change.

Handle extended-char, interval type designators, and union types.

2014-01-03 11:59:55 Tree
[b3eb29] by Stas Boukarev Stas Boukarev

Restore PPC build.

Adjust register lifetime in calling VOPs.

Thanks to Alastair Bridgewater.

2014-01-03 08:47:58 Tree
[0c3bbf] by Stas Boukarev Stas Boukarev

Optimize MAKE-ARRAY on unknown element-type.

Reimplement %vector-widetag-and-n-bits without using subtypep,
providing an order of magnitude speed up.

Out of line make-array :element-type 'character also caused to cons
twice larger than needed vectors on x86-64.
(Though that wasted space was reclaimed after GC).

Closes lp#1004501.

2014-01-02 09:03:52 Tree
[979539] by Alastair Bridgewater Alastair Bridgewater

gencgc: code_page_p() must die!

* The last call site for code_page_p() is now a redundant test
for a specific (non-critical) edge case in the logic for dealing
with conservative roots, so kill it.

* And now that nothing calls code_page_p(), kill it before it
has a chance to maul any other SBCL hackers.

2013-12-31 21:34:51 Tree
[9ec743] by Alastair Bridgewater Alastair Bridgewater

gencgc: Pick out shrunk object tails earlier in conservative root logic.

* BIGNUM and VECTOR objects can be allocated overlarge and then
shrunk once the actual required length is known. This leaves a
"tail" of dead (0 . 0) CONSes. When this happens in large-object
pages (as opposed to normal pages), we can see that this has
happened and treat any pointer to such objects as not being a
conservative root.

* Unfortunately, where we currently perform this test we don't
have enough information available to easily say that the reference
is definitely to one of these dead objects, so we use a more
conservative test than strictly required.

* Add another test for the same situation, but earlier in the
logic, and using a more precise test, so that we can skip a bit of
extra work in such (rare) cases, and so that we can simplify the
overall logic.

2013-12-31 20:51:21 Tree
[0e3c4b] by Alastair Bridgewater Alastair Bridgewater

gencgc: More precise conservatism for pointers to boxed pages.

* The commentary for possibly_valid_dynamic_space_pointer()
claims that it matches unboxed return addresses (to within code
objects), but this turns out not to be the case.

* Fix the code to match the comment, at least somewhat, by
checking to see if the object found is a code object and
shortcutting the full validation if it is.

* And, now that we have a version of p_v_d_s_p() that does the
"right thing", or at least close to it with respect to the only
truly unboxed interior pointers that we should have to deal with,
call it straight up instead of only for unboxed pages when we have
a true pointer type.

* Overall, this can be expected to be slower than the prior
version, but more precise in terms of rogue integers in the heap
range. The remaining conservation effects would be due to the
fact that we can't move ANYTHING that's a conservative root and
stale pointers within our active area (truly precise ports are
less affected by this because they can relocate objects pointed to
by stale pointers).

2013-12-31 17:23:39 Tree
[b27852] by Alastair Bridgewater Alastair Bridgewater

gencgc: Simpler conservative root validation on non-x86oids.

* On "precise" gencgc targets (currently, non-x86oids), we only
ever treat valid object pointers as conservative (pinned) roots,
so most of the validity checking is unnecessary.

* Add a shortcut path through valid_conservative_root_p() for
this precise case.

2013-12-31 17:23:38 Tree
[8f79e6] by Alastair Bridgewater Alastair Bridgewater

gencgc: Extract go/no-go decision logic from preserve_pointer().

* Approximately 1/pi of preserve_pointer() is involved in
verifying that the candidate pointer is valid as a conservative
root. This is easily extractable logic that acts as a predicate,
so box it up as one, calling it as a guard clause from where it
originally stood.

2013-12-31 17:23:38 Tree
[82cd14] by Stas Boukarev Stas Boukarev

Handle run-program with :directory nil.

Handle :directory nil as advertised, not changing the current directory.

Fixes lp#1265077.

2013-12-31 13:33:53 Tree
[0cd473] by Alastair Bridgewater Alastair Bridgewater

gencgc: Reduce conservatism for pointers to unboxed pages.

* Because return addresses are unmarked, unboxed interior
pointers must be allowed to pin if they point within a code object.
Assuming that code objects are only allocated to CODE_PAGE_FLAG
pages, preserve_pointer() will allow any code_page_p() true page
to be pinned by any pointer to within its body.

* But code_page_p() was broken, being an alternate version of
page_allocated_p() in implementation, with no warning or comment.
The net effect is extra conservatism: Any pointer to allocated
space will pin whatever page it points to.

* Code pages aren't always allocated to CODE_PAGE_FLAG pages,
for a couple of reasons. Until we can maintain such an invariant,
we can only use the weaker version (which DOES hold): code objects
are always allocated to boxed pages (either BOXED_PAGE_FLAG or

* Reduce conservatism in the GC by making code_page_p() delegate
to page_boxed_p(), thus tightening up the test for pinning unboxed

* Also leave the "correct" logic for code_page_p() in place but
disabled (and make it actually BE correct), and add a comment
explaining part of what's going on.

2013-12-30 22:37:04 Tree
[ba008a] by Alastair Bridgewater Alastair Bridgewater

external-formats: Add support for MacRoman character encoding.

* This is rarely used these days, having been supplanted by the
use of UTF-8 with the adoption of OSX, but it is occasionally seen
"in the wild", or if someone has an interoperability concern with
antique macs. I was rather surprised to encounter a CSV file
recently, with data for an event in May of 2013, that happened to
be MacRoman encoded, and then further surprised to find that SBCL
had no support for the encoding.

* I have tested this interactively only, using OCTETS-TO-STRING
to verify that a sequence of the upper half of the 8-bit encoding
space was correctly mapped to unicode characters.

2013-12-23 19:51:25 Tree
[272a4f] by Stas Boukarev Stas Boukarev

Really restore clisp cross-compilation.

Some more loop madness.

Patch by Vasily Postnicov, lp#1261451.

2013-12-20 00:34:17 Tree
[b1b43e] by Stas Boukarev Stas Boukarev

Restore cross-compilation with CLISP.

Due to WHILE before FOR in a LOOP in sb-impl::split-version-string.

Reported by Vasily Postnicov.

2013-12-16 14:22:23 Tree
[df2175] by Joshua Elsasser Joshua Elsasser

Mark (RANGE-REDUCTION PRECISE-PI) as failing on openbsd x86-64.

I don't believe it has ever passed on that platform, so mark it as
such to make any new test failures more noticable.

2013-12-09 04:23:04 Tree
[961c6b] by Stas Boukarev Stas Boukarev

Fix cut-to-width in the presence of bad constants in dead code.

Unreachable branches may have mismatching types and constant values,
and when cut-to-width is run before such nodes are deleted, it gets

Reported by Douglas Katzman.

2013-12-07 09:04:14 Tree
Older >