Permalink
Switch branches/tags
Commits on Aug 17, 2011
  1. * src/code/win32.lisp: remove leftovers from my first attempt to hand…

    akovalenko committed Aug 17, 2011
    …le LFNs, making CreateFileW an ordinary alien routine once again.
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.