sbcl Log


Commit Date  
[d2876d] by Lutz Euler Lutz Euler

Restore building on x86-64 when N-FIXNUM-TAG-BITS > 1.

Since commit 6794373d588cef4333fbbb9d04b931ae0a414a7f the build breaks
under this condition when compiling the VOP FIXNUMP/SIGNED-BYTE-64 in
src/compiler/x86-64/type-vops.lisp:

caught WARNING:
The variable EAX is defined but never used.

Fix this by actually using the declared temporary. While at it, don't
force the temporary into RAX any longer as that offers no advantage over
using any of the other registers (specifically, none of the machine
instructions used in the VOP have a shorter encoding when using RAX).

2014-03-02 16:39:28 Tree
[c62a5d] by Alastair Bridgewater Alastair Bridgewater

compiler/disassem: Fix build on some build hosts.

* The use of WITH-SLOTS on a structure slot named POSITION
causes a build failure when building from SBCL 1.0.28.

* Krystof tells me that the use of WITH-SLOTS on structures
isn't portable ANYWAY.

* Fix, by rewriting the offending code to use the structure slot
accessors explicitly.

2014-03-02 14:28:37 Tree
[a6d104] by Douglas Katzman Douglas Katzman

Minor fix to DEFINE-ARG-TYPE when editing/reloading definitions.

2014-03-02 00:25:13 Tree
[c88b29] by Lutz Euler Lutz Euler

Smaller and more correct moving of single-floats on x86-64.

In the VOPs MAKE-SINGLE-FLOAT, MOVE-FROM-SINGLE, MOVE-TO-SINGLE-REG and
SINGLE-FLOAT-BITS the MOVD instruction is used to move data between an
XMM and a general-purpose register. Use the 32-bit instead of the 64-bit
form of the instruction there which often allows to spare the REX
prefix.

MAKE-SINGLE-FLOAT actually becomes more correct with this change: When
given a negative argument it used to set bits 32-63 of the destination
XMM register to 1, breaking the invariant that unused parts of XMM
registers should be zero.

The users of MAKE-SINGLE-FLOAT internal to SBCL happen to avoid being
negatively affected by this. One is SINGLE-FLOAT-FROM-BITS (used to
float bignums) which doesn't use the VOP but the function with the same
name which returns the float as a tagged number in a general-purpose
register, thus taking the XMM register out of the equation. The second
is RANDOM, which uses the VOP but never passes it a negative number.

Nevertheless, using the result of MAKE-SINGLE-FLOAT in a complex
single-float operation can make the 1 bits visible: as a QNaN in the
imaginary part.

In the VOP MAKE-SINGLE-FLOAT there is another 64-bit MOVD, not from a
general-purpose register to an XMM register, but from the signed-stack.
For the same correctness reason this also needs to be converted to move
only 32 bits, so use MOVSS there. (I couldn't test this change as I
found no way to make the compiler use this VOP with TNs of the
combination of storage classes needed to select this specific clause.)

Correct the comment at the top of the file for 64-bitness.

Add a test for MAKE-SINGLE-FLOAT and convert the test file's encoding to
UTF-8 while at it.

2014-03-01 22:04:27 Tree
[c49015] by Stas Boukarev Stas Boukarev

Simplify sb-int:encapsulate.

Instead of using special variables sb-int:basic-definition and
sb-int:arg-list, call the wrapper function with the original function
and its arguments as arguments.

2014-03-01 14:58:09 Tree
[2ea3b0] by Christophe Rhodes Christophe Rhodes

sxhash on LAYOUT objects can use the CLOS-HASH slot

... dunno yet if it actually makes a difference in my use case's
timings

2014-03-01 11:38:08 Tree
[84140c] by Douglas Katzman Douglas Katzman

Remove some unnecessary package prefixes

2014-03-01 04:38:28 Tree
[deebda] by Douglas Katzman Douglas Katzman

Make the disassembler's :USING clause work as intended

2014-03-01 04:06:19 Tree
[b4b05a] by Douglas Katzman Douglas Katzman

De-obfuscate DEFINE-INSTRUCTION-FORMAT.

Previously if two unrelated formats had same-named args in the same positions,
specifying {prefilter,labeler,printer} as lambda expressions could clobber
one or the other format, e.g.
(define-instruction-format (foo 8)
(bits :field (byte 2 2) :printer (lambda (a b c) (something a b c))))
(define-instruction-format (bar 8)
(bits :field (byte 2 2) :printer (lambda (a b c) (otherthing a b c))))
produced two DEFPARAMETERs for the same symbol:
(DEFPARAMETER *BITS-0-PRINTER-WRAPPER* (LAMBDA (A B C) ...))
These are now named not to collide in most cases.

Incompatible changes- :INCLUDE is parsed by the macroexpander and not
evaluated. Access functions for bits of a dchunk are generated only if
requested via a :READER option, and they appear in the target core.

Also fixed DEFINE-ARG-TYPE not to accept a :VALUE, on account of that
not being propagated by SET-ARG-FROM-TYPE, which seemed correct;
and DEFTYPE FILTERED-VALUE-INDEX was off by 1.

2014-03-01 03:23:48 Tree
[a14aed] (sbcl-1.1.16) by Christophe Rhodes Christophe Rhodes

1.1.16: will be tagged as "sbcl-1.1.16"

2014-02-28 15:53:09 Tree
[d99cbc] by Christophe Rhodes Christophe Rhodes

support Wine builds of sb-bsd-sockets

We get a different error telling us that UDP Streams aren't allowed

2014-02-26 14:51:47 Tree
[1d9728] by Stas Boukarev Stas Boukarev

sb-profile: use ENCAPSULATE to wrap functions around.

For better compatibility with generic functions, use ENCAPSULATE.

Fixes lp#309086.

2014-02-23 18:09:12 Tree
[c89ad4] by Stas Boukarev Stas Boukarev

Change encapsulation to use functions instead of evaluation forms.

In preparation for making sb-profile use ENCAPSULATE, reducing
profiling overhead from evaluation.

2014-02-23 16:12:27 Tree
[6d5b30] by Zulu Zulu , pushed by Stas Boukarev Stas Boukarev

Handle bogus std handles on win32.

2014-02-22 19:44:44 Tree
[afdb50] by Stas Boukarev Stas Boukarev

Reduce consing in iterative regalloc.

The COLOR slot of VERTEX is defined as (cons color sc), but SC is
already accessible through the TN slot, as (tn-sc (vertex-tn vertex)).
Store only the color number in the COLOR slot, reducing consing.

2014-02-22 19:10:34 Tree
[e6f088] by Stas Boukarev Stas Boukarev

Speed up iterative regalloc a little.

Avoid consing an intermediate list in vertex-color-possible-p.

2014-02-22 18:36:27 Tree
[67e380] by Stas Boukarev Stas Boukarev

Improve LOGAND-BIGNUM/C VOP on x86-64.

Avoid putting unboxed constants into the code when possible.

2014-02-22 15:43:04 Tree
[ee98f8] by Stas Boukarev Stas Boukarev

Add transforms for SORT and STABLE-SORT.

Transform SORT and STABLE-SORT into more specialized functions when
possible,

2014-02-22 15:43:04 Tree
[3124ac] by Douglas Katzman Douglas Katzman

x86-64 allows R12 as an index register in SIB addressing.

As R12 is wired to the current thread ptr, this fix has little practical
impact, but corrects the inconsistency that "lea Rn,[rax+r12]" is
effectively identical to "lea Rn,[r12+rax]" except the former caused
the assembler to crash and the disassembler to be confused.

2014-02-22 05:24:23 Tree
[a10227] by Christophe Rhodes Christophe Rhodes

define sane escaping in win32 pathname namestrings

We can't use \\ to escape, because it's the directory separator; that
way lies madness. There's some evidence from random web searching that
win32 users might not be too confused with ^ as an escape character, so
try that.

2014-02-21 17:02:28 Tree
[f6f557] by Christophe Rhodes Christophe Rhodes

improve generic function encapsulation

Perform the encapsulation in an :AROUND method specialized on
STANDARD-GENERIC-FUNCTION, so that subclasses transparently inherit
encapsulation handling while still being able to override the standard
COMPUTE-DISCRIMINATING-FUNCTION behaviour. (This is method structure
that AMOP allows implementations, as the :AROUND method is an
extending one -- it calls CALL-NEXT-METHOD)

2014-02-21 17:02:28 Tree
[1f555b] by Stas Boukarev Stas Boukarev

Resolve pathnames with :back.

Remove as much :back as possible at MAKE-PATHNAME time.

Handle any left :back in UNPARSE-NATIVE-UNIX/WIN32-NAMESTRING the same as
:up.

2014-02-21 15:24:59 Tree
[4f9143] by Douglas Katzman Douglas Katzman

Less repetitive definitions of x86 shift instructions.

2014-02-21 03:20:08 Tree
[f91c85] by Douglas Katzman Douglas Katzman

Prevent x86-64 disassembly from decoding unboxed constants as opcodes.

Also, *DISASSEM-LOCATION-COLUMN-WIDTH* gets a new feature - a width of zero
will not show addresses, which makes diffing work with relatively less
pain; and a width of NIL will show addresses as compactly as possible.

2014-02-20 02:37:17 Tree
[dab3af] by Lutz Euler Lutz Euler

Small cleanup on x86-64: Use REG-IN-SIZE instead of MAKE-{BYTE,DWORD}-TN.

In VOP definitions, when a TN for a part of a register is needed,
in some places REG-IN-SIZE is used, in others MAKE-BYTE-TN or
MAKE-DWORD-TN. REG-IN-SIZE can do everything the other two functions
can, so use it in all cases to make the code more regular, and delete
the obsolete functions.

2014-02-13 19:24:49 Tree
Older >