sbcl Log


Commit Date  
[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
[d9aa54] by Paul Khuong Paul Khuong

Consistently force (double) rounding of foreign x87 values

SBCL always functions in 64 bit mode, but switches to 80 bit for
foreign calls. Return values might be unexpectedly precise.

Force a round-trip from the x87 unit and the stack to make sure
FP return values are rounded to the correct width.

2013-06-08 06:33:39 Tree
[14538e] by Paul Khuong Paul Khuong

Look for left-over dead code when *check-consistency*

If ir1opt leaves dead code around, later parts of the compilation
pipeline can become seriously confused. Detect such issues earlier,
rather than as mysterious failures.

2013-06-08 06:32:47 Tree
[688be4] by Paul Khuong Paul Khuong

Simplify RATIONAL/constant FLOAT and INTEGER/constant RATIO comparisons

The spec says that rationals and floats are compared by first calling
RATIONAL on the float. Constant fold the call to RATIONAL, and round
to an integer if applicable.

2013-06-08 06:31:35 Tree
[7f579b] by Paul Khuong Paul Khuong

Silence notes about being specialised EQ templates on x86oids

During LTN, we emit notes when the final chosen template costs
at least 6 more units than an unapplicable template. Adjust the
costs of EQ VOPs to avoid triggering this logic.

2013-06-08 06:30:38 Tree
[1daa58] by Paul Khuong Paul Khuong

Silence the transforms that detect rightward arithmetic shift

It seems most of the time, the notes complained about clear left
shifts.

2013-06-08 06:30:38 Tree
[8de43b] by Paul Khuong Paul Khuong

Mark DATA-VECTOR-REF[-WITH-OFFSET] as unsafely flushable

Unsafe code will be able to eliminate array reads as dead code.

2013-06-08 06:30:37 Tree
[f69e89] by Paul Khuong Paul Khuong

Adjust internal encoding for TN location for larger SC count limit

We need one more bit to encode values up to 62.

2013-06-08 06:30:37 Tree
[91a5cb] by Paul Khuong Paul Khuong

New VOP for LOGAND of bignum and word-sized constant on x86-64

We can directly read the first bignum digit and AND it.

2013-06-08 06:30:36 Tree
[175fc9] by Paul Khuong Paul Khuong

MASK-SIGNED-FIELD VOPs on x86-64

Other platforms go through the MOVE hack like before.

2013-06-08 06:30:35 Tree
[690183] by Paul Khuong Paul Khuong

More identity folding for LOGAND and LOGIOR with constants

* Handle more complex cases than only powers of two:
compare the variant argument with a power-of-two-sized
prefix of the constant bit pattern.

* Add parallel logic for LOGIOR: if all the ones we're ORing in
are already set because the variant argument is a small enough
negative integer, we've got an identity.

* This is a bit hairy, so exhaustively check the logic with small
values.

2013-06-08 06:30:27 Tree
Older >