sbcl Log


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

More associativity-based constant-folding

Detect patterns like (+ (- x k1) k2) and (* (/ x k1) k2).

2013-06-08 06:29:29 Tree
[3c25a1] by Paul Khuong Paul Khuong

Enable signed modular arithmetic for LOGIOR

When the result of a bitwise or is known to be negative, we don't
need to compute the most significant bits (they're all ones).

2013-06-08 06:29:23 Tree
[54752b] by Paul Khuong Paul Khuong

Enable more modular arithmetic

The rewrites now trigger when the result type for LOGAND or
MASK-SIGNED-FIELD is an union of integer types.

2013-06-08 06:28:32 Tree
[a8419e] by Paul Khuong Paul Khuong

Complete cut-to-width for modular arithmetic

For each modular argument, go through the nodes that provide its
value and try to narrow down their bitwidth. If we fail on any and
the result might be too wide, splice in an explicit call to LOGAND
or MASK-SIGNED-FIELD. Skip that last step if the value is an argument
to an equivalent LOGAND or MASK-SIGNED-FIELD.

Test case by Eric Marsden.

2013-06-08 06:26:43 Tree
[4f0bd9] by Paul Khuong Paul Khuong

Fix negation of SIMD-PACK types

type-union2 can punt and return NIL.

2013-06-08 06:25:41 Tree
[51bc00] by Lutz Euler Lutz Euler

Simplify getting the contents of assembler segments.

Extend FINALIZE-SEGMENT to compact the segment's buffer and provide an
exported function to get at this buffer. This resolves an old KLUDGE
noted at ON-SEGMENT-CONTENTS-VECTORLY, making this function unnecessary.

There are several benefits to this change: First, the consumers of
assembler segment's contents, like WRITE-SEGMENT-CONTENTS which is used
for example during FASL dumping, or MAKE-CORE-COMPONENT, now call
WRITE-SEQUENCE respectively COPY-BYTE-VECTOR-TO-SYSTEM-AREA only once
per segment and not once per the pieces of the segment's contents that
ON-SEGMENT-CONTENTS-VECTORLY provided, which makes for less overhead.

Second, this allows to greatly simplify the whole operation of
DISASSEMBLE-ASSEM-SEGMENT, in the course deleting several helpers of it.
So far this repartitioned the pieces of the segment's contents from
ON-SEGMENT-CONTENTS-VECTORLY, while caring not to split the contents
inside instructions, which needed a sizable amount of code. Now the
segment's contents are simply disassembled as a whole. Also, the old
code (specifically SEGMENT-OVERFLOW) didn't take prefix instructions
into account correctly which surfaced as the bug in lp#1085729.

Fixes lp#1085729.

Also, fix an unrelated typo in NEWS.

2013-06-06 14:26:30 Tree
[315285] by Stas Boukarev Stas Boukarev

Stop exporting unused symbols.

2013-06-05 23:11:42 Tree
[09a00b] by Stas Boukarev Stas Boukarev

Factor out read-var-integer into a function.

read-var-integer macro is used quite a number of times, expand the
macro into a SETF, which calls %read-var-integer, which does actual
reading. Reduces the core size by 65KB on x86-64.

2013-06-05 19:28:44 Tree
[a37b7e] by Stas Boukarev Stas Boukarev

sb-bsd-sockets: More robust inet-socket-bind test on Windows.

Nested unwind-protects aren't supported on Windows.

2013-06-05 10:50:52 Tree
[f6b2e3] by Stas Boukarev Stas Boukarev

Get rid of vm-support-routines indirection.

VM routines were defined using two functions, one calling another
through structure slots. This is unnecessary, removing leads to a
~200KB core size reduction on x86-64.

2013-06-05 18:24:54 Tree
[cd5a85] by Stas Boukarev Stas Boukarev

Optimize (mod FIXNUM) type-checks on x86oids.

Instead of two (and (>= x 0) (< x FIXNUM)) comparisons, do one
unsigned.
(mod power-of-two) is further optimized by doing one mask test
determine the range and fixnumness in one go.

2013-06-05 14:38:42 Tree
[f79e7d] by Stas Boukarev Stas Boukarev

sb-bsd-socket tests: don't listen on a predefined port.

Listening on 1974 prevents from building contribs in parallel.

2013-06-04 20:59:33 Tree
[f44f6d] by Christophe Rhodes Christophe Rhodes

fix CL case conversions of characters involving iota subscript

Oh boy. Judging by the length of the web page explaining the issue
(at <http://www.tlg.uci.edu/~opoudjis/unicode/unicode_adscript.html>)
this is a bit of a minefield. I hope that this doesn't contribute
further to the trouble...

Although the combined _WITH_PROSGEGRAMMENI characters are of
general class "Lt" (i.e. titlecase), for CL purposes we treat them
as the uppercase equivalent of the lowercase _WITH_YPOGEGRAMMENI
characters (as directly specified by the case mapping data in
UnicodeData.txt). This is a little awkward, and involves a bit
of rearrangement in the indices of the misc table entries to make
the (CL) uppercase/lowercase tests efficient, but seems to be the
best of all possible worlds given that we must comply with CL's
character-to-character case mappings -- the alternative of not
providing an uppercase version of LOWERCASE_OMEGA_WITH_YPOGEGRAMMENI
seems even weirder.

The way this is done in ucd.lisp is a little bit kludgy, because we
have to avoid giving the same exception to the serbian titlecase
digraphs (Dz and friends) which mustn't map to anything, or else
we'd break invertibility. (The lowercase dz and uppercase DZ are
already (CL) case mappings of each other). Probably the thing which
will confuse future readers is that some (Unicode) titlecase
characters are (CL) upper-case-p.

2013-06-04 12:00:50 Tree
[0d51ca] by Paul Khuong Paul Khuong

Simpler and more precise type derivation for APPEND/NCONC

We can suppose that all but the last argument are lists when
deriving the return type... and the logic to compute the return
type can be much simpler: it's either a CONS, the last argument,
or we don't know which (yet).

2013-06-03 17:21:25 Tree
Older >