Switch branches/tags
Commits on Mar 30, 2013
  1. Cuter print code

    pkhuong committed Mar 30, 2013
Commits on Mar 4, 2013
  1. Export SB-SIMD-PACK symbols from SB-EXT

    pkhuong committed Mar 4, 2013
     Export the SIMD-PACK type, the SIMD-PACK-P predicate,
     %make-simd-pack-{integer,single,double}, and
     These are far from useful yet, but at least future extensions
     can work with SB-EXT instead of SB-KERNEL.
     Also, says so in NEWS.
  2. SB-SIMD-PACK on x86-64

    pkhuong committed Mar 3, 2013
     * Enable them by default on x86-64;
     * And run some smoke tests, at least.
  3. Additional niceties and middle end support for short vector SIMD packs

    pkhuong committed Mar 3, 2013
     * Allow FASL loading/dumping of (boxed) SIMD packs, and mark them as
       trivially (i.e. without going through make-load-form) dumpable.
     * SIMD packs print nicely, and take the element type into account while
       doing so.
     * (C)TYPE-OF is more accurate for SIMD packs; this enables IR2 conversion
       to choose the right primitive type and storage class for constants.
    The FASL code was kept on life support by Alexander Gavrilov for too many years,
    and the printing logic is a very light adaptation of the output code he developed
    for his branch.
  4. Back end work for short vector SIMD packs

    pkhuong committed Mar 3, 2013
     * Platform-agnostic changes:
       - Declare type testing/checking routines.
       - Define three primitive types: simd-pack-double for packs
         of doubles, simd-pack-single for packs of singles, and
         simd-pack-int for packs of integer/unknown.
       - Define a heap-representation for 128-bit SIMD packs,
         along with reserving a widetag and filling the corresponding
         entries in gencgc's tables.
       - Make the simd-pack class definition fully concrete.
       - Teach IR1 how to expand SIMD-PACK type checks.
       - IR2-conversion maps SIMD-PACK types to the right primitive type.
       - Increase the limit on the number of storage classes: SIMD packs
         went way past the previous (arbitrary?) limit of 40.
     * Platform-specific changes, in src/compiler/target/simd-pack:
       - Create new storage classes (that are backed by the float-reg [i.e. SSE]
         storage base): one for each of double, single and integer sse packs.
       - Also create the corresponding immediate-constant and stack storage
       - Teach the assembler and the inline constant code about this new kind
         of registers/constants, and how to map constant SIMD-PACKs to which SC.
       - Define movement/conversion VOPs for SSE packs, along with VOP routines
         needed for basic creation/manipulation of SSE packs.
       - The type-checking VOP in generic/late-type-vops is extremely
         x86-64-specific... IIRC, there are ordering issues I do not
         want to tangle with.
     * Implementation idiosyncrasy: while type *tests* (i.e. TYPEP calls) consider
       the element type, type *checks* (e.g. THE or DECLARE) only check for
       SIMD-PACKness, without looking at the element type.  This is allowed by the
       standard, is similar to what Python does for FUNCTION types, and helps
       code remain efficient even when type checks can't be fully elided.
    The vast majority of the code is verbatim or heavily inspired by Alexander
    Gavrilov's branch.
  5. Front end infrastructure for short vector SIMD packs

    pkhuong committed Mar 3, 2013
     * new feature, sb-simd-pack.
     * define a new IR1 type for SIMD packs:
       - (SB!KERNEL:SIMD-PACK [eltype]), where [eltype] is a subtype
         of the plaform-specific SIMD element type universe, or * (default),
         the union of all these possibilities;
       - Element types are always upgraded to the platform's element type
         (small) universe, so we can easily manipulate unions of SIMD-PACK
         types by working in terms of the element types.
     * immediately specify the universe of SIMD pack element types
       (sb!kernel:*simd-pack-element-types*) for x86-64, to ensure
       #!+sb-simd-pack buildability.
     * declare basic functions to create/manipulate SIMD packs:
       - simd-pack-p is the basic type predicate;
       - %simd-pack-tag returns a fixnum tag associated with each SIMD-PACK;
         currently, we suppose it only encodes the element type, as the
         position of the element type in *simd-pack-element-types*;
       - %make-simd-pack creates a 128-bit SIMD pack from a tag and two
         64 bit integers;
       - %make-simd-pack-double creates an appropriately-tagged pack from
         two double floats;
       - %make-simd-pack-single creates a tagged pack from four single
       - %make-simd-pack-integer creates a tagged pack from two 64 bit
       - %simd-pack-{low,high} returns the low/high integer half of a
         128 bit pack;
       - %simd-pack-ub64s returns the two integer halves of a 128 bit pack;
       - %simd-pack-singles returns the four singles in a 128 bit pack;
       - %simd-pack-doubles returns the two doubles in a 128 bit pack.
    Alexander Gavrilov kept a branch alive for the last couple years. The
    creation/manipulation primitives are largely taken from that branch,
    or informed by the branch's usage.
  6. New keyword argument for SB-C:DEFKNOWN: :overwrite-fndb-silently

    pkhuong committed Mar 4, 2013
     While not useful in the compiler itself, some libraries (not only
     contribs) define their own VOPs, transforms, etc., and the error
     when clobbering pre-existing defknowns made these libraries hard
     to reload.
     Use with :allow-other-keys for backward compatibility.
Commits on Mar 3, 2013
  1. Fix a test-case in threads.impure.lisp on -sb-thread.

    stassats committed Mar 3, 2013
    A test was using make-thread without ensuring that sb-thread is enabled.
    Fixes lp#1141795
Commits on Mar 2, 2013
  1. Prevent a make-array transform from modifying source forms.

    stassats committed Mar 2, 2013
    That causes repeated compilations of inlined functions to accumulate
    changes made by the transform.
    Thanks to Bart Botta.
    (regression since
  2. Improve the failure output of the test :range-reduction :x87.

    leuler committed Mar 2, 2013
    Namely, output the function, argument, expected and actual result.
  3. Silence a warning from the test harness for unthreaded builds.

    leuler committed Mar 2, 2013
    "The variable THREADS is defined but never used.", so, in WITH-TEST only
    bind THREADS under #+SB-THREAD as all places where this variable is used
    are guarded by this feature expression, too.
Commits on Feb 26, 2013
Commits on Feb 25, 2013
  1. Revert "upgrade asdf to 2.29, per request by Faré (sbcl-devel 2013-02…

    csrhodes committed Feb 25, 2013
    This reverts commit 5bf941f.
Commits on Feb 21, 2013
  1. prohibit adding name of a package to itself as a local nickname

    nikodemus committed Feb 21, 2013
      Seems useless, confusing, and probably unintentional. Make it a
      continuable error, though. Thanks to Rudi Schlatte for thinking
      about this.
      So, NO MORE:
       (in-package :foo)
       (add-package-local-nickname :foo :bar)
       'foo::x ; => BAR::X

    nikodemus committed Feb 21, 2013
      Less confusing, and more in line with PACKAGED-NICKNAMED-BY-LIST &co.
      (Thanks to Rudi Schlatte for heads-up.)
Commits on Feb 20, 2013
Commits on Feb 11, 2013
  1. Replace sb-concurrency:queue implementation.

    lmj authored and nikodemus committed Nov 14, 2012
    Singly-linked queue is faster and conses less.
Commits on Feb 7, 2013
  1. it's print-read consistency, not read/print consistency

    nikodemus committed Feb 7, 2013
      Doesn't really matter, I guess, but let's not confuse terminology if
      we can avoid it. (Kudos to Zach Beane for pointing this out.)
  2. fix manual build

    nikodemus committed Feb 4, 2013
Commits on Feb 5, 2013
  1. Fix (setf documentation) regression.

    stassats committed Feb 5, 2013
    When built with sb-doc enabled (the default), it crashes the build
    because it uses a not yet defined function, sb-impl::fun-name.
    Reported by Janis Dzerins.
  2. Test-suite results colorization.

    stassats committed Feb 5, 2013
    Failures in red, unexpected success in green. Works on Windows and on
    terminals with ANSI escape code support.
    Can be disabled with --no-color.
Commits on Feb 4, 2013
  1. Fix (documentation closure) test.

    stassats committed Feb 4, 2013
    Take into account the idea that
    (setf (documentation #'function t) "doc")
    (setf (documentation 'function 'function) "doc")
    should do the same.
  2. Build on newer glibc.

    stassats committed Feb 4, 2013
    Newer glibc don't like the usage of #define __USE_GNU, use _GNU_SOURCE
    Fixes lp#1095036
  3. Fix (documentation #'function t)

    stassats committed Feb 4, 2013
    (defun test () "xx" nil)
    (setf (documentation 'test 'function) "test")
    (list (documentation #'test t) (documentation 'test 'function)))
    returned ("xx" "test").
Commits on Feb 3, 2013

    nikodemus committed Nov 24, 2011
  2. typo fix in sb-sprof.

    csrhodes committed Feb 3, 2013
    Also update NEWS for fix of #1113859
  3. grab-bag of SB-SPROF improvements.

    nikodemus committed Feb 3, 2013
     (1) Thread distribution handler must not check *SAMPLING*, as it
         is thread-local.
     (2) Return the values from the final round when looping.
     (3) Better warning on no sampling process: list the reasons users can
         do something about.
     (4) Update WITH-PROFILING docstring to reflect reality.
     (5) When printing *SAMPLES*, don't print the array.
  4. make SB-SPROF:WITH-PROFILING not loop by default

    attila-lendvai authored and nikodemus committed Apr 6, 2010
     ...and in non-loop mode it properly returns the result values of the
     macro body.
  5. restart-case: Spurious unused variable warnings.

    stassats committed Feb 3, 2013
    restart-case without any restart clauses used to signal an unused
    variable warning, add ignorable declaration.
    Fixes lp#1113859