Simplify getting the contents of assembler segments.
Extend FINALIZE-SEGMENT to compact the segment's buffer and provide an
exported function to get at this buffer. This resolves an old KLUDGE
noted at ON-SEGMENT-CONTENTS-VECTORLY, making this function unnecessary.
There are several benefits to this change: First, the consumers of
assembler segment's contents, like WRITE-SEGMENT-CONTENTS which is used
for example during FASL dumping, or MAKE-CORE-COMPONENT, now call
WRITE-SEQUENCE respectively COPY-BYTE-VECTOR-TO-SYSTEM-AREA only once
per segment and not once per the pieces of the segment's contents that
ON-SEGMENT-CONTENTS-VECTORLY provided, which makes for less overhead.
Second, this allows to greatly simplify the whole operation of
DISASSEMBLE-ASSEM-SEGMENT, in the course deleting several helpers of it.
So far this repartitioned the pieces of the segment's contents from
ON-SEGMENT-CONTENTS-VECTORLY, while caring not to split the contents
inside instructions, which needed a sizable amount of code. Now the
segment's contents are simply disassembled as a whole. Also, the old
code (specifically SEGMENT-OVERFLOW) didn't take prefix instructions
into account correctly which surfaced as the bug in lp#1085729.
Fixes lp#1085729.
Also, fix an unrelated typo in NEWS.
- [DH] NEWS
- [DH] package-data-list.lisp-expr
- [DH] src/compiler/assem.lisp
- [DH] src/compiler/generic/target-core.lisp
- [DH] src/compiler/target-disassem.lisp
(June 6, 2013 02:26 PM)
Stop exporting unused symbols.
- [DH] contrib/sb-bsd-sockets/defpackage.lisp
- [DH] contrib/sb-introspect/introspect.lisp
- [DH] package-data-list.lisp-expr
- [DH] src/code/bignum.lisp
- [DH] src/compiler/fndb.lisp
- [DH] src/compiler/generic/vm-fndb.lisp
- [DH] src/compiler/ppc/parms.lisp
- [DH] src/compiler/sparc/parms.lisp
- [DH] src/compiler/x86/parms.lisp
(June 5, 2013 11:11 PM)
Factor out read-var-integer into a function.
read-var-integer macro is used quite a number of times, expand the
macro into a SETF, which calls %read-var-integer, which does actual
reading. Reduces the core size by 65KB on x86-64.
- [DH] src/code/debug-var-io.lisp
- [DH] src/compiler/target-disassem.lisp
(June 5, 2013 07:28 PM)
Get rid of vm-support-routines indirection.
VM routines were defined using two functions, one calling another
through structure slots. This is unnecessary, removing leads to a
~200KB core size reduction on x86-64.
- [DH] package-data-list.lisp-expr
- [DH] src/assembly/alpha/support.lisp
- [DH] src/assembly/hppa/support.lisp
- [DH] src/assembly/mips/support.lisp
- [DH] src/assembly/ppc/support.lisp
- [DH] src/assembly/sparc/support.lisp
- [DH] src/assembly/x86-64/support.lisp
- [DH] src/assembly/x86/support.lisp
- [DH] src/compiler/alpha/c-call.lisp
- [DH] src/compiler/alpha/call.lisp
- [DH] src/compiler/alpha/nlx.lisp
- [DH] src/compiler/alpha/pred.lisp
- [DH] src/compiler/alpha/vm.lisp
- [DH] src/compiler/backend.lisp
- [DH] src/compiler/generic/late-nlx.lisp
- [DH] src/compiler/generic/primtype.lisp
- [DH] src/compiler/hppa/c-call.lisp
- [DH] src/compiler/hppa/call.lisp
- [DH] src/compiler/hppa/insts.lisp
- [DH] src/compiler/hppa/nlx.lisp
- [DH] src/compiler/hppa/pred.lisp
- [DH] src/compiler/hppa/vm.lisp
- [DH] src/compiler/mips/c-call.lisp
- [DH] src/compiler/mips/call.lisp
- [DH] src/compiler/mips/insts.lisp
- [DH] src/compiler/mips/nlx.lisp
- [DH] src/compiler/mips/pred.lisp
- [DH] src/compiler/mips/vm.lisp
- [DH] src/compiler/ppc/c-call.lisp
- [DH] src/compiler/ppc/call.lisp
- [DH] src/compiler/ppc/insts.lisp
- [DH] src/compiler/ppc/nlx.lisp
- [DH] src/compiler/ppc/pred.lisp
- [DH] src/compiler/ppc/vm.lisp
- [DH] src/compiler/sparc/c-call.lisp
- [DH] src/compiler/sparc/call.lisp
- [DH] src/compiler/sparc/insts.lisp
- [DH] src/compiler/sparc/nlx.lisp
- [DH] src/compiler/sparc/pred.lisp
- [DH] src/compiler/sparc/vm.lisp
- [DH] src/compiler/x86-64/c-call.lisp
- [DH] src/compiler/x86-64/call.lisp
- [DH] src/compiler/x86-64/nlx.lisp
- [DH] src/compiler/x86-64/pred.lisp
- [DH] src/compiler/x86-64/vm.lisp
- [DH] src/compiler/x86/c-call.lisp
- [DH] src/compiler/x86/call.lisp
- [DH] src/compiler/x86/nlx.lisp
- [DH] src/compiler/x86/pred.lisp
- [DH] src/compiler/x86/vm.lisp
- [DH] tests/vm.before-xc.lisp
(June 5, 2013 06:24 PM)
Optimize (mod FIXNUM) type-checks on x86oids.
Instead of two (and (>= x 0) (< x FIXNUM)) comparisons, do one
unsigned.
(mod power-of-two) is further optimized by doing one mask test
determine the range and fixnumness in one go.
- [DH] NEWS
- [DH] package-data-list.lisp-expr
- [DH] src/code/interr.lisp
- [DH] src/compiler/generic/interr.lisp
- [DH] src/compiler/generic/vm-type.lisp
- [DH] src/compiler/ir2tran.lisp
- [DH] src/compiler/x86-64/type-vops.lisp
- [DH] src/compiler/x86/type-vops.lisp
(June 5, 2013 02:38 PM)
sb-bsd-sockets: More robust inet-socket-bind test on Windows.
Nested unwind-protects aren't supported on Windows.
- [DH] contrib/sb-bsd-sockets/tests.lisp
(June 5, 2013 10:50 AM)
sb-bsd-socket tests: don't listen on a predefined port.
Listening on 1974 prevents from building contribs in parallel.
- [DH] NEWS
- [DH] contrib/sb-bsd-sockets/tests.lisp
(June 4, 2013 08:58 PM)
fix CL case conversions of characters involving iota subscript
Oh boy. Judging by the length of the web page explaining the issue
(at <http://www.tlg.uci.edu/~opoudjis/unicode/unicode_adscript.html>)
this is a bit of a minefield. I hope that this doesn't contribute
further to the trouble...
Although the combined _WITH_PROSGEGRAMMENI characters are of
general class "Lt" (i.e. titlecase), for CL purposes we treat them
as the uppercase equivalent of the lowercase _WITH_YPOGEGRAMMENI
characters (as directly specified by the case mapping data in
UnicodeData.txt). This is a little awkward, and involves a bit
of rearrangement in the indices of the misc table entries to make
the (CL) uppercase/lowercase tests efficient, but seems to be the
best of all possible worlds given that we must comply with CL's
character-to-character case mappings -- the alternative of not
providing an uppercase version of LOWERCASE_OMEGA_WITH_YPOGEGRAMMENI
seems even weirder.
The way this is done in ucd.lisp is a little bit kludgy, because we
have to avoid giving the same exception to the serbian titlecase
digraphs (Dz and friends) which mustn't map to anything, or else
we'd break invertibility. (The lowercase dz and uppercase DZ are
already (CL) case mappings of each other). Probably the thing which
will confuse future readers is that some (Unicode) titlecase
characters are (CL) upper-case-p.
- [DH] src/code/target-char.lisp
- [DH] tests/character.pure.lisp
- [DH] tools-for-build/ucd.lisp
(June 4, 2013 12:00 PM)
Simpler and more precise type derivation for APPEND/NCONC
We can suppose that all but the last argument are lists when
deriving the return type... and the logic to compute the return
type can be much simpler: it's either a CONS, the last argument,
or we don't know which (yet).
- [DH] src/compiler/srctran.lisp
- [DH] tests/compiler.pure.lisp
(June 3, 2013 05:21 PM)
Uninitialized type-error conditions can now be printed.
(print (make-condition 'simple-type-error)) signalled an unbound slot
error.
Reported by Eric Marsden, fixes lp#1184586.
- [DH] NEWS
- [DH] src/code/condition.lisp
- [DH] tests/condition.pure.lisp
(June 3, 2013 04:40 PM)
sb-bsd-sockets: Fix type of canonname in addrinfo.
Should be c-string-pointer, not c-string.
Fixes lp#1187041, patch by Jerry James.
- [DH] NEWS
- [DH] contrib/sb-bsd-sockets/constants.lisp
(June 3, 2013 04:30 PM)
Fix APPEND/NCONC type derivation properly this time.
Use type-intersection for checking types, it's more robust than what
was there before.
And a slight improvement. When argument in the middle can't be a NIL,
then the end result is guaranteed to be a CONS. Previously, the
assumption was if the type is a CONS, but that doesn't work with types
like (or cons vector).
- [DH] src/compiler/srctran.lisp
- [DH] tests/compiler.pure.lisp
(June 3, 2013 02:25 PM)
fixes in EXPT type derivation
It was possible to construct mostly (but not completely) unobservable
bogus floating-point types when deriving the type of functions
returning the value of calls to EXPT. Noticed by Vsevolod Dyomkin,
who found a way to observe it by redefining methods.
- [DH] NEWS
- [DH] src/compiler/float-tran.lisp
- [DH] tests/compiler.impure.lisp
(June 3, 2013 01:54 PM)
Fix NCONC type derivation.
Properly check the types of arguments, instead of testing for subtypes
or supertypes of LIST, check for arguments to be subtypes of NULL or CONS.
Reported by Jerry James.
- [DH] NEWS
- [DH] src/compiler/srctran.lisp
- [DH] tests/compiler.pure.lisp
(June 3, 2013 11:28 AM)
sleep: Add more precautions to avoid consing on x86.
- [DH] src/code/toplevel.lisp
- [DH] tests/interface.pure.lisp
(June 3, 2013 10:46 AM)
Fix sleep on ratios, avoiding consing.
Enable sleep tests for some platforms.
- [DH] src/code/toplevel.lisp
- [DH] tests/interface.pure.lisp
(June 3, 2013 09:52 AM)
some tests of SLEEP with ratios
- [DH] tests/interface.pure.lisp
(June 3, 2013 09:28 AM)
fix sleep on most ratios
really really ensure that the second argument to nanosleep is an
integer
- [DH] src/code/toplevel.lisp
(June 3, 2013 08:49 AM)
delete ye olde FIXME relating to unbound variable warnings
Testing the code in the real system gives a full warning
- [DH] src/code/toplevel.lisp
(June 3, 2013 08:48 AM)
fix (again) the handling of read errors in the debugger
Actually the read errors were doing what we wanted, but EOF was no
longer popping one debugger level. The control transfer is a bit
gnarly, so explicitly grab the restart we might want to use and pass
it as an argument to DEBUG-READ.
(June 3, 2013 08:47 AM)