Permalink
Switch branches/tags
Commits on Aug 16, 2011
  1. * src/code/filesys.lisp (user-homedir-pathname): pass :short t on

    akovalenko committed Aug 16, 2011
    win32, to get the 8.3-variant of the folder name (temporary kludge
    until LFNs are supported).
    * src/code/win32.lisp (get-short-file-name): new syscall binding
    (get-folder-namestring): support :short argument
    (get-folder-pathname): support and delegate :short argument
Commits on Aug 15, 2011
  1. Merge branch 'master' into mswinmt

    akovalenko committed Aug 15, 2011
    Conflicts:
    	src/code/gc.lisp
  2. fix bogus deadlocks from interrupts and GCs

    sb-studio committed Aug 15, 2011
     lp#807475
    
     Going in despite the freeze since this is a regression that can
     semi-randomly break correct code. *ouch*
    
     Thanks to Bart Bortta and #sbcl for the analysis.
    
     Problem 1:
    
       T1 holds L1
    
       T2 is waiting for L1
    
       T2 is interrupted, interrupt handler grabs L2
    
       T1 starts waiting on L2
    
       Prior to this patch, when GET-MUTEX in T2's interrupt handler grabbed
       L2 is marked T2 as still waiting for L1 -- which is not true until
       the interrupt handler returns.
    
     Problem 2:
    
       T1 holds L1
    
       T2 is waiting for L1
    
       GC is triggered in T2 inside GET-MUTEX
    
       T2 grabs *ALREADY-IN-GC* lock
    
       GC is triggered in T1, T1 tries to get *ALREADY-IN-GC* lock.
    
       Prior to this patch, when T1 detects a bogus deadlock as T2 has
       been marked as waiting for L1 -- which is not true until the GC is
       finished and normal execution resumes.
    
     Problem 3:
    
       T1 holds L1
    
       T2 is waiting for L1
    
       GC is triggered in T2 inside GET-MUTEX
    
       T2 grabs lock L2 due to a finalizer or an after-gc-hook
    
       GC is triggered in T1
    
       T1 tries to grab L2 due to a finalizer, etc.
    
       Same as problem 2, but with a user-lock and POST-GC instead of
       *ALREADY-IN-GC* and SUB-GC.
    
     This patch fixes the issue by saving, clearing, and restoring
     the waiting-for mark in
    
      1) interrupt handlers
    
      2) SUB-GC
    
      3) POST-GC
Commits on Aug 14, 2011
  1. Fix automatic &rest to &more conversion in unsafe code

    pkhuong committed Aug 14, 2011
     Applying &rest lists to known/typed functions can lead to a
     :fixed values call to %more-arg-values.  In that case, unroll
     it into several %more-arg of constant indices.
    
     Reported, with test case, by Lutz Euler (lp#826459).
  2. New function: SB-EXT:SPIN-LOOP-HINT

    pkhuong committed Aug 14, 2011
     Some architectures have developed ways to help the processor execute
     spin loops efficiently; expose them, where applicable, via
     SB-EXT:SPIN-LOOP-HINT.
    
     Assembles to PAUSE on x86oids, and to nothing on other platforms.
  3. Merge branch 'master' into mswinmt

    akovalenko committed Aug 14, 2011
    Conflicts:
    	make-config.sh
  4. Missing NEWS entry for 4e431db

    pkhuong committed Aug 14, 2011
     Also, missing credit for Lutz Euler's bug report on a7b24b5.
  5. Handle SIMPLE-TYPE-ERROR when propagating bounds

    pkhuong committed Aug 14, 2011
     Type conversions (e.g. bignum to float) may signal a
     SIMPLE-TYPE-ERROR rather than returning an infinity.
     Treat that case like an unknown value.
    
     Add two tests.
    
     Fixes lp#819269.
  6. New function: SB!KERNEL:%MULTIPLY-HIGH

    pkhuong committed Aug 14, 2011
     * Does the same thing as only returning the first value of %MULTIPLY,
       only better on some platforms.
    
     * Implemented vas VOPs on x86, x86-64 and PPC.  The PPC code sequence
       is fully untested, and merely looks correct.
    
     * VOPs for fixnum first argument are included, but will only be used
       when the result is forcibly marked as fixnum, e.g., with TRULY-THE.
       Questionnable, but I'd rather err on the side of straightforwardness
       rather than put even more pressure on representation selection.
    
     * Use it in the division-by-multiplication transform for unsigned
       TRUNCATE by constant.
  7. More efficient integer division by multiplication

    pkhuong committed Aug 14, 2011
     * Exploit restricted range for inputs (e.g. fixnums).
    
     * When the divisor is even, simplify with a mask instead of a shift.
    
     * Clean up the code a bit: we don't want modular arithmetic, it's
       actually all guaranteed not to wrap around.
    
     * Change the test so that larger divisors are a bit more likely to
       get tested too.
    
     * Lots more things can be done, including generalizing the transform
       to pretty much arbitrary rational divisor, or avoiding the costly
       general code sequence in nearly all cases.  Unfortunately, it's a
       lot of (somewhat original, at that) code, and can be fairly slow;
       if it matters to someone, I can try and find a compromise (contrib?).
  8. Various (mostly) SSE x86-64 instruction definition fixes and additions

    pkhuong committed Aug 14, 2011
     * Fix typos in mnemonics and non-temporal store definitions;
     * Add some instructions;
     * CLFLUSH was totally broken.
    
    Taken from Alexander Gavrilov's SSE intrinsics branch.
Commits on Aug 13, 2011
  1. fix DESCRIBE on compiled closures from EVAL

    nikodemus committed Aug 13, 2011
     lp#824974
Commits on Aug 12, 2011
  1. * src/code/target-package.lisp (intern*): yet another take on

    akovalenko committed Aug 12, 2011
    base-string conversion -- sb-kernel:extended-char-p seems to
    be broken (everywhere); now using base-char-p instead.
  2. * src/code/target-package.lisp (intern*): another take on symbol name

    akovalenko committed Aug 12, 2011
    'base-stringification': avoid consing a temporal non-base string.
  3. * src/code/target-package.lisp (intern*): fix after myself -- "it's too

    akovalenko committed Aug 12, 2011
    cold" to use coerce in intern.
  4. * src/code/target-package.lisp (intern*): if we have base-string-named

    akovalenko committed Aug 12, 2011
    symbols anyway, let's save some storage by using base strings for new
    symbols when possible.
  5. allow user-defined STRING synonyms in MAKE-SEQUENCE

    csrhodes committed Aug 12, 2011
    ...and MAP, MERGE, COERCE and CONCATENATE too.  This also meant
    working a bit on TYPEXPAND, to make (STRING <N>) be unexpanded in the
    same way as STRING, and consequently on VALUES-SPECIFIER-TYPE to
    ensure that the system would still recognize those types.
    
    Include test cases for the sequence functions but not for TYPEXPAND.
Commits on Aug 11, 2011
  1. Declaim sb-di::valid-lisp-pointer-p inline.

    stassats committed Aug 11, 2011
    Making it inline prevents from creating a SAP, and thus reduces
    consing and improves performance. It's called a lot by
    map-allocated-objects when GCing is disabled, so consing less is a
    desirable property.
    
    Reported by `lisper' on #lisp
  2. Merge branch 'master' into mswinmt

    akovalenko committed Aug 11, 2011
    Conflicts:
    	package-data-list.lisp-expr
    	src/code/filesys.lisp
    	src/code/win32.lisp
    	src/runtime/win32-os.c
    
    * src/code/filesys.lisp: accepted from 'master'
    * src/code/win32.lisp: resisted some changes :(
  3. Fix QUERY-FILE-SYSTEM for Windows UNC and device file names

    lichtblau committed Aug 11, 2011
    Thanks to Anton Kovalenko.
Commits on Aug 10, 2011
  1. * src/runtime/win32-os.c: mostly accepted from master;

    akovalenko committed Aug 10, 2011
    (os_validate): mwwFlag reintroduced
  2. * src/code/win32.lisp: conflicted mostly over comments and formatting,

    akovalenko committed Aug 10, 2011
    except one case of using system-string (--ak) vs. reader conditionals (upstream)
  3. * contrib/sb-simple-streams/file.lisp: accepted from master

    akovalenko committed Aug 10, 2011
    * contrib/sb-simple-streams/simple-stream-tests.lisp: ditto
  4. Merge branch 'master' into mswinmt

    akovalenko committed Aug 10, 2011
    Conflicts:
    	contrib/sb-bsd-sockets/sockets.lisp
    	contrib/sb-posix/interface.lisp
    	contrib/sb-simple-streams/file.lisp
    	contrib/sb-simple-streams/simple-stream-tests.lisp
    	package-data-list.lisp-expr
    	src/code/serve-event.lisp
    	src/code/win32.lisp
    	src/runtime/win32-os.c
    
    Non-conflicting files
  5. sb-bsd-sockets: Fix error code handling on Windows

    akovalenko committed with lichtblau Aug 18, 2010
      Factored out into a new function for the win32-specific
      WSAGetLastError call.
    
      Run-time results now match the existing constant definitions.
    
    Thanks to Anton Kovalenko.
  6. sb-simple-streams: In test lp491087, merge the pathname

    lichtblau committed Aug 10, 2011
      Needed for Windows.
    
    Thanks to Anton Kovalenko.