Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

sbcl Log


Commit Date  
[d5520a] by Stas Boukarev Stas Boukarev

Microoptimize (signed-byte 64) type test on x86-64.

Similar to the (unsigned-byte 64) one:
TEST CL, 3
MOV EAX, ECX
=>
MOV EAX, ECX
TEST AL, 3

Also add tests/run-tests-* to .gitignore.

2013-08-01 17:51:55 Tree
[eca54d] by Christophe Rhodes Christophe Rhodes

fix manual build under texinfo 5

Texinfo 5 is more assertive about its syntax: macros with
non-alphanumerics have never actually been allowed, but we used to be
able to get away with @& to escape an ampersand under @iftex, and
defining @&key macros under @iffnottex. Nuh-uh, not any more. (fixes
lp#1189146)

The details of the indexes, particularly in html format, differ slightly
under texinfo 4 and 5 (related to the trickery around hiding package
prefixes for decent alphabetization). It might be nice to sort this out
Once And For All, eventually.

2013-07-31 13:06:43 Tree
[d62278] by Stas Boukarev Stas Boukarev

Microoptimize comparisons with 0 on x86oids.

Implement the common idiom of using TEST REG, REG in place of CMP REG,
0, saving 1 byte, for fast-if->/< VOPs.

2013-07-28 18:26:18 Tree
[49ab16] by Stas Boukarev Stas Boukarev

Optimize (unsigned-byte 32/64) type tests on x86oids.

Instead of doing
TEST CL, 3
MOV EAX, ECX

do
MOV EAX, ECX
TEST AL, 3

AL has shorter encoding and can save 1 byte with ECX or 4 bytes with
ESI, which doesn't have SIL on x86.

Also revert a part of the previous commit which used untagged
pointers, which can cause problems with the GC.

2013-07-28 16:41:58 Tree
[205611] by Stas Boukarev Stas Boukarev

Microoptimize type-tests on x86oids.

On x86-64 in %test-lowtag instead of doing:

MOV EAX, ECX
AND AL, 15
CMP AL, 15
do
LEA EAX, [RCX-15]
TEST AL, 15

Which allows to save one byte.

On x86 this optimization is already applied, but since LEA loads a
32-bit integer, EAX can be later used as an already untagged pointer
in %test-headers: MOV EAX, [ECX-7] => MOV EAX, [EAX], which takes one
byte less to encode.

2013-07-28 15:46:09 Tree
[9ff18d] (sbcl-1.1.10) by Christophe Rhodes Christophe Rhodes

1.1.10: will be tagged as "sbcl-1.1.10"

2013-07-28 14:14:11 Tree
[dacd3f] by Paul Khuong Paul Khuong

Modular integer %NEGATE on x86oids

Forms like (logand (- word) word) now compute the negation in modular
arithmetic, without consing an intermediate bignum, just like integer
addition, multiplication and subtraction.

The VOPs are trivial, and should be easily added on all other
platforms, I just don't have access to build hosts.

2013-07-18 21:04:13 Tree
[ba39d1] by Paul Khuong Paul Khuong

Pack (mostly) stack TNs according to lexical scope information

Packing TNs from shallow scopes before more deeply nested one
is a perfect elimination order when the live ranges span the
full scope (the interference graph is a comparability graph).
Use that as a heuristic, and do that for TNs that are known
to have such simple live ranges before the rest: this ensures
that bad TNs don't mess everything up.

The result is much tighter stack allocation (most of the effect
comes from initialising stack frames at a smaller size, and growing
less aggressively), and fewer long-lived stray references.

Incidentally: fix catch block packing on win32, solving lp#1072739

2013-07-18 21:02:28 Tree
[a21899] by Paul Khuong Paul Khuong

Grow regalloc datastructures geometrically for unbounded SCs

2013-07-18 20:17:30 Tree
[3b98d3] by Paul Khuong Paul Khuong

Smaller stack frames on x86oids

Start at 4 slots (for some reason, it seems that 3 isn't really
the minimum, and grows by one slot at a time.

2013-07-18 20:17:30 Tree
[44fa19] by Paul Khuong Paul Khuong

Disentangle storage base initial size from growth increments

Before, an initial stack frame size of 8 meant that the stack frame
always grew in increments of 8. Not only is a large initial size bad
for GC (it leaves more dead references untouched), but a large increment
is even worse.

2013-07-18 20:17:30 Tree
[df2d63] by Paul Khuong Paul Khuong

Insert explicit cut to width when needed

When modular arithmetic operations are replaced with specialised
modular variants, the result's bitwidth is determined by the variant,
and might be wider than expected. If necessary, insert an explicit
cut to the exact bitwidth before returning a value in a non-modular
context.

Spotted by pfdietz's random tester.

Fixes lp#1199428.

2013-07-18 19:43:24 Tree
[be3993] by Paul Khuong Paul Khuong

Avoid uselessly re-scanning modular arithmetic expressions

When modular arithmetic transforms have already fired for a
subexpression, and that subexpression's width is at most as wide
as the bitwidth we're cutting to, there is no need to re-traverse
the subexpression.

There was already some code to detect that case. Make it more general,
and, more importantly, sound.

2013-07-18 19:43:24 Tree
[e24061] by Paul Khuong Paul Khuong

No more destructive MERGE of shared data in best-modular-version

The old code worked by accident: few/no platform implements
untagged signed modular arithmetic VOPs.

The new code handles that common case to avoid consing a fresh list
when the MERGE will be an identity.

2013-07-18 19:43:24 Tree
[953e29] by Stas Boukarev Stas Boukarev

Optimize TYPEP of (MOD X) on x86/x86-64.

Optimize type-tests in the same vein as type-checks previously, and
implement type-checks by means of type-tests. Further optimize it by
avoiding doing fixnum tests on known fixnums and boxing of
signed/unsigned numbers.

2013-07-16 01:12:51 Tree
[220651] by Paul Khuong Paul Khuong

Handle unbounded integer types in INTEGER-TYPE-NUMERIC-BOUNDS

If any of the integer type in the union lack upper or lower bounds,
immediately abort with unknown bounds (rather than taking the MIN
of NIL and an integer).

Thanks to pfdietz for his random testing.

Fixes lp#1199127.

2013-07-08 23:45:37 Tree
[8fb553] by Lutz Euler Lutz Euler

Add a regression test for lp#1194673.

2013-07-07 13:06:47 Tree
[e877a2] by Christophe Rhodes Christophe Rhodes

restore CLISP cross-compilability

s is the marker for short-float, not single-float. Use f instead.

2013-07-05 16:25:18 Tree
[b4fa25] by Stas Boukarev Stas Boukarev

Update ASDF to 3.0.2.

2013-07-04 09:58:54 Tree
[a20451] (sbcl-1.1.9) by Christophe Rhodes Christophe Rhodes

1.1.9: will be tagged as "sbcl-1.1.9"

2013-07-04 08:29:48 Tree
[43df38] by Christophe Rhodes Christophe Rhodes

fix typo in FFI chapter

noted by Michael Crouch (lp#1197129)

2013-07-03 09:26:01 Tree
[fd2101] by Paul Khuong Paul Khuong

Revert to binding *package* in bootstrappy code

I see no sane way to use sb!ext:print-symbol-with-prefix or
sb-ext:... in ~//. Bind *package* to :keyword instead, for
undefined function conditions.

Reported by adeth on #lisp.

2013-06-29 23:57:25 Tree
[616e16] by James M. Lawrence James M. Lawrence , pushed by Stas Boukarev Stas Boukarev

Fix SLEEP on 32-bit platforms.

2013-06-28 13:59:53 Tree
[622b19] by Paul Khuong Paul Khuong

Fix a typo in the block comment on encoding/decoding universal times

Might as well, while we're updating URLs.

Spotted by Luis Oliveira.

2013-06-28 13:08:11 Tree
[d8665c] by Paul Khuong Paul Khuong

s/32/n-word-bits/ in bignum-index

For some reason we missed that during all the work on x86-64. Then
again, our static inference is good enough that no runtime check
seem to be left to detect that the declaration is wrong.

2013-06-28 06:14:04 Tree
Older >