sbcl Log


Commit Date  
[d30da1] by Paul Khuong Paul Khuong

Defer some sanity checks to after testing for value refence to inline functions

The functional corresponding to an inline function can be marked as dead when
there remains references in for-value contexts. Detect such references before
making sure the function is still live.

Reported with a reduced test case by Teemu Likonen to sbcl-devel on 2013-06-24.

2013-06-28 04:18:16 Tree
[b88467] by Jan Moringen Jan Moringen , pushed by Paul Khuong Paul Khuong

In MAKE-THREAD, use WITH-SYSTEM-MUTEX for locking *MAKE-THREAD-LOCK*

Otherwise MAKE-THREAD could be interrupted after having
locked *MAKE-THREAD-LOCK*. If the interrupting code also called
MAKE-THREAD, a recursive lock attempt for *MAKE-THREAD-LOCK* would
occur.

The problem could be easily triggered by

(MAKE-TIMER ... :THREAD <T or a thread>)

Also move let bindings of SETUP-SEM, REAL-FUNCTION, ARGUMENTS and
INITIAL-FUNCTION and the NOT *GC-INHIBIT* assertion out of the
critical section.

Tests have been added in threads.pure.lisp and timer.impure.lisp.

fixes lp#1180102.

2013-06-28 04:18:16 Tree
[a5e4db] by Attila Lendvai Attila Lendvai , pushed by Paul Khuong Paul Khuong

Wrap the body of sb-debug:backtrace with with-debug-io-syntax.

Added with-debug-io-syntax macro.

Some whitespace changes as well.

2013-06-28 04:18:16 Tree
[810b20] by Attila Lendvai Attila Lendvai , pushed by Paul Khuong Paul Khuong

Provide more info in debugger-disabled-hook.

Before this change if there was an error printing the condition object,
then we didn't even try printing the backtrace afterwards, which can be
a useful source of information even if the condition printing has failed.

Some modifications by Paul Khuong.

2013-06-28 04:18:16 Tree
[417910] by Attila Lendvai Attila Lendvai , pushed by Paul Khuong Paul Khuong

Make the printing of a slot-unbound error more error tolerant.

Especially against errors coming from custom PRINT-OBJECT methods, in which
case only print the TYPE-OF the instance. Also, print fully qualified
symbol names.

Slightly modified by Paul Khuong.

2013-06-28 04:18:16 Tree
[c7313d] by Attila Lendvai Attila Lendvai , pushed by Paul Khuong Paul Khuong

Use sb!ext:print-symbol-with-prefix in implicit-generic-function-warning.

and export this useful function from sb-exr.

Slight mangling by Paul Khuong.

2013-06-28 04:18:16 Tree
[3e3cd6] by Pierre Thierry Pierre Thierry , pushed by Paul Khuong Paul Khuong

Update URL of "Long, Painful History of Time"

Previous URL was not available anymore (404 error)
Also rewrapped the paragraph to the same width as the others

2013-06-28 04:18:16 Tree
[8900ba] by Stas Boukarev Stas Boukarev

Simplify EMIT-VOP further.

EMIT-VOP is only ever used in conjunction with INSERT-VOP-SEQUENCE, by
returning two values: first and last VOPs, all linked together,
INSERT-VOP-SEQUENCE then inserts them into the block. But nowadays
EMIT-VOP always returns the same VOP as the second value.
* EMIT-VOP now returns one value, the emitted VOP.
* INSERT-VOP-SEQUENCE is renamed to INSERT-VOP, accepts only one VOP.
* A new function EMIT-AND-INSERT-VOP is added, which combines them,
and is used anywhere where EMIT-VOP was used.

This makes things less complicated, and reduces core size by 32KB, the
same as the previous commit, for a total of 64KB of savings
essentially for free.

(Also squeeze a couple of line-break fixes)

2013-06-24 10:28:30 Tree
[092fae] by Stas Boukarev Stas Boukarev

Simplify EMIT-GENERIC-VOP.

Since there's only one kind of templates now, there's no need for
indirection. Rename EMIT-GENERIC-VOP to EMIT-VOP, remove EMIT-FUNCTION
slot from TEMPLATE, call EMIT-VOP directly.

2013-06-24 09:50:35 Tree
[6e8818] by Stas Boukarev Stas Boukarev

backtrace: don't cons large lists when RCX is overwritten inside XEPs.

To present a list with the actual number of passed arguments in the
backtrace, clean-xep used the arg-count register and added missing
arguments in the form of #<unknown>, but if the register is
overwritten by other code, it could cons very large lists, exhausting
heap. Do such arg-list clean up only upon INVALID-ARG-COUNT-ERROR.
Fixes lp#1192929.

2013-06-22 15:37:18 Tree
[77641d] by Joshua Elsasser Joshua Elsasser

Hopefully fix the windows build to grovel time structures correctly.

It is a little misleading to say "correctly" since struct timespec
doesn't really exist on windows. Groveling the definition that we
define in our own pthreads wrapper seems the most consistent choice.

The grovel-headers.c changes have only been tested in isolation, not
with a real build. Thanks to Kyle Isom for testing, any resulting
build problems are entirely my fault.

2013-06-20 03:12:38 Tree
[7230b5] by Joshua Elsasser Joshua Elsasser

Grovel timeval and timespec struct definitions rather than hard-coding.

2013-06-20 03:12:38 Tree
[491b55] by Paul Khuong Paul Khuong

Fix instruction encoding for XMM shifts with immediate count

x86 keeps getting more and more devious: the source/dest operand
is in the r/m field for these instructions, so REX.B must be set,
rather than REX.R, to access > xmm7. Intel's new documentation
seems clearer about these issues, at least.

2013-06-18 17:23:42 Tree
[d5c823] by Stas Boukarev Stas Boukarev

check-mod-fixnum: correct the test for power-of-two.

Testing for the power of two was performed on a fixnumized number,
causing the optimization for power-of-two to be never applied.

2013-06-11 11:20:10 Tree
[5a2409] by Stas Boukarev Stas Boukarev

Add a missing :suppress-errors keyword for WRITE defknown.

2013-06-10 18:54:55 Tree
[02f7f8] by Christophe Rhodes Christophe Rhodes

Note removal of post-receive-email in NEWS

2013-06-10 12:26:27 Tree
[e494c6] by Christophe Rhodes Christophe Rhodes

remove git/ directory

The scripts therein weren't directly relevant for SBCL development,
only for infrastructure to assist that development; additionally,
they are derived from git examples licensed under the GPL, and it
was difficult to explain the effects of this in a short paragraph
in the master COPYING file. A new sbcl-git-hooks repository is
available on SourceForge for these and any other infrastructure
customizations.

2013-06-10 12:20:14 Tree
[1c74f3] by Lutz Euler Lutz Euler

Micro-optimize DOUBLE-FLOAT-LOW-BITS on x68-64.

Instead of loading a 64-bit register from memory and zeroing the upper
32 bits of it by the sequence SHL reg, 32; SHR reg, 32 simply load the
corresponding 32-bit register from memory, relying on the implicit
zero-extension to 64 bits this does. This is smaller and faster.

For example, if the input to the VOP is a descriptor register, the old
instruction sequence is:

MOV RDX, [RDX-7]
SHL RDX, 32
SHR RDX, 32

and the new one:

MOV EDX, [RDX-7]

Regarding store-to-load forwarding this change should make no
difference: Most current processors can forward a 64-bit store to a
32-bit load from the same address. The exception is Intel's Atom which
can forward only to a load of the same size as the store; but it also
supports this only between integer registers, and DOUBLE-FLOAT-LOW-BITS
mostly or even always acts on memory slots written from an XMM register
(of the three storage classes it supports as input, for the first it
does the store itself from an XMM register; for the other two I have
investigated some disassemblies and always found the prior store to be
from am XMM register).

2013-06-10 11:44:20 Tree
[04d3bd] by Lutz Euler Lutz Euler

Make clean.sh clean up doc/internals, too.

For completeness and equal treatment with doc/manual.

2013-06-10 10:37:22 Tree
[2e8076] by Lutz Euler Lutz Euler

git: Add entries for the HTML manual to doc/internals/.gitignore.

These are the files and directories generated by "make html" in
doc/internals.

2013-06-10 10:37:22 Tree
[a3d461] by Lutz Euler Lutz Euler

git: New file doc/internals/.gitignore.

Ignore the files generated by building the internals manual.
Copied and adapted from doc/manual/.gitignore.

2013-06-09 15:58:52 Tree
[ded09c] by Paul Khuong Paul Khuong

Insert error traps after full calls inferred not to return

An explicit error trap after full calls to known functions helps
understand type derivation errors at runtime; it's certainly better
than executing arbitrary bytes.

Only do this when the return type was tightened to NIL via type
derivation; if a function is defknowned not to return, it really
shouldn't.

2013-06-08 16:53:16 Tree
[049339] by Paul Khuong Paul Khuong

Only use MASK-SIGNED-FIELD VOPs as last resorts

The MOVE hack usually leads to better code when it can be used.

2013-06-08 15:26:19 Tree
[a3b10e] by Paul Khuong Paul Khuong

Handle (aref v (+ i k)), with i negative

* Update the fndb to allow negative index values for foo-ref-with-offset
and foo-set-with-offset.

* Adjust VOPs accordingly.

* Fix fold-index-addressing: only fold constant offsets if the resulting
index argument would be a fixnum, and compute the new offset correctly
for subtractions.

* Unmark the corresponding test as an expected feailure, and add a test
to make sure VOPs for data-vector-{ref,set}-with-offset accept negative
index values (unless the element size is too small
to fold offsets in an EA).

* Un-package-qualify a few spurious test-util:with-test.

2013-06-08 06:34:58 Tree
[56d227] by Paul Khuong Paul Khuong

Fix a typo in bignum--ref-with-offset

2013-06-08 06:33:49 Tree
Older >