This branch is an import of the HEAD branch of the Git repository at git://git.code.sf.net/p/sbcl/sbcl.
Last successful import was 1 hour ago.
- 6859. By Stas Boukarev 17 hours ago
Fix structure documentation.
Incorrect usage of #-sb-xc-host prevented structure docstrings from
being attached to SBCL structures.
- 6858. By Douglas Katzman 18 hours ago
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.
- 6855. By Stas Boukarev on 2014-03-10
Fix non-top-level defstruct.
Ensure constructors share the lexical environment of defstruct.
- 6853. By Jan Moringen on 2014-03-09
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.
- 6851. By Douglas Katzman on 2014-03-08
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,
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
- Branch format:
- Branch format 7
- Repository format:
- Bazaar repository format 2a (needs bzr 1.16 or later)