Stas Boukarev [Fri, 13 Apr 2012 11:38:53 +0000 (15:38 +0400)]
pprint: Make sure that lists like (loop . 10) can be printed.
pprint signaled an error when called on improper lists with
a car being a symbol from CL (loop, macrolet, flet, and some others).
Stas Boukarev [Fri, 13 Apr 2012 11:19:20 +0000 (15:19 +0400)]
ensure-directory-exists: didn't work when *d-p-d* had NAME or TYPE components.
(let ((*default-pathname-defaults* #p"/tmp/foo"))
(ensure-directories-exist "/"))
signalled an error that "/" doesn't exist because it was checking for "/foo".
Nikodemus Siivola [Fri, 13 Apr 2012 11:00:21 +0000 (14:00 +0300)]
robustify (deadlock-detection interrupts) test
1. Make sure the desired "tricky" ordering happens.
2. Make sure threads can't exit before they're intrerupted.
Next time I commit a test that relies on SLEEP without a comment explaining
(1) why it is necessary and there isn't a better alternative (2) what the
ordering the tests is trying to achieve actually ise... please hit me with a
stick. Hard.
Nikodemus Siivola [Wed, 28 Mar 2012 11:16:54 +0000 (14:16 +0300)]
cleanup: remove cast to (unsigned long) from print_ptr()
Nikodemus Siivola [Wed, 28 Mar 2012 10:40:47 +0000 (13:40 +0300)]
cleanup: partial long cleanup in sniff_code_object and gencgc_apply_code_fixups
Feels more like an address arithmetic cleanup, though. :)
Slowly...
Nikodemus Siivola [Wed, 28 Mar 2012 10:40:35 +0000 (13:40 +0300)]
cleanup: gencgc copy_unboxed_object and shared gc_general_copy_object
Implement the first in terms of the second: they're identical except for the
calling convention. Move the second to gc-internal.h as an inline function.
Also eliminates a couple of longs.
Nikodemus Siivola [Wed, 28 Mar 2012 06:03:46 +0000 (09:03 +0300)]
cleanup: use size_t for new_areas_index and max_new_areas
Two longs down, umpteen to go.
Nikodemus Siivola [Fri, 30 Mar 2012 21:56:44 +0000 (00:56 +0300)]
gencgc: reclaim space more aggressively
* When considering auto_gc_trigger, take the number of bytes about to be
allocated into account.
* If bytes_consed_between_gcs is more than the amount of free heap, set next
GC to occur when half of the remaining free heap has been consumed.
* Keep track of the size of the largest object allocated between two GCs.
When collecting garbage, if there isn't enough space to allocate at least
two such objects before collecting the last generation due a collection,
extend the collection by one extra generation.
This works around our tendency to immediately promote large objects to
generation 1, due to auto_gc_trigger causing a GC _after_ the allocation.
Fixes lp#936304.
Nikodemus Siivola [Thu, 29 Mar 2012 15:31:58 +0000 (18:31 +0300)]
MAKE-LEXENV used NCONC on its arguments, which callers did not expect
Fixes lp#924276.
Nikodemus Siivola [Wed, 28 Mar 2012 13:46:04 +0000 (16:46 +0300)]
more conservative classoid-name clearing
(SETF (FIND-CLASS X) NIL) should not clear the classoid name if X is
not the proper name of the class.
lp#941102
Nikodemus Siivola [Wed, 28 Mar 2012 13:03:50 +0000 (16:03 +0300)]
plain T and OTHERWISE not allowed in CASE normal-clauses
lp#959687
Nikodemus Siivola [Tue, 27 Mar 2012 07:53:19 +0000 (10:53 +0300)]
don't refer to unix namestrings on windows
Kambiz Darabi [Fri, 6 Jan 2012 08:11:36 +0000 (09:11 +0100)]
sb-simple-streams: signal an error for bad stream classes in OPEN
Instead of silently returning NIL, signal an error if the class does not
exist (if argument :class is a symbol) or is not a stream class.
lp#969352
Nikodemus Siivola [Wed, 28 Mar 2012 07:00:00 +0000 (10:00 +0300)]
better REPLACE docstring
lp#965592
Juho Snellman [Thu, 12 Apr 2012 21:07:37 +0000 (21:07 +0000)]
1.0.56: will be tagged as "sbcl-1.0.56"
Juho Snellman [Thu, 12 Apr 2012 15:10:25 +0000 (17:10 +0200)]
Add workaround to a flaky semaphore timeout test.
Juho Snellman [Mon, 2 Apr 2012 03:50:46 +0000 (05:50 +0200)]
Add an entry for ASDF upgrade to NEWS
Nikodemus Siivola [Fri, 6 Apr 2012 08:47:17 +0000 (11:47 +0300)]
clarify the make.sh --with-feature and --without-feature syntax in INSTALL
Documentation-only, so going in despite the freeze.
Juho Snellman [Sun, 25 Mar 2012 21:16:49 +0000 (23:16 +0200)]
contrib/asdf: Import asdf 2.20 from upstream.
* lp#933112
Christophe Rhodes [Sun, 25 Mar 2012 06:41:21 +0000 (07:41 +0100)]
Fix build on PPC/Darwin
Christophe Rhodes [Sat, 24 Mar 2012 14:00:08 +0000 (14:00 +0000)]
Fixup fewer complaints about hairy lexical environments
In particular, if the function has been requested NOTINLINE, and that name
has never been INLINE or MAYBE-INLINE, there should be no compiler note.
Include a test case and a NEWS entry for posterity.
Stas Boukarev [Sat, 24 Mar 2012 13:28:30 +0000 (17:28 +0400)]
Don't signal a note on NOTINLINE non-toplevel functions.
When a function was declared NOTINLINE, and later defined not at the
toplevel, SBCL signaled a note saying that it can't inline it.
Fixes lp#963530.
Martin Cracauer [Fri, 23 Mar 2012 17:39:54 +0000 (13:39 -0400)]
Closes https://bugs.launchpad.net/sbcl/+bug/911027
Fix copy-structure. When copying from stack to heap, garbage could
end up in the heap making GC unhappy. Thanks to James Knight.
Stas Boukarev [Sun, 11 Mar 2012 03:41:29 +0000 (07:41 +0400)]
Make SBCL buildable by Clang.
The only changes needed were a modification to use $CC when building
contribs, and inline declaration incompatibility for a couple of
functions.
Closes lp#658414.
Stas Boukarev [Thu, 8 Mar 2012 20:13:49 +0000 (00:13 +0400)]
ensure-directories-exist: Signal an error when trying to create a
directory with the same name as an existing file.
Previously (ensure-directories-exist "/foo/bar/"), where /foo/bar is a
regular file, just silently returned "/foo/bar/", NIL.
Joshua Elsasser [Sun, 19 Feb 2012 23:25:42 +0000 (15:25 -0800)]
Clean up OpenBSD makefile fragments a little.
It seems -export-dynamic is no longer necessary for
tools-for-build. Perhaps it never was, and I was just confused.
Joshua Elsasser [Sun, 19 Feb 2012 22:53:51 +0000 (14:53 -0800)]
Remove an OpenBSD note in the README which is no longer necessary.
OpenBSD's behavior has not changed, but the default SBCL allocation
size was changed some time ago to work with the default OpenBSD
resource limits.
Stas Boukarev [Sun, 19 Feb 2012 04:00:08 +0000 (08:00 +0400)]
coreparse.c: Fix a typo WORD_FTMX -> WORD_FMTX.
Stas Boukarev [Sat, 11 Feb 2012 21:54:27 +0000 (01:54 +0400)]
getf: Correct docstring.
Use `PLACE' instead of `Place' when referring to the variable.
Fixes lp#930751
Nikodemus Siivola [Mon, 23 Jan 2012 12:27:17 +0000 (14:27 +0200)]
weakening hairy integer types
Fixes lp#913232.
Deal with intersection types and unions including non-integer component
types, such as:
(OR (INTEGER * -1) (AND (SATISFIES ODDP) (INTEGER 1)))
Stas Boukarev [Sun, 22 Jan 2012 03:21:10 +0000 (11:21 +0800)]
maybe-update-info-for-gf: Use KEYWORD-SPEC-NAME for keyword parameters.
Use KEYWORD-SPEC-NAME instead of KEYWORDICATE to handle keyword
parameter definitions like ((:keyword var) default).
Patch by Andy Hefner.
Jim Wise [Tue, 17 Jan 2012 16:14:41 +0000 (11:14 -0500)]
Add patches from Aymeric Vincent to fix sb-posix on recentish NetBSD.
There is some possibility that this will break one of the sb-posix tests on FreeBSD:
The "rmdir" patch needs some input from FreeBSD users.
"rmdir /" returns EBUSY on NetBSD. Given the recent commit
2a9b33fc45842ec0335fef2988e07337ae8f1fc7 on october, 17. 2011, it looks
like OpenBSD and Darwin return EISDIR, but it's clearly not the case of
NetBSD with a (usual) FFS file system.
In short, either sbcl is currently broken on FreeBSD wrt the rmdir test
and my patch will fix it, or my patch will break it and we need to include
freebsd in the list of OSes producing EISDIR upon "rmdir /".
Juho Snellman [Mon, 9 Jan 2012 02:08:08 +0000 (03:08 +0100)]
1.0.55: will be tagged as "sbcl-1.0.55"
Juho Snellman [Mon, 9 Jan 2012 02:05:53 +0000 (03:05 +0100)]
Mark :no-consing :specialized-dx-vectors as failing on x86.
Nikodemus Siivola [Mon, 2 Jan 2012 10:18:07 +0000 (12:18 +0200)]
git: add missing git hook scripts from SourceForge
We've been using these for a while now, but I neglected to stash copies in
the repository.
Also instructions for updating them, since it isn't the most intuitive thing
in the world.
Nikodemus Siivola [Mon, 2 Jan 2012 09:56:03 +0000 (11:56 +0200)]
twiddle script.test.sh
Can't open /dev/stdout on all platforms -- but happily for the behaviour we
want to test we don't have to.
Also add a compile of variations on the theme.
Nikodemus Siivola [Wed, 7 Dec 2011 09:26:45 +0000 (11:26 +0200)]
runtime: handle KERN_ABORTED in the darwin semaphore implementation
Analogous to EINTR.
Nikodemus Siivola [Tue, 6 Dec 2011 00:01:01 +0000 (02:01 +0200)]
defknown SC-NUMBER-OR-LOSE as foldable
No point calling it all the time with constant arguments.
Nikodemus Siivola [Fri, 30 Dec 2011 13:07:14 +0000 (15:07 +0200)]
use %VECTOR-RAW-BITS in %BIT-POSITION/[0|1]
No need to pin, and it even performs a tiny bit better than using explicit
word -> byte address computations.
Nikodemus Siivola [Fri, 30 Dec 2011 12:54:52 +0000 (14:54 +0200)]
package locks and compile-time effects of DEFCLASS
DEFCLASS FTYPE used to break SBCL, but package locks didn't catch it.
Nikodemus Siivola [Thu, 29 Dec 2011 18:32:31 +0000 (20:32 +0200)]
stack-allocatable fill-initialized specialized arrays, part tres
lp#902351
Mark %CHECK-BOUND as DX-SAFE, so that vectors of unknown size can be stack
allocated.
Nikodemus Siivola [Tue, 13 Dec 2011 15:45:34 +0000 (17:45 +0200)]
faster FIND and POSITION on bit-vectors
Read data a word at a time for efficiency's sake.
Could do even better with VOPs, but this already wins hugely on sparse
vectors -- and works on all backends. (Tested on both little- and big-endian
hosts.)
This also makes constraint propagation in sparse universes a bit less sucky.
Alastair Bridgewater [Fri, 2 Dec 2011 17:39:00 +0000 (12:39 -0500)]
Fix control stack scavenging for dynamic-extent allocation.
* Non-CONS objects on the control stack can cause... problems
in scavenge(). Rewrite scavenge_control_stack() to contain the
appropriate (simpler) scavenge code directly.
Alastair Bridgewater [Thu, 10 Nov 2011 20:37:40 +0000 (15:37 -0500)]
Move control-stack scavenging to gc-common.c.
* Instead of having slightly-divergent copies of the control
stack scavenging logic for both GENCGC and CHENEYGC, move the
GENCGC version (which is a separate function) to gc-common.c,
and alter CHENEYGC to use it instead of doing its own thing
inline.
Alastair Bridgewater [Fri, 28 Oct 2011 23:04:25 +0000 (19:04 -0400)]
tests: Raw instances shouldn't stack-allocate on most targets.
* We possibly should be testing to make sure that they /do/
cons, but we can live with not having an expected failure
message for a situation that would take a lot of careful work
on the compiler and GC to improve.
Alastair Bridgewater [Thu, 27 Oct 2011 13:16:08 +0000 (09:16 -0400)]
DX structs with raw slots only allowed on conservative gencgc.
* Unless the control stack is conservatively scavenged, any
unboxed data could lead the GC to either corrupt the stack,
corrupt the heap, or just die screaming.
* Thus, all unboxed data must be stored on the number stack
on such systems. However, the number stack isn't scavenged
for boxed data, so we can't store any object that contains
both boxed and unboxed words if the unboxed words can appear
to the GC as anything other than a FIXNUM (thus, aligned
pointers are safe to store on the control stack).
* All INSTANCE objects have a boxed slot, the LAYOUT slot.
If an instance also has raw slots then it cannot go on either
stack, and must be heap-allocated.
* And none of this applies if the stack is conservatively
scavenged, which means (and gencgc c-stack-is-control-stack).
On such targets, we can dump whatever we want to the control
stack, and the GC won't complain at all.
Alastair Bridgewater [Wed, 14 Dec 2011 19:43:39 +0000 (14:43 -0500)]
Fix build on non-GENCGC targets.
* Commit
8ee61a7761181511d15690246eb52d100e233935 introduced a
function with a parameter that is only used on gencgc targets.
Declare it to be ignored on non-gencgc targets.
Lutz Euler [Wed, 14 Dec 2011 17:11:53 +0000 (18:11 +0100)]
x86: Better disassembly of segment-prefixes.
Thanks to Alastair Bridgewater who originally provided these changes
(and the headline above). I adapted his work to fit into the prefix
instruction infrastructure now available. Of his original comments
the following three still apply:
* Establish a SEG prefix for segment overrides similar
to the X66 data-width prefix.
* Have the SEG prefilter set an instruction property
for the specific segment being used.
* Alter PRINT-MEM-ACCESS to output a suitable prefix
for memory addresses when the appropriate instruction
property has been set.
I have abstracted out the segment prefix printing into the new function
MAYBE-PRINT-SEGMENT-OVERRIDE, called from PRINT-MEM-ACCESS, not to make
the latter more lengthy.
Here is an example to show the difference in disassembler output:
Old:
; 0E6: 64 FS-SEGMENT-PREFIX
; 0E7: 8910 MOV [EAX], EDX
; 0E9: 64 FS-SEGMENT-PREFIX
; 0EA:
8B0528000000 MOV EAX, [#x28]
New:
; 0E6: 648910 MOV FS:[EAX], EDX
; 0E9:
648B0528000000 MOV EAX, FS:[#x28]
Lutz Euler [Wed, 14 Dec 2011 17:11:53 +0000 (18:11 +0100)]
Improve handling of x86[-64] prefix instructions in the disassembler.
Make LOCK, REP, REX and #x66 true prefix instructions on x86[-64].
This changes only the disassembler part of the instruction definitions;
with respect to assembly LOCK already was a true prefix instruction and
REP/REPE/REPNE remain instructions in their own right.
Delete the scores of instruction formats and printer clauses that are
made obsolete by this change. Two printer clauses are still needed for
each of those SSE instructions that use the REX prefix in an infix
position.
An example of the changes in the disassembler output (on x86-64):
Old:
; 5FFC: F0 LOCK
; 5FFD:
480FB171F9 CMPXCHG [RCX-7], RSI
New:
; 4C:
F0480FB171F9 LOCK CMPXCHG [RCX-7], RSI
Lutz Euler [Wed, 14 Dec 2011 17:11:53 +0000 (18:11 +0100)]
Corrections to disassembly of SHLD, SHRD and LEA on x86[-64].
The double shifts were wrongly matching the bit pattern of some CMOV
variants. Corrected by using another instruction format on x86-64 and
by adding a constraint on the WIDTH field on x86. This made it possible
to enable the variant with an immediate shift count. On x86-64, changed
the maximum immediate shift count from 31 to 63.
Also, on x86-64, one of the printers for LEA was missing a WIDTH field
restriction, thus wrongly matching a "MOV to segment register", too.
Lutz Euler [Wed, 14 Dec 2011 17:11:53 +0000 (18:11 +0100)]
Make some disassembler parameters effectual.
In the context of changing the treatment of prefix instructions in the
disassembler I came across somewhat broken code to parametrize it.
This might as well be repaired, so:
Correct the calculation of the DSTATE's ARGUMENT-COLUMN which is
intended to set a minimal field width for the opcode column. It needs
to take *DISASSEM-INST-COLUMN-WIDTH* and a few more column separators
into account. So as not to confuse users, restore the previous behaviour
by setting *DISASSEM-OPCODE-COLUMN-WIDTH* to 0.
Don't emit instruction bytes when *DISASSEM-INST-COLUMN-WIDTH* is 0.
Whitespace correction in ALIGNMENT-HOOK.
Playing with these two parameters allows to select different disassembly
formats (example from x86-64):
Current:
; E11: L7:
4881FB17001020 CMP RBX,
537919511
; E18:
0F8480000000 JEQ L13
(setf SB-DISASSEM::*DISASSEM-INST-COLUMN-WIDTH* 0)
; E11: L7: CMP RBX,
537919511
; E18: JEQ L13
(setf SB-DISASSEM:*DISASSEM-OPCODE-COLUMN-WIDTH* 8)
; E11: L7: CMP RBX,
537919511
; E18: JEQ L13
Lutz Euler [Wed, 14 Dec 2011 17:11:53 +0000 (18:11 +0100)]
Make the disassembler understand instruction prefixes.
Instructions having NIL as their printer are treated as prefixes,
meaning that they are printed on the same line as the following
instruction. If an instruction's PRINT-NAME is NIL, too, this prefix
is not printed (but prefilters etc. are run). Any number of prefix
instructions can occur in immediate succession before a non-prefix
instruction.
This commit only provides the infrastructure; its impact is currently
limited as there aren't any instructions having NIL as their printer.
The motivation for this change comes from x86[-64]: One goal is to make
instructions using prefixes like LOCK and REP print nicer, the other
to reduce the combinatorial explosion of instruction formats in the
disassembler that is currently needed to deal with the possible
combinations of the REX and the operand size override (#x66) prefixes
and that would become unbearable once the aforementioned and the segment
override prefixes are added.
Extend the existing beginnings of support for prefix instructions in
MAP-SEGMENT-INSTRUCTIONS to collect prefix names and to print them at
the right time, which is at the next non-prefix instruction, when a
non-decodable instruction is encountered or at the end of the segment.
Change the semantics of DSTATE-INST-PROPERTIES: This list is now emptied
only after a non-prefix instruction has been processed.
Abstract out the filling of the column containing the instruction bytes
into the new function PAD-INST-COLUMN and use it in several places.
Clean up whitespace and improve line breaks.
Paul Khuong [Tue, 13 Dec 2011 18:26:05 +0000 (13:26 -0500)]
Fix EQL constraint propagation on constant assigned closure variables
* Constant lvars can now be references to assigned-to closure-
converted lambda-vars, which don't have consets. Just always use
lvar-value, at the cost of a slight potential slowdown due to more
calls to find-constant.
Reported by Eric Marsden on sbcl-devel.
* Also, canonicalize whitespace in dynamic-extent tests.
Fixes lp#903838.
Jim Wise [Tue, 13 Dec 2011 15:58:49 +0000 (10:58 -0500)]
(NO-CONSING SPECIALIZED-DX-VECTORS) fails on sunos/x86. Mark this.
Nikodemus Siivola [Mon, 12 Dec 2011 12:42:35 +0000 (14:42 +0200)]
protect against read-time package-lock circumvention from LOCKED::(BAR)
Instead of binding *PACKAGE*, bind *READER-PACKAGE* which only
affects the package READ-TOKEN interns into in the absence of a
prefix.
lp#902806
Nikodemus Siivola [Mon, 12 Dec 2011 12:34:56 +0000 (14:34 +0200)]
remove etags as a build-time dependency
Do try to build TAGS by default, but if etags isn't there, don't
make a fuss.
lp#903145
Joshua Elsasser [Sat, 10 Dec 2011 22:18:01 +0000 (14:18 -0800)]
Fix clisp-hosted build.
Nikodemus Siivola [Sat, 10 Dec 2011 21:01:19 +0000 (23:01 +0200)]
stack-allocatable fill-initialized specialized arrays, take 2
Really fix lp#902537.
Turns out multiple references to the stack allocated vector complicate
things /just/ sufficiently the that DX machinery can't keep up. (I because
the code that allocates and initializes the vector isn't substituted at the
use-site due to multiple references.)
While it would be nice to make it smart enough to deal with
non-let-converted WITH-ARRAY-DATA, that looks a bit tricky... so instead
simplify things in the FILL transform when the vector is a simple-array.
Nikodemus Siivola [Sat, 10 Dec 2011 17:07:53 +0000 (19:07 +0200)]
faster VECTOR-SUBSEQ*
Use a WITH-ARRAY-DATA to get to the underlying vector, and use a widetag
dispatch table to pick the correct SUBSEQ implementation for the underlying
type.
This is actually just as fast even for simple strings as STRING-SUBSEQ*, so
throw it out.
Also make inlining SUBSEQ conditional on SPEED > SPACE now that the
out-of-line version doesn't suck so much.
Fixes lp#902537.
Nikodemus Siivola [Sat, 10 Dec 2011 00:25:51 +0000 (02:25 +0200)]
stack-allocatable fill-initialized specialized arrays
I *think* we had this working earlier already, but it's been broken at least
for a while now since there were no tests for it.
Add a DEFKNOWN to the array byte bashers, providing the RESULT-ARG -- and
make them return the sequence.
Replace the unused and bitrotted UNSAFE IR1 attribute with its inverse:
DX-SAFE, and use that togather with RESULT-ARG to allow multiple refs to
potentially DX leafs. Still accept UNSAFE in DEFKNOWNs occurring in
user-code, but ignore it and give a style-warning.
For now, add DX-SAFE to LENGTH and VECTOR-LENGTH, which is enough for our
purposes.
Fixes lp#902351.
Nikodemus Siivola [Fri, 9 Dec 2011 23:12:27 +0000 (01:12 +0200)]
remove MUFFLE-CONDITION from the FILL transform
It hides failure to stack allocate results of a MAKE-ARRAY with non-zero
initial-element and non-T element-type.
Part of lp#902351.
Nikodemus Siivola [Sat, 10 Dec 2011 10:27:08 +0000 (12:27 +0200)]
make DESCRIBE report IR1 attributes for known functions
Nikodemus Siivola [Fri, 9 Dec 2011 20:51:55 +0000 (22:51 +0200)]
fix errors from stack allocation compiler notes
AKA, error reporting is hard.
Nikodemus Siivola [Fri, 9 Dec 2011 19:00:44 +0000 (21:00 +0200)]
WITH-SPINLOCK compatibility layer was broken
Copy-paste damage from WITH-RECURSIVE-LOCK, looks like. We don't have a
WITH-LOCK and never did, should be WITH-MUTEX.
Nikodemus Siivola [Fri, 9 Dec 2011 18:39:49 +0000 (20:39 +0200)]
refactor FOP table and stack handling
Just two special variables *FOP-TABLE* and *FOP-STACK*.
Both hold a simple-vector, whose first index holds the index of the last
element. These are always freshly allocated -- no more *FREE-FOP-TABLES*
dirtying up the old generations.
Define a semi-opaque interface for manipulating the stack and the
table. (Mainly replacing explicit SVREF's with REF-FOP-TABLE.)
...and lo! Our fasl-loading speed sucks 5-10% less.
Nikodemus Siivola [Fri, 9 Dec 2011 15:04:52 +0000 (17:04 +0200)]
delete *FASL-SYMBOL-BUFFER*
Instead allocate the right-sized string every time, and add
:NO-COPY option to INTERN* and use it in AUX-FOP-INTERN to
avoid copying when interning.
Nikodemus Siivola [Fri, 9 Dec 2011 15:00:00 +0000 (17:00 +0200)]
rename FOP-INTERN AUX-FOP-INTERN for clarity
...so as not to confuse it with actual FOPs.
Nikodemus Siivola [Fri, 9 Dec 2011 14:56:10 +0000 (16:56 +0200)]
use FAST-READ-BYTE in LOAD-S-INTEGER
No reason not to.
Nikodemus Siivola [Fri, 9 Dec 2011 08:26:00 +0000 (10:26 +0200)]
optimize READ-STRING-AS-[BYTES|UNSIGNED-BYTE-32]
Use FAST-READ-BYTE / FAST-READ-U-INTEGER, and add a separate
READ-BASE-STRING-AS-BYTES.
This actually makes a difference in FASL-loading speed.
Nikodemus Siivola [Fri, 9 Dec 2011 13:42:04 +0000 (15:42 +0200)]
easier to read FAST-READ-U-INTEGER expansion
Nikodemus Siivola [Fri, 9 Dec 2011 08:23:24 +0000 (10:23 +0200)]
FAST-READ-BYTE refactoring
Change PREPARE-FOR-FAST-READ-BYTE into WITH-FAST-READ-BYTE.
DONE-WITH-FAST-READ-BYTE is gone.
FAST-READ-BYTE is a local inline function instead of a macro.
Lutz Euler [Fri, 9 Dec 2011 20:25:08 +0000 (21:25 +0100)]
Make COERCE on characters more standard-conforming.
Characters could be coerced to subtypes of CHARACTER to which they
don't belong. Also, character designators that are not characters
could be coerced to proper subtypes of CHARACTER. Make all of these
instead signal an error as required by CLHS COERCE.
Add test cases, both for unicode-enabled and non-unicode-enabled SBCL.
Fixes lp#841312.
Alastair Bridgewater [Fri, 9 Dec 2011 16:23:44 +0000 (11:23 -0500)]
Add tools-for-build/determine-endianness to .gitignore.
* Nothing more need be said.
Alastair Bridgewater [Fri, 9 Dec 2011 16:20:46 +0000 (11:20 -0500)]
Fix build on CHENEYGC targets.
* Conflicting definitions of alloc_region, both useless.
* Remove both definitions from visibility in print.c, and add an
explicit error in gencgc-alloc-region.h to help diagnosis if this
ever crops up again.
Nikodemus Siivola [Fri, 9 Dec 2011 13:06:10 +0000 (15:06 +0200)]
test for bug 308926
Seems to be good now, let's keep it that way.
Nikodemus Siivola [Fri, 9 Dec 2011 12:53:54 +0000 (14:53 +0200)]
test for bug 308941
Has fixed itself at some point, let's keep it from regressing.
Nikodemus Siivola [Fri, 9 Dec 2011 12:35:01 +0000 (14:35 +0200)]
refactor symbol interning FOPs
Put the shared logic into FOP-INTERN.
Nikodemus Siivola [Fri, 9 Dec 2011 08:11:49 +0000 (10:11 +0200)]
make DEFINE-FOP use &BODY instead of &REST
Nikodemus Siivola [Fri, 9 Dec 2011 09:53:18 +0000 (11:53 +0200)]
better "cannot stack allocate" compiler notes
When the note refers to failure to allocate an argument,
say so -- instead of claiming to be unable to stack allocate
the entire function, which is both silly and wrong.
Also prettier formatting.
Nikodemus Siivola [Fri, 9 Dec 2011 09:49:19 +0000 (11:49 +0200)]
make TRIVIAL-LAMBDA-VAR-REF-P false for XEPs
Also clean up TRIVIAL-LAMBDA-VAR-REF-LVAR.
Fixes lp#803508.
Lutz Euler [Thu, 8 Dec 2011 22:28:52 +0000 (23:28 +0100)]
Silence two style warnings from the test harness.
Currently running any test emits a warning that REALLY-INVOKE-DEBUGGER
is undefined. Running any test that uses IMPURE-RUNNER additionally
emits a warning that *BREAK-ON-ERROR*'s lexical binding is used despite
its name indicating specialness.
Silence these two by moving the definition of REALLY-INVOKE-DEBUGGER
before its use and by adding a SPECIAL declaration for *BREAK-ON-ERROR*
in RUN-IMPURE-IN-CHILD-SBCL in a form that is executed in the child
SBCL.
Nikodemus Siivola [Thu, 8 Dec 2011 18:09:00 +0000 (20:09 +0200)]
fix tyop in ONLY-ONE-BOXED-CONSTANT-FOR-MULTIPLE-USES that broke it
s/'/`/
Nikodemus Siivola [Thu, 8 Dec 2011 15:54:39 +0000 (17:54 +0200)]
robustify ONLY-ONE-BOXED-CONSTANT-FOR-MULTIPLE-USES test
Was broken on x86 due to test fragility.
Nikodemus Siivola [Thu, 8 Dec 2011 15:50:58 +0000 (17:50 +0200)]
use COMPONENT-TOPLEVELISH-P in CHECK-CONSISTENCY
Fixes lp#308921 -- bug was in the consistency checking, not the compiler
itself.
Luis Oliveira [Thu, 8 Dec 2011 14:56:01 +0000 (16:56 +0200)]
explicit :BIG-ENDIAN feature
Instead of implying big-endianness by lack of the :LITTLE-ENDIAN feature,
make it explicit.
Stas Boukarev [Thu, 8 Dec 2011 15:22:12 +0000 (19:22 +0400)]
Fix transform for SEARCH on vectors with :form-end t.
When from-end is specified, start2 becomes end2 and the other way
around, so return star2 or end2 accordingly when testing for an empty
subsequence.
Stas Boukarev [Thu, 8 Dec 2011 14:42:20 +0000 (18:42 +0400)]
Fix transform for SEARCH on vectors.
An empty first sequence means that (= start1 end1) and it will match
the second sequence anywhere starting from start2, so return start2
in case of (= start1 end1).
Nikodemus Siivola [Thu, 8 Dec 2011 12:12:48 +0000 (14:12 +0200)]
missing NEWS for the last few commits
Nikodemus Siivola [Wed, 7 Dec 2011 17:48:39 +0000 (19:48 +0200)]
run-program leaked a pipe per call
exec-failure detection neglected to close the other side of the pipe.
Nikodemus Siivola [Wed, 7 Dec 2011 10:24:54 +0000 (12:24 +0200)]
gencgc: bogus memory fault handling
Add more debugging information when a bogus memory fault occurs,
and two control variables:
continue_after_memoryfault_on_unprotected_page
ignore_memoryfaults_on_unprotected_pages
The first just prevents us from lose()ing. Set it in darwin_init() as we
genuinely appear to get bogus memory faults in threaded code from the kernel,
which point to unprotected boxed pages. They are possibly something we could
filter out in catch_exception_raise... but don't see how. Experimentally
continuing after such them seems harmless, so let's try that but make it
noisy.
The second one silences the debugging output completely. Not set currently at
all.
Nikodemus Siivola [Wed, 7 Dec 2011 14:21:15 +0000 (16:21 +0200)]
better deadlock reporting
Print the cycle properly, so it makes sense even after the deadlock is gone,
which is now case always by the time it is reported.
Since we now break deadlocks before signaling the error, don't barf to
stderr anymore.
Nikodemus Siivola [Wed, 7 Dec 2011 13:41:45 +0000 (15:41 +0200)]
darwin: dladdr can deadlock the GC
Needs to be always called inside WITHOUT-GCING since it grabs locks, and is
/sometimes/ called inside WITHOUT-GCING.
Nikodemus Siivola [Wed, 7 Dec 2011 07:06:46 +0000 (09:06 +0200)]
avoid recursive errors from broken standard streams on debugger entry
Handle STREAM-ERORRS in FLUSH-STANDARD-OUTPUT-STREAMS.
Nikodemus Siivola [Tue, 6 Dec 2011 00:07:24 +0000 (02:07 +0200)]
DESCRIBE improvements
* Nicer DESCRIBE for type designators. Use TYPEXPAND-1 to get it done right.
* Bind *PRINT-CIRCLE* to NIL around lambda-list printing, but compensate with
*PRINT-LEVEL* and *PRINT-LENGTH* for sanity's sake.
Jim Wise [Tue, 6 Dec 2011 16:22:51 +0000 (11:22 -0500)]
Document --fancy.
While here, put list of features set by --fancy into $FANCY_FEATURES,
so documentation doesn't fall out of sync with what option does.
Alastair Bridgewater [Tue, 6 Dec 2011 16:05:53 +0000 (11:05 -0500)]
Add :CHENEYGC feature to non-GENCGC targets.
* When I wrote
14fd5afbac525e7a2e86903070afa0e94dfa14f7 I was
under the impression that there was a :CHENEYGC feature used on
plaforms that used the cheney collector. This was logical, but
incorrect.
* The two ways forward were to back out the use of :CHENEYGC
as a feature when checking compatibility or to move forward and
add :CHENEYGC and use it in preference to (NOT :GENCGC) where
appropriate, opening the door to a third GC option.
* This is the minimal fix, adding :cheneygc to the non-gencgc
targets in make-config.sh.
Alastair Bridgewater [Tue, 6 Dec 2011 16:00:56 +0000 (11:00 -0500)]
Add src/runtime/TAGS to .gitignore.
* We build TAGS by default now, so make it not show up in git.
Nikodemus Siivola [Mon, 5 Dec 2011 23:55:30 +0000 (01:55 +0200)]
fix ONLY-ONE-BOXED-CONSTANT-FOR-MULTIPLE-USES test
Feh.
Nikodemus Siivola [Mon, 5 Dec 2011 23:14:22 +0000 (01:14 +0200)]
don't stack-allocate specialized vectors on non-conservtive control stacks
...cos that would be bad. Currently affects only MIPS.
Nikodemus Siivola [Mon, 5 Dec 2011 22:36:51 +0000 (00:36 +0200)]
fix doubled unboxed constants when there is no immediate representation
The recent changes to handling of boxed constants indvertently cause them to
be duplicated when there was not immediate representation at all, and both an
unboxed and a boxed representaion would have been desirable.