sbcl Log


Commit Date  
[5f2013] by Stas Boukarev Stas Boukarev

Better find-definition-sources-by-name for defstruct accessors.

Don't include source transforms for structure accessors in
sb-introspect:find-definition-sources-by-name since it doesn't provide
any useful information and only forces to select what is meant when
doing M-.

2014-03-11 23:52:04 Tree
[46517e] by Stas Boukarev Stas Boukarev

Don't dump sanctify-for-execution into FASLs on x86oids.

It's a no-op, removing which saves 1 byte per function.

2014-03-11 22:58:35 Tree
[fe6d1f] by Stas Boukarev Stas Boukarev

Don't expand into (eval-when (:load-toplevel :execute) ...).

That's the implicit mode of evaluation, omitting it makes the compiler
do slightly less work.

2014-03-11 22:07:53 Tree
[6b95ce] by Stas Boukarev Stas Boukarev

Fix structure documentation.

Incorrect usage of #-sb-xc-host prevented structure docstrings from
being attached to SBCL structures.

2014-03-11 05:13:28 Tree
[1aedd2] by Douglas Katzman Douglas Katzman

DISASSEMBLE-MEMORY should not fail an AVER about unboxed constants.

Unless disassembling either a code object or function, the disassembler
typically blows past the 'opcodes-length' slot of a disassem segment.
So just return without complaint.

2014-03-11 04:20:32 Tree
[27fe8f] by Douglas Katzman Douglas Katzman

Remove unnecessary bindings of *INFO-ENVIRONMENT* to itself

2014-03-10 12:55:25 Tree
[c3fa76] by Douglas Katzman Douglas Katzman

Slight improvement to UPDATE-SYMBOL-INFO

2014-03-10 03:39:28 Tree
[64fe49] by Stas Boukarev Stas Boukarev

Fix non-top-level defstruct.

Ensure constructors share the lexical environment of defstruct.

2014-03-10 03:35:18 Tree
[736191] by Douglas Katzman Douglas Katzman

Add meta-comment

2014-03-10 03:22:34 Tree
[cf0a1b] by Jan Moringen Jan Moringen

MAKE-CONDITION reports names of missing condition classes properly

MAKE-CONDITION used to rebind the variable containing the name of the
requested condition class to the condition classoid and thus NIL when
the classoid was not found.

Fixes lp#1199223.

2014-03-09 15:30:51 Tree
[e5d089] by Douglas Katzman Douglas Katzman

Allow building x86-64 target using CCL as host.

2014-03-09 00:50:39 Tree
[d76fbf] by Douglas Katzman Douglas Katzman

Refactor SYMBOL-FUNCTION and %COERCE-CALLABLE-TO-FUN for performance.

This change replaces %COERCE-CALLABLE-TO-FUN's XEP type-check with
type-based dispatch, which neither ameiliorates nor worsens the
unfortunate discrepancy between what the runtime accepts vs. what
the compiler accepts in contexts expecting a function designator.

To clarify: %coerce-callable-to-fun looked like it took general names
due to the use of %COERCE-NAME-TO-FUN which *does* allow conses,
e.g. (%coerce-name-to-fun '(setf car)) => #<FUNCTION (SETF CAR)>
but looks are deceiving, because %COERCE-CALLABLE- was DEFKNOWNed
to accept only (OR FUNCTION SYMBOL).

However in places where the compiler is able to resolve a name to an
fdefinition, such as (MULTIPLE-VALUE-CALL '(SETF FROB) ...),
it accepts an "extended function designator".
This was brought up on sbcl-devel last October.

The result of this patch plus elimination of hash-based lookup
brings speed of FUNCALL via a symbol within a small factor of calling
a function object, as in the following quick-and-dirty test:

(defun try-known (f) (funcall (truly-the function f) 'baz))
(defun try-either (f) (funcall f 'baz))
(time (loop repeat 1000000 do (try-known #'identity))) ; .008 sec, 15 Mcyc
(time (loop repeat 1000000 do (try-either #'identity))) ; .008 sec, 16 Mcyc
(time (loop repeat 1000000 do (try-either 'identity))) ; .014 sec, 28 Mcyc

Previously, the 'try-either' test performed thusly:
(time (loop repeat 1000000 do (try-either #'identity))) ; .012 sec, 24 Mcyc
(time (loop repeat 1000000 do (try-either 'identity))) ; .102 sec, 205 Mcyc

2014-03-08 22:52:19 Tree
[eca778] by Douglas Katzman Douglas Katzman

Delete obsolete comment re. MAP-ALLOCATED-OBJECTS

2014-03-08 05:16:39 Tree
[66d35e] by Douglas Katzman Douglas Katzman

Lock-free implementation of FIND-CLASSOID-CELL

No more hashtable nor mutex, and ~100% faster

2014-03-08 03:57:14 Tree
[caa5c2] by Erik Krisztián Varga Erik Krisztián Varga , pushed by Stas Boukarev Stas Boukarev

Change COND error message.

COND reports an error saying the clause is not a list even when it's
NIL, which is in fact an empty list.

Fix this by stating instead that clause is not a CONS. Also use
simple-type-error for the error.

Fixes lp#1254511

2014-03-07 22:04:44 Tree
[26268a] by Douglas Katzman Douglas Katzman

Maybe fix the ppc disassembler I hope.

This was a case of unconventional indentation fooling the reader (me)
into thinking a define-instruction appeared as a truly-top-level form.

2014-03-07 21:35:20 Tree
[041889] by Douglas Katzman Douglas Katzman

Change the default for *DISASSEM-LOCATION-COLUMN-WIDTH* to NIL.

One out of one hacker surveyed said it looked good to him.

2014-03-07 21:01:31 Tree
[d7f47c] by Douglas Katzman Douglas Katzman

Build the cross-compiler without all the disassembler nonsense

This takes ~2 sec. off compilation of x86/insts for the host

2014-03-07 20:13:22 Tree
[a7dd95] by Douglas Katzman Douglas Katzman

Improve GLOBALDB-SXHASHOID

2014-03-07 20:10:52 Tree
[0fb6f8] by Douglas Katzman Douglas Katzman

Initial reimplementation of globaldb - fast INFO and (SETF INFO).

The main idea is that info values are stored in a vector attached to
each symbol when possible. When not possible, the storage reverts
to the volatile [sic] environment, but still using a vector as the
payload instead of the chained hashing/alist approach.

This strives to be very fast at lookup at the expense of some added
complexity during updates. Performance testing suggests that it is
at least 2x to 3x faster at (INFO :class :type name), and FBOUNDP
is almost 4x faster. In a repeatable test, a file that took 1.8 seconds
to compile now takes 1.7 seconds but with more consing (as expected).

sbcl.core itself increases in size by <1% for 64-bit architecture,
and less for 32-bit architecture because there is proportionaly less
wasted space. A compact environment's table is effectively the
concatenation of all info vectors into one, so the added overhead is
in vector headers. However the fallback hash is now smaller,
so there used to be more wasted cells in the compact env.

Eventually the compact and volatile environments will both go away,
but not until the quasi-lockfree hashtable bootstraps properly.
The problem is an inability to use raw slots in early cold init.
It's actually not a problem of using them - the compiled code is ok -
but cold-init drops into 'ldb' due to how defstruct expands.

Among the bugs fixed by this (not straightforwardly testable) is that
the compact environment would hold into symbols that became otherwise
inaccessible. It no longer does, but still holds onto other names.

This patch builds with CCL as host, and for 32-on-64 and vice-versa,
so nothing seems terribly broken in terms of assumptions made.

2014-03-07 17:51:29 Tree
[797c2b] by Stas Boukarev Stas Boukarev

Remove some more of unused defstruct code.

Structure type tests from target-defstruct.lisp is no longer used.

2014-03-07 17:09:11 Tree
[4c7339] by Stas Boukarev Stas Boukarev

Reduce space taken by defstruct accessors.

Do not proclaim the types of accessors, since the transforms already
specify check the necessary types, this allows to save space on the
proclamations; and out-of-line transforms take a bit less space,
because the typecheck is no longer happening inside XEP.

This reduces core size by 896KB on x86-64-linux.

2014-03-07 16:15:04 Tree
[78e77e] by Jan Moringen Jan Moringen

STREAM-ERROR-POSITION-INFO signals errors in fewer situations

Previously, STREAM-ERROR-POSITION-INFO could signal errors for
non-character streams and closed streams.

Fixes lp1264902.

2014-03-07 01:37:25 Tree
[4e0a82] by Stas Boukarev Stas Boukarev

Remove src/code/typecheckfuns.lisp.

It's no longer used.

2014-03-07 01:26:02 Tree
[3be10f] by Jan Moringen Jan Moringen

INVOKE-RESTART-INTERACTIVELY behaves like INVOKE-RESTART w.r.t. test-function

* INVOKE-RESTART-INTERACTIVELY no longer consults the restart's
test-function when called with a RESTART instance, fixing interactive
invocation of restarts with test-functions e.g. from the debugger.

* Tests have been added in tests/condition.impure.lisp.

* Note that this change amends commit 69e6aef which fixed bug 774410
with the following change to INVOKE-RESTART:

> INVOKE-RESTART is also affected by the changes for bug
> 774410. However, it does not respect restart test functions when
> called with a RESTART instance (This is underspecified in CLHS and
> other implementations behave in various ways. However, behaving
> differently would make some restarts un-invokable).

commit 69e6aef should have changed INVOKE-RESTART-INTERACTIVELY in the
same way.

Reported-by: Vivitron in #sbcl

2014-03-07 00:30:32 Tree
Older >