sbcl.git
12 years agotests: fix :skipped-on clause for weak hash-table tests.
Alastair Bridgewater [Mon, 5 Dec 2011 14:35:53 +0000 (09:35 -0500)]
tests: fix :skipped-on clause for weak hash-table tests.

  * During the original addition of :skipped-on, the condition for
skipping the weak hash-table tests was changed from "non-threaded
x86oids" to "everything but threaded non-x86oids".  The actual
condition should be "non-threaded conservatively-scavenged-stack".

12 years agotests: Add --report-skipped-tests option to the test runner.
Alastair Bridgewater [Mon, 5 Dec 2011 14:33:43 +0000 (09:33 -0500)]
tests: Add --report-skipped-tests option to the test runner.

  * It is occasionally useful to see precisely which tests are
skipped on a given target, and there was no obvious way to so do.

12 years agoFail early when building with known-incompatible features.
Alastair Bridgewater [Mon, 5 Dec 2011 14:30:09 +0000 (09:30 -0500)]
Fail early when building with known-incompatible features.

  * Essentially, fail as soon as we have the final shebang feature
list available.

  * Only checks a small number of "obvious" cases for now.

12 years agoFix my previous commit on setf expansions.
Stas Boukarev [Mon, 5 Dec 2011 11:47:13 +0000 (15:47 +0400)]
Fix my previous commit on setf expansions.

Fix the case when `default' in (setf (getf x y default) z) isn't provided.

Add tests.

12 years agoadjust the new MALLOC-FAILURE test for 32-bit builds
Nikodemus Siivola [Mon, 5 Dec 2011 11:18:08 +0000 (13:18 +0200)]
adjust the new MALLOC-FAILURE test for 32-bit builds

  ...where malloc of (1- array-total-size-limit) bytes may actually
  succeed initially.

12 years agoRemove unused variable warnings in some setf expansions.
Stas Boukarev [Mon, 5 Dec 2011 11:22:53 +0000 (15:22 +0400)]
Remove unused variable warnings in some setf expansions.

(let (list) (setf (getf list 'x 0) 10)) produced a style-warning on a
temporary variable for holding 0, which is unused.

Fixes lp#492071.

12 years agoallow coercion of large fixnums to floats outside x86
Nikodemus Siivola [Sun, 23 Oct 2011 13:04:36 +0000 (16:04 +0300)]
allow coercion of large fixnums to floats outside x86

 The reason we need guard against this on x86 is due to the FPU there always
 using double-precision internally, which can lead to us deriving an
 inconsistent type unless the fixnum is exactly represented by a single-float.

 However, no such danger exists outside x86.

 (Test-suite already contains tests for this.)

12 years agoadd support for package::form-read-in-package syntax
Nikodemus Siivola [Sat, 3 Dec 2011 09:01:25 +0000 (11:01 +0200)]
add support for package::form-read-in-package syntax

   sb-c::(csubtypep (specifier-type 'fixnum) (specifier-type 'integer))

 Isn't that lovely? The superbly fantasic thing is that this even works
 *right* with package locks:

    (in-package :cl-user)

    sb-c::(defun some-internal-bit ...)

  causes a package lock violation since the current package is back to CL-USER
  by the type the code is executed.

12 years agoprinting specialized arrays readably
Robert Brown [Fri, 2 Dec 2011 15:07:20 +0000 (17:07 +0200)]
printing specialized arrays readably

  When *READ-EVAL* is true, use #. based syntax to print them.

  lp#803665.

12 years agouse *SUPPRESS-PRINT-ERRORS* for backtraces and DESCRIBE
Nikodemus Siivola [Sun, 4 Dec 2011 10:40:07 +0000 (12:40 +0200)]
use *SUPPRESS-PRINT-ERRORS* for backtraces and DESCRIBE

 The suppression mechanism is a bit more informative than the old #<error
 printing object> marker for BACKTRACE, and DESCRIBE didn't really have
 anything before this.

 Also bind *PRINT-CIRCLE* to T for BACKTRACE, and use the PRINT-UNREADABLY
 restart for PRINT-NOT-READABLE errors.

12 years agoadd SB-EXT:*SUPPRESS-PRINT-ERRORS* modelled after *BREAK-ON-SIGNALS*
Attila Lendvai [Fri, 28 Jan 2011 15:09:47 +0000 (16:09 +0100)]
add SB-EXT:*SUPPRESS-PRINT-ERRORS* modelled after *BREAK-ON-SIGNALS*

  When non-NIL, OUTPUT-OBJECT (our main entry to the printer) binds a handler
  that handles conditions of the specified type by printing an error marker
  instead of signaling an error.

  WRITE also accepts :SUPPRESS-ERRORS, and WITH-STANDARD-IO-SYNTAX binds it to
  NIL.

  Calls SIGNAL before handling the condition so outer handlers get a chance to
  use restarts, etc.

12 years agomuffle style-warnings for INFO :FUNCTION :TYPE
Nikodemus Siivola [Fri, 2 Dec 2011 12:20:08 +0000 (14:20 +0200)]
muffle style-warnings for INFO :FUNCTION :TYPE

  Even if the function object's type contains unknown types, this is not the
  right place to complain about them.

  lp#806243

12 years agodefine SB-EXT:PRINT-UNREADABLY as a function
Nikodemus Siivola [Fri, 2 Dec 2011 11:18:00 +0000 (13:18 +0200)]
define SB-EXT:PRINT-UNREADABLY as a function

  So

    (handler-bind ((print-not-readable #'print-unreadably))
       ...)

  works.

12 years agosilent non-toplevel DEFSTRUCT
Nikodemus Siivola [Thu, 1 Dec 2011 18:45:19 +0000 (20:45 +0200)]
silent non-toplevel DEFSTRUCT

  Use TRULY-THE in the constructor inline expansion only if the compiler knows
  the layout: using it for the lazy version doesn't help, and only causes a
  STYLE-WARNING.

12 years agodon't simplify (LET () ..) => (LOCALLY ...) in the simple evalutor
Nikodemus Siivola [Thu, 1 Dec 2011 19:05:43 +0000 (21:05 +0200)]
don't simplify (LET () ..) => (LOCALLY ...) in the simple evalutor

  If LET is at toplevel its subforms are not.

  If LOCALLY is at toplevel its subforms are also at toplevel.

12 years agoless rebindings in defmethods
Nikodemus Siivola [Thu, 1 Dec 2011 09:53:32 +0000 (11:53 +0200)]
less rebindings in defmethods

  PCL needs to rebind DEFMETHOD arguments when they are assigned to:

  * CALL-NEXT-METHOD needs the originals.

  * We apply an implicit declaration to the original from the specializer,
    which an assignment can violate.

  There is, however, no need to bind everything simply because /something/ is
  assigned to.

  Fixed lp#898331.

12 years agomore conservative subtypep test for classoids
Nikodemus Siivola [Wed, 30 Nov 2011 10:21:05 +0000 (12:21 +0200)]
more conservative subtypep test for classoids

 * Give NIL, NIL for invalid classoids with forward-referenced superclasses
   instead of signaling an error during SUBTYPEP.

 * If we can't tell it's a subtype and either has a forward-referenced
   superclass we can't tell for sure it isn't -- meaning NIL, NIL instead of
   NIL, T.

 Fixes the second half of lp#888630.

12 years agoMAKE-ALIEN improvements
Nikodemus Siivola [Mon, 28 Nov 2011 12:15:31 +0000 (14:15 +0200)]
MAKE-ALIEN improvements

 * Move more of the bytes-calculation to macroexpansion time.

 * Change %MAKE-ALIEN to take bytes instead of bits, so that --in theory at
   least-- chunks upto ARRAY-DIMENSION-LIMIT-1 bytes can be allocated.

 * Use ALIEN-FUNCALL-SAVES-FP-AND-PC 0.

 * Detect malloc() failure and signal a storage-condition for it.  Fixes
   lp#891268.

12 years agostricter handling of declarations in DEFGENERIC
Nikodemus Siivola [Mon, 28 Nov 2011 11:59:34 +0000 (13:59 +0200)]
stricter handling of declarations in DEFGENERIC

  Warn about unrecognized declarations.

  lp#894202

12 years agofix style-warnings for condition slot-accessors used in :REPORT
Nikodemus Siivola [Mon, 28 Nov 2011 11:35:54 +0000 (13:35 +0200)]
fix style-warnings for condition slot-accessors used in :REPORT

  Previously condition slot accessors used in :REPORT option signaled
  a style-warning under EVAL and LOAD (as source): the compiler saw
  the lambda before the accessor had been proclaimed as functions.

  Fixes lp#896379.

12 years agouse boxed constants for full calls
Nikodemus Siivola [Mon, 5 Dec 2011 09:06:40 +0000 (11:06 +0200)]
use boxed constants for full calls

 If a constant is being used in a full call, use a boxed representation
 instead of an inline one which must then be boxed at runtime.  Also arrange
 to have both an immediate unboxed and a boxed representation when
 advantageous.

 (There might be other cases besides full calls where we should prefer boxed
 representations, but that's for later.)

12 years agono need for BOOT-MAKE-WRAPPER on target
Nikodemus Siivola [Wed, 30 Nov 2011 10:05:25 +0000 (12:05 +0200)]
no need for BOOT-MAKE-WRAPPER on target

  Rename it !BOOT-MAKE-WRAPPER.

12 years agochange an AVER to CERROR 'bug
Nikodemus Siivola [Sat, 29 Oct 2011 12:35:57 +0000 (15:35 +0300)]
change an AVER to CERROR 'bug

  Hopefully making it easier to debug.

12 years agoimprove the SB-EXT:GC docstring(s)
Nikodemus Siivola [Mon, 28 Nov 2011 10:54:54 +0000 (12:54 +0200)]
improve the SB-EXT:GC docstring(s)

12 years agofix misoptimization of TRUNCATE
Nikodemus Siivola [Thu, 1 Dec 2011 15:43:49 +0000 (17:43 +0200)]
fix misoptimization of TRUNCATE

  Reported by Eric Marsden on sbcl-devel 2011-12-01.

   "illegal instruction on PowerPC"

  We check for result type being a VALUES-TYPE-P when deciding if to compute
  the second value for TRUNCATE or not -- but *WILD-TYPE* isn't a values type.

  Make VALUES-TYPE-P return true for it from now on. What could possibly go
  wrong? Just two other places need to change, it seems.

12 years agofix bug in typechecking calls with non-constant keywords
Nikodemus Siivola [Thu, 1 Dec 2011 11:30:41 +0000 (13:30 +0200)]
fix bug in typechecking calls with non-constant keywords

 Reported by Eric Marsden on sbcl-devel 2011-12-01.

12 years agofix treatment of signed zeroes in INTERVAL-DIV
Nikodemus Siivola [Wed, 30 Nov 2011 13:34:30 +0000 (15:34 +0200)]
fix treatment of signed zeroes in INTERVAL-DIV

 Fixes bug reported by Eric Marsden on sbcl-devel: type derivation going wrong
 due to one signed zeroes: (/ 0.0 -neg) derives correctly as -0.0, but (/ 0
 -neg) derives as 0.0, causing the intersection to be empty causing badness.

 Simply remove special casing of division of zero from INTERVAL-DIV:
 BOUND-BINOP handles signed zeroes correctly, so no sense complicating the
 code by adding handling for them in I-D.

12 years agooops. actually stop when seeing --with-foo and customize-target-features.lisp
Nikodemus Siivola [Mon, 5 Dec 2011 09:25:51 +0000 (11:25 +0200)]
oops. actually stop when seeing --with-foo and customize-target-features.lisp

 ...instead of just complaining to the stdout.

12 years agomore robust deadlock detection
Nikodemus Siivola [Mon, 28 Nov 2011 17:45:16 +0000 (19:45 +0200)]
more robust deadlock detection

 Lock around building the deadlock chain using WITH-CAS-LOCK after the
 tentative deadlock has been detected, and break the deadlock chain before
 signaling the error.

 This means that a single deadlock is reported only in a single thread.

 Fixes occasional failures of deadlock-detection.1 due to a bogus vicious
 metacircle. (Two threads detecting the same deadlock, then racing to report
 the error detected as another deadlock, the reporting of which in turn looked
 like a metacircle to CLOS if PRINT-OBJECT didn't yet have the right method in
 cache.)

12 years agobuild runtime/TAGS by default
Nikodemus Siivola [Wed, 8 Jun 2011 12:22:46 +0000 (15:22 +0300)]
build runtime/TAGS by default

  Getting tired of needing to build it manually all the time.

12 years agoadd --fancy option to make.sh
Nikodemus Siivola [Fri, 2 Dec 2011 12:25:47 +0000 (14:25 +0200)]
add --fancy option to make.sh

  Enables threads, core compression, xref for internals, and
  after-xc-core. (The last one for convenience, even though it's not user
  visible.)

12 years agoadd --with-<feature> and --without-<feature> support to make.sh
Nikodemus Siivola [Thu, 1 Dec 2011 17:33:14 +0000 (19:33 +0200)]
add --with-<feature> and --without-<feature> support to make.sh

  customize-target-features.lisp still works, but the system refuses to mix it
  with --with[out] options to avoid confusion.

12 years agoadd --arch option to make.sh
Nikodemus Siivola [Wed, 30 Nov 2011 16:55:04 +0000 (18:55 +0200)]
add --arch option to make.sh

  Not for full-blown cross compilation, though.

12 years agomake make.sh run clean.sh
Nikodemus Siivola [Sun, 4 Dec 2011 08:32:47 +0000 (10:32 +0200)]
make make.sh run clean.sh

  Since eg. trying to build for different arches without cleaning
  in the middle will just break things.

  slam.sh is for those in a hurry.

12 years ago1.0.54: will be tagged as "sbcl-1.0.54"
Juho Snellman [Sun, 4 Dec 2011 23:09:00 +0000 (00:09 +0100)]
1.0.54: will be tagged as "sbcl-1.0.54"

12 years ago:backtrace-interrupted-condition-wait fails on x86 Linux
Juho Snellman [Sun, 4 Dec 2011 19:42:04 +0000 (20:42 +0100)]
:backtrace-interrupted-condition-wait fails on x86 Linux

12 years agoremove a stray debugging PRINT
Nikodemus Siivola [Fri, 2 Dec 2011 22:23:12 +0000 (00:23 +0200)]
remove a stray debugging PRINT

  ...there since 1.0.48.21! Wow.

12 years agofix bug in semaphore notification objects on TRY-SEMAPHORE
Nikodemus Siivola [Thu, 1 Dec 2011 09:16:09 +0000 (11:16 +0200)]
fix bug in semaphore notification objects on TRY-SEMAPHORE

  It's not notifiction.

12 years agoFix clos.impure.lisp DOCUMENTATION test on #-sb-doc.
Stas Boukarev [Thu, 1 Dec 2011 14:34:37 +0000 (18:34 +0400)]
Fix clos.impure.lisp DOCUMENTATION test on #-sb-doc.

Don't rely on docstrings being present on standard functions
when testing DOCUMENTATION.

12 years agotests: Skip stream.impure.lisp / BUG-657183 on non-unicode.
Alastair Bridgewater [Wed, 30 Nov 2011 16:35:32 +0000 (11:35 -0500)]
tests: Skip stream.impure.lisp / BUG-657183 on non-unicode.

  * For some reason, #\GREEK_SMALL_LETTER_LAMDA isn't a valid
character name on non-unicode builds.  Who knew?

12 years agoOops, remove a debugging printenv which snuck in.
Joshua Elsasser [Wed, 30 Nov 2011 05:29:58 +0000 (21:29 -0800)]
Oops, remove a debugging printenv which snuck in.

12 years agoWork around excessive consing via ROOM by turning off
Joshua Elsasser [Tue, 29 Nov 2011 17:18:00 +0000 (09:18 -0800)]
Work around excessive consing via ROOM by turning off
alien-funcall-saves-fp-and-pc.

12 years agotry to robustify test for bug-309448
Nikodemus Siivola [Mon, 28 Nov 2011 10:41:52 +0000 (12:41 +0200)]
try to robustify test for bug-309448

  We've been getting intermittent reports of it failing, but I've been unable
  to reproduce so far. The test in question is a compiler scaling test, which
  compares times it takes to compile different things. Brittle, indeed.

  Other than non-SBCL causes the only thing I can think of right now is GCs
  from other tests getting accounted against one of the supposed-to-be-fast
  runs. So, run GC :FULL T before getting the timings to make things more
  consistent.

12 years agogencgc: fix regression from 137ba2db2d362f03754ccd080ddbe96f7e3c5dc7
Nikodemus Siivola [Mon, 28 Nov 2011 16:00:02 +0000 (18:00 +0200)]
gencgc: fix regression from 137ba2db2d362f03754ccd080ddbe96f7e3c5dc7

  Turned loop conditions into asserts in faith that they always hold.
  Turns out this is not the case after all.

12 years agoupdate ASDF to 2.019
Nikodemus Siivola [Mon, 28 Nov 2011 12:18:12 +0000 (14:18 +0200)]
update ASDF to 2.019

12 years agoNEWS prettification
Nikodemus Siivola [Mon, 28 Nov 2011 10:19:19 +0000 (12:19 +0200)]
NEWS prettification

  Wrap to 78, upcase symbol names, move one more item under the "GC-related"
  section and use more consistent phrasing there.

12 years agotweak NAME-CONTEXT
Nikodemus Siivola [Sun, 27 Nov 2011 14:53:20 +0000 (16:53 +0200)]
tweak NAME-CONTEXT

  On platforms without UNWIND-TO-FRAME-AND-CALL vops we introduce an extra
  block, which then shows up there in the function names for eg. lambdas
  defined at the toplevel in high debug code. Fix that.

  CATCH also introduces a block. Filter those out too.

12 years agomake PPC/Linux buildable on ppc64 hosts
Nikodemus Siivola [Sun, 27 Nov 2011 13:04:00 +0000 (05:04 -0800)]
make PPC/Linux buildable on ppc64 hosts

12 years agofix unthreaded builds with sb-futex in target *features*
Nikodemus Siivola [Sun, 27 Nov 2011 13:24:42 +0000 (05:24 -0800)]
fix unthreaded builds with sb-futex in target *features*

12 years agomissing NEWS
Nikodemus Siivola [Sun, 27 Nov 2011 12:26:37 +0000 (14:26 +0200)]
missing NEWS

12 years agorefactor PRINT-NOT-READABLE condition signaling
Nikodemus Siivola [Sun, 27 Nov 2011 12:23:35 +0000 (14:23 +0200)]
refactor PRINT-NOT-READABLE condition signaling

  SB-INT:PRINT-NOT-READABLE-ERROR both signals the condition,
  and binds the restarts.

12 years agowe have read-evaluated-form, kill read-replacement-character and -string
Nikodemus Siivola [Sun, 27 Nov 2011 12:19:59 +0000 (14:19 +0200)]
we have read-evaluated-form, kill read-replacement-character and -string

  ...and fix read-evaluated-form to flush its output.

12 years agomarginally prettier native debugger banner
Nikodemus Siivola [Wed, 23 Nov 2011 18:27:38 +0000 (20:27 +0200)]
marginally prettier native debugger banner

  Add a conditional newline before printing the thread object.

12 years agocleanup: refactor copy_large_unboxed_object and copy_large_object
Nikodemus Siivola [Fri, 25 Nov 2011 16:09:49 +0000 (18:09 +0200)]
cleanup: refactor copy_large_unboxed_object and copy_large_object

  They're virtually identical. Implement both in terms of a new function,
  general_copy_large_object.

  gc_quick_alloc_large and gc_quick_alloc_large_unboxed become unused, delete
  them.

  ...and sort out the types while at it. (long still in the interface)

12 years agocleanup: pacify GCC with an extra pair of parens
Nikodemus Siivola [Fri, 25 Nov 2011 15:23:12 +0000 (17:23 +0200)]
cleanup: pacify GCC with an extra pair of parens

  Meh. What a stupid warning.

12 years agocleanup: use OS_VM_SIZE_FMT in collect_garbage
Nikodemus Siivola [Fri, 25 Nov 2011 15:19:29 +0000 (17:19 +0200)]
cleanup: use OS_VM_SIZE_FMT in collect_garbage

  One warning less on 32-bit builds.

12 years agocleanup: types in load_core_file
Nikodemus Siivola [Fri, 25 Nov 2011 14:57:13 +0000 (16:57 +0200)]
cleanup: types in load_core_file

  Don't abuse lispobj for things which aren't. Instead new type word_t for
  "random binary gunk" in unsigned word-sized slices.

  Also define WORD_FMTX.

12 years agocleanup: os_vm_size_t for large_object_size
Nikodemus Siivola [Fri, 25 Nov 2011 14:35:18 +0000 (16:35 +0200)]
cleanup: os_vm_size_t for large_object_size

12 years agocleanup: types in gc_alloc_large
Nikodemus Siivola [Fri, 25 Nov 2011 14:34:05 +0000 (16:34 +0200)]
cleanup: types in gc_alloc_large

  Still keeping the long in the interface.

12 years agocleanup: types in gc_alloc_update_page_tables
Nikodemus Siivola [Fri, 25 Nov 2011 14:31:17 +0000 (16:31 +0200)]
cleanup: types in gc_alloc_update_page_tables

12 years agocleanup: void_diff returns os_vm_size_t
Nikodemus Siivola [Fri, 25 Nov 2011 14:30:17 +0000 (16:30 +0200)]
cleanup: void_diff returns os_vm_size_t

12 years agocleanup: os_vm_size_t in gc_alloc_new_region
Nikodemus Siivola [Fri, 25 Nov 2011 12:55:45 +0000 (14:55 +0200)]
cleanup: os_vm_size_t in gc_alloc_new_region

  Same as before, long remains in the interface for a while yet.

12 years agocleanup: #define and use OS_VM_SIZE_FMT in write_generation_stats
Nikodemus Siivola [Fri, 25 Nov 2011 12:53:22 +0000 (14:53 +0200)]
cleanup: #define and use OS_VM_SIZE_FMT in write_generation_stats

12 years agocleanup: unused variable in gc_free_heap
Nikodemus Siivola [Fri, 25 Nov 2011 14:24:35 +0000 (16:24 +0200)]
cleanup: unused variable in gc_free_heap

12 years agocleanup: use os_vm_size_t in gc_find_freeish_pages and for granularity
Nikodemus Siivola [Fri, 25 Nov 2011 12:52:39 +0000 (14:52 +0200)]
cleanup: use os_vm_size_t in gc_find_freeish_pages and for granularity

  long remains in the signature for now, getting to it soon.

12 years agocleanup: use os_vm_size_t in count_generation_bytes_allocated
Nikodemus Siivola [Fri, 25 Nov 2011 12:42:49 +0000 (14:42 +0200)]
cleanup: use os_vm_size_t in count_generation_bytes_allocated

12 years agocleanup: use os_vm_size_t in npage_bytes
Nikodemus Siivola [Fri, 25 Nov 2011 12:40:43 +0000 (14:40 +0200)]
cleanup: use os_vm_size_t in npage_bytes

12 years agocleanup: struct page member types
Nikodemus Siivola [Fri, 25 Nov 2011 12:39:25 +0000 (14:39 +0200)]
cleanup: struct page member types

  .region_start_offset is os_vm_size_t
  .bytes_used is page_bytes_t (new typedef)

  Also add a compile-time check to guard against GENCGC_CARD_BYTES greater
  than UINT_MAX.

12 years agocleanup: page_index_t canonicalization
Nikodemus Siivola [Thu, 24 Nov 2011 15:47:58 +0000 (17:47 +0200)]
cleanup: page_index_t canonicalization

  Also define PAGE_INDEX_FTM.

  After this I /think/ everything that should be page_index_t, is.

  NOTE FOR OUR NEW TYPEDEF OVERLORDS: page_index_t itself is still signed
  long, which is probably wrong for Win64.

12 years agoDon't scrub the C stack from C.
Alastair Bridgewater [Fri, 11 Nov 2011 14:00:46 +0000 (09:00 -0500)]
Don't scrub the C stack from C.

  * The C version of the stack scrubber was picking an address to
start scrubbing by taking the address of a variable in the current
stack frame and subtracting one, clearly dependent on the frame
layout supplied by the compiler.

  * Fix, by rewriting the stack scrubber in assembly when
LISP_FEATURE_C_STACK_IS_CONTROL_STACK.  This way, we know what the
stack frame layout is, and don't have to worry about red zones and
other such compiler-dependent noise.

  * Lightly tested on linux/x86, linux/x86-64, darwin/x86, and
darwin/x86-64.

12 years agoTighter floating-point type constraints in some cases
Lutz Euler [Wed, 23 Nov 2011 19:31:09 +0000 (20:31 +0100)]
Tighter floating-point type constraints in some cases

CONSTRAIN-FLOAT-TYPE used to return a closed bound in some cases where
the corresponding (tighter) open bound would have been derivable,
leading to missed optimisation opportunities. For example the compiler
did not derive that x is not zero in the following call to LOG:

(defun foo (x)
  (declare (type (single-float 0.0) x))
  (when (> x 0.0)
    (log x)))

Fix CONSTRAIN-FLOAT-TYPE so that it returns the tightest possible result
in all cases.

See lp#894498 for details.

12 years agoReduce random casting in looks_like_valid_lisp_pointer_p().
Alastair Bridgewater [Wed, 23 Nov 2011 15:55:51 +0000 (10:55 -0500)]
Reduce random casting in looks_like_valid_lisp_pointer_p().

  * The casts are ugly, and obscure the logic.

  * The casts are WRONG on systems with 64-bit pointers and 32-bit
long integers (thanks to akovalenko for pointing this out).

  * We already have utility functions to do most-to-all of what
we're doing with casts.

  * And we never use one of our (lispobj *) parameters as an actual
pointer, we always cast it all over the place instead.

  * So, take a lispobj instead of a (lispobj *), and use utility
functions from runtime.h instead of inline casting and random
pointer arithmetic.

12 years agotweak tail merging logic
Nikodemus Siivola [Sun, 23 Oct 2011 09:37:42 +0000 (12:37 +0300)]
tweak tail merging logic

 TAIL-ANNOTATE used MERGE-TAIL-CALLS policy (which is an integer) as a
 boolean, instead of comparing it to zero. Oops. This means that we always did
 TCO when possible.

 Since adding a debug-catch-tag effectively prevents TCO, and the policy
 controlling that looks just like what we would like to have in
 MERGE-TAIL-CALLS if TAIL-ANNOTATE were to use it correctly... just deprecate
 MERGE-TAIL-CALLS instead.

12 years agoInsure that the test for bug 881445 runs with a large enough dynamic space.
Joshua Elsasser [Wed, 23 Nov 2011 07:29:13 +0000 (23:29 -0800)]
Insure that the test for bug 881445 runs with a large enough dynamic space.

12 years agoFix build with non-SBCL host.
Joshua Elsasser [Wed, 23 Nov 2011 02:02:50 +0000 (18:02 -0800)]
Fix build with non-SBCL host.

12 years agoSkip a known failure on openbsd.
Joshua Elsasser [Wed, 23 Nov 2011 01:20:49 +0000 (17:20 -0800)]
Skip a known failure on openbsd.

12 years agoAvoid a reader error in threads.pure.lisp with non-threaded sbcl.
Joshua Elsasser [Wed, 23 Nov 2011 01:15:03 +0000 (17:15 -0800)]
Avoid a reader error in threads.pure.lisp with non-threaded sbcl.

12 years agoFix errno value for sb-posix rmdir.error.3 test on OpenBSD.
Joshua Elsasser [Mon, 17 Oct 2011 01:12:53 +0000 (18:12 -0700)]
Fix errno value for sb-posix rmdir.error.3 test on OpenBSD.

Use #+bsd instead of #+(or darwin openbsd) on the assumption that all
the other BSD-derived systems use the same errno value.

12 years agoFix symbol-value-in-thread GC race condition.
Alastair Bridgewater [Tue, 22 Nov 2011 18:44:06 +0000 (13:44 -0500)]
Fix symbol-value-in-thread GC race condition.

  * SVIT was using SAP-REF-WORD and MAKE-LISP-OBJ while the GC was
enabled, which is mostly-safe on x86oids, but technically breaks
the consistency rules for the GC.  Failures due to badly-timed GC
(well-timed GC?) have been observed on PPC.

  * Instead of SAP-REF-WORD, checking for specific tags, then
using MAKE-LISP-OBJ and checking for validity and GC epoch, which
is a badly-broken approach, use SAP-REF-LISPOBJ to obtain the
value and then check the tags with GET-LISP-OBJ-ADDRESS, a far
safer approach, with lower overhead, and not subject to random GC
lossage.

12 years agoAdd SB-SYS:SAP-REF-LISPOBJ.
Alastair Bridgewater [Tue, 22 Nov 2011 18:40:21 +0000 (13:40 -0500)]
Add SB-SYS:SAP-REF-LISPOBJ.

  * This is for those cases where you know that you are trying to
read valid boxed data, the address of the data you want to read
is in some sense "stable" (meaning, won't be moved by the GC),
and you don't want to deal with the requirements for calling
SB-KERNEL:MAKE-LISP-OBJ.

  * Implemented across the board, but only tested on PPC.  What
could possibly go wrong?

12 years agodebug-int: Explain why and how SB-KERNEL:MAKE-LISP-OBJ is GC-unsafe.
Alastair Bridgewater [Tue, 22 Nov 2011 15:57:55 +0000 (10:57 -0500)]
debug-int: Explain why and how SB-KERNEL:MAKE-LISP-OBJ is GC-unsafe.

  * Just adding some commentary.

12 years agolinux: Enable :SB-FUTEX by default on PPC.
Alastair Bridgewater [Tue, 22 Nov 2011 15:32:56 +0000 (10:32 -0500)]
linux: Enable :SB-FUTEX by default on PPC.

  * Prior to the great de-lutexification, we used futexes on
threaded Linux/PPC.  Not having them enabled on PPC was an
oversight, but one which highlighted some problems with the
non-futex threading code.  Now that that's fixed, we may as
well restore the status quo.

12 years agosmaller default dynamic-space size on GENCGC
Nikodemus Siivola [Mon, 21 Nov 2011 14:53:17 +0000 (16:53 +0200)]
smaller default dynamic-space size on GENCGC

 512Mb for 32-bit platforms, 1Gb for 64-bit ones.

 (OpenBSD/x86-64 is the exception using 444Mb to fit under default ulimits.)

12 years agomake --dynamic-space-size and --control-stack-size understand power-suffixes
Nikodemus Siivola [Mon, 21 Nov 2011 13:52:31 +0000 (15:52 +0200)]
make --dynamic-space-size and --control-stack-size understand power-suffixes

  All of Kb, KiB, Mb, MiB, Gb, GiB are accepted, in a case-insentitive manner
  -- all taken to mean powers of two.

12 years agofix Darwin/x86 build on Snow Leopard
Nikodemus Siivola [Mon, 21 Nov 2011 15:50:56 +0000 (17:50 +0200)]
fix Darwin/x86 build on Snow Leopard

  EBX is linkage base, hence unavailable for us via asm()
  there.

12 years agoRevert "fix sb-posix tests on OpenBSD"
Nikodemus Siivola [Sun, 20 Nov 2011 18:09:39 +0000 (20:09 +0200)]
Revert "fix sb-posix tests on OpenBSD"

  Oops. As Josh noted, the equivalent C code works, so the explanation was
  bogus, and the test is better left enabled to track the issue.

This reverts commit d94c1b4a8c534bde146823f56558faf37cd4c4d7.

Conflicts:

NEWS

12 years agoMore compile-time error checking in NUMBER-DISPATCH
Lutz Euler [Fri, 1 Jul 2011 18:54:38 +0000 (20:54 +0200)]
More compile-time error checking in NUMBER-DISPATCH

Check for some problematic cases where non-disjoint types are used
in different clauses for the same variable and throw an error at
macroexpand-time if such a case is detected. Otherwise these could
lead to the generated type-dispatching form not covering all intended
combinations of types.

The intention is to make writing and modifying complex NUMBER-DISPATCH
forms safer.

All existing uses of NUMBER-DISPATCH, insofar as they contain
non-disjoint types, are unproblematic and graded as such by the
check; thus they continue to work unchanged.

Signed-off-by: Christophe Rhodes <csr21@cantab.net>

12 years agoMake EXPT use double-precision throughout in more cases
Lutz Euler [Fri, 1 Jul 2011 16:06:17 +0000 (18:06 +0200)]
Make EXPT use double-precision throughout in more cases

lp#741564 notes that a Maxima test case fails because the result of
(EXPT <fixnum> <(complex double)>) is much less precise than expected.
This is caused by EXPT using an intermediate single-float value here.

This behaviour actually occurs for all the following combinations
of argument types:

  (EXPT <(or rational single-float)> <(complex double-float)>)

  (EXPT <(or (complex rational) (complex single-float))>
        <(or (complex double-float) double-float)>)

In all these cases the first step EXPT does is to calculate (LOG BASE)
in single precision.

Refine the type dispatch clauses in EXPT to separate these cases
and coerce BASE to DOUBLE-FLOAT or (COMPLEX DOUBLE-FLOAT) there,
as appropriate, before applying LOG. Add tests.

Fixes lp#741564.

Signed-off-by: Christophe Rhodes <csr21@cantab.net>

12 years agooops, SB-EXT:DYNAMIC-SPACE-SIZE broke a test
Nikodemus Siivola [Sun, 20 Nov 2011 12:20:11 +0000 (14:20 +0200)]
oops, SB-EXT:DYNAMIC-SPACE-SIZE broke a test

 (Package lock violation.)

12 years agofix RUN-PROGRAM :WAIT T on Windows
Nikodemus Siivola [Sun, 20 Nov 2011 11:54:07 +0000 (13:54 +0200)]
fix RUN-PROGRAM :WAIT T on Windows

  Recent change to report the errno from exec() broke things on Windows.

  There when :WAIT is true it is the C code that waits, and the subsequently
  returns the exit code of the process -- meaning our attempt to use 0 to
  indicate exec() failure makes every successfull execution on Windows look
  like an exec failure.

  Oops. Use -2 instead. MORE MAGIC.

12 years agofix sb-posix tests on OpenBSD
Bruce O'Neel [Sun, 20 Nov 2011 11:09:03 +0000 (13:09 +0200)]
fix sb-posix tests on OpenBSD

  FCNTL.FLOCK.2 the test wants to check the PID of the lock holder, and,
  OpenBSD 5.0 disallows this. OpenBSD 4.9 and earlier was fine with it.

  lp#892707

Signed-off-by: Nikodemus Siivola <nikodemus@random-state.net>

12 years agofix Darwin/PPC build
Bruce O'Neel [Sun, 20 Nov 2011 11:05:01 +0000 (13:05 +0200)]
fix Darwin/PPC build

  lp#892705

Signed-off-by: Nikodemus Siivola <nikodemus@random-state.net>

12 years agonew SET-SBCL-SOURCE-LOCATION convenience function
Zach Beane [Sat, 19 Nov 2011 21:14:06 +0000 (21:14 +0000)]
new SET-SBCL-SOURCE-LOCATION convenience function

From Zach Beane sbcl-devel 2011-11-15.

Signed-off-by: Christophe Rhodes <csr21@cantab.net>

12 years agosb-bsd-sockets: fix GET-HOST-BY-NAME and -ADDRESS on unthreaded builds
Nikodemus Siivola [Sat, 19 Nov 2011 19:48:09 +0000 (21:48 +0200)]
sb-bsd-sockets: fix GET-HOST-BY-NAME and -ADDRESS on unthreaded builds

 (Platforms with getaddrinfo.)

 Broken by recent thread-safety fix for the same.

12 years agomake RESTART-FRAME debugger command at least try to restart anon frames
Nikodemus Siivola [Sat, 19 Nov 2011 16:41:39 +0000 (18:41 +0200)]
make RESTART-FRAME debugger command at least try to restart anon frames

  Try to grab the debug-fun-fun and call it.

  This /is/ an iffy proposition, though, so don't advertise it,
  and caution the user before going ahead.

12 years agobetter inner and anonymous function names
Nikodemus Siivola [Tue, 9 Aug 2011 16:05:42 +0000 (19:05 +0300)]
better inner and anonymous function names

 * New concept: "name context". It is either name of the outermost non-NIL
   block in the current lexenv (FIXME: would be better to have the outermost
   global function name instead) or the source-namestring of the file in which
   the function resides.

 * Name anonymous functions as

    (LAMBDA <lambda-list> :IN <context>)

 * Name FLET and LABELS functions as

    (FLET <name> :IN <context>)

   and

    (LABELS <name> :IN <context>)

   Adjust tests to suit.

 * Remove BLOCK-GENSYM as this fulfills the same goals, and together
   they make backtraces overly noisy.

12 years agoclarify GET-CAS-EXPANSION docstring
Nikodemus Siivola [Sat, 19 Nov 2011 15:00:57 +0000 (17:00 +0200)]
clarify GET-CAS-EXPANSION docstring

12 years agoGC documentation tweaks
Nikodemus Siivola [Sat, 19 Nov 2011 14:39:59 +0000 (16:39 +0200)]
GC documentation tweaks

  * Fold documentation of (SETF GC-LOGFILE) into that of GC-LOGFILE.

  * Document default value of GENERATION-NUMBER-OF-GCS-BEFORE-PROMOTION.

  * Order the dictionary entries in the manual's GC section more logically.
    I hope.

12 years agoexport DYNAMIC-SPACE-SIZE from SB-EXT
Nikodemus Siivola [Sat, 19 Nov 2011 14:37:03 +0000 (16:37 +0200)]
export DYNAMIC-SPACE-SIZE from SB-EXT

12 years agodefault gen.bytes_consed_between_gc to same 5% of dynamic space size
Nikodemus Siivola [Sat, 19 Nov 2011 14:35:18 +0000 (16:35 +0200)]
default gen.bytes_consed_between_gc to same 5% of dynamic space size

  ...the previous default was 2,000,000 bytes, not 20Mb as the
  documentation claimed. Oops.