- Jan 23, 2010
-
-
rtoy authored
everything is defined yet. Hence, add dummy %SET-FD-STREAM-EXTERNAL-FORMAT and move the real one to fd-stream-extfmt.lisp. This builds. code/fd-stream.lisp: o Always call %SET-FD-STREAM-EXTERNAL-FORMAT, even if LISP::*ENABLE-STREAM-BUFFER-P* is NIL. code/stream.lisp: o Move %SET-FD-STREAM-EXTERNAL-FORMAT to fd-stream-extfmt.lisp. o Add dummy implementation of %SET-FD-STREAM-EXTERNAL-FORMAT. code/fd-stream-extfmt.lisp: o %SET-FD-STREAM-EXTERNAL-FORMAT moved here.
-
rtoy authored
handled by the makefile which sets -DFEATURE_SSE2 appropriately because :SSE2 is a lisp feature saved in internals.inc. This was causing the C code to be rebuilt when building x87 and then sse2 in the same tree. It's not necessary to do that and should not be done.
-
rtoy authored
set-routines so that the stream has the specified external format.
-
- Jan 22, 2010
-
-
rtoy authored
properly. (Broken in previous change for fast streams.)
-
rtoy authored
-
rtoy authored
from the source file, the file is opened using the default external format. This is not right if the file was compiled using a different external format, and we try to read it using the default format. compiler/debug-dump.lisp: o Set the INFO slot to the external format used to source files. code/debug-info.lisp: o Add comment that the INFO slot contains the external format for :FILES. (It was previously unused.) code/debug.lisp: o Open the source file with the same format as used to compile the file.
-
rtoy authored
file position, we need to convert what's left in the buffer into octets to figure out how many octets haven't been delivered yet.
-
rtoy authored
same external format used for reading the file. This ensures that these files will make sense if the source file makes sense for the given external format.
-
rtoy authored
inadvertently broken when the fast external format work was done. The position did not take into account the number of octets that had been read in but not yet processed.
-
- Dec 30, 2009
- Dec 22, 2009
-
-
rtoy authored
-
- Dec 21, 2009
-
-
rswindells authored
-
- Dec 18, 2009
-
-
agoncharov authored
-
- Dec 17, 2009
-
-
rtoy authored
o Remove check for object < 0xf0000000 in scavenge.
-
rtoy authored
o Add UNIX-GETRLIMIT and appropriate constants (for solaris and darwin/x86) code/exports.lisp: o Export them.
-
rtoy authored
areas. For sparc, this means anything below the end of the text section (to capture undefined_tramp and closure_tramp and some weird pointer object in the middle of call_into_c). For darwin/x86, we ignore 0xffffffe9. Needs to be checked on other OSes and architectures. o Move the switch statement of allowed static arrays into its own function.
-
- Dec 15, 2009
-
-
rtoy authored
exist anymore anyway. (It's called set-system-external-format.)
-
- Dec 11, 2009
-
-
rtoy authored
a new limit, we want to take the absolute value of the power!
-
- Dec 07, 2009
-
-
rtoy authored
Lisp string to a C string appropriately. Bug noted by Helmut Eller on cmucl-imp, 2009-12-06. He also provided the basic solution.
-
- Dec 06, 2009
-
-
rtoy authored
instead of spreading it everywhere. o Add WITHOUT-GCING in MAKE-STATIC-VECTOR to make sure nothing moves. (Not sure this is necessary.) o Do the same in FREE-STATIC-VECTOR o Add WITHOUT-INTERRUPTS in FINALIZE-STATIC-VECTORS to make sure clear the weak pointer value and actually free the vector.
-
- Dec 05, 2009
-
-
rtoy authored
This is done by a simple mark-and-sweep GC of the static vectors. When scavenging the spaces, we mark any static vectors by setting the MSB of the header word. After GC is done, an *after-gc-hooks* function finds all of the static vectors that are not marked and frees them. For marked static vectors, we clear the mark bit. code/array.lisp: o Add *STATIC-VECTORS* to keep track of all static vectors that have been allocated. o Update MAKE-ARRAY - to allow generation of static simple unboxed arrays (1D arrays without an array header). - Push a weak pointer to the static vector onto *STATIC-VECTORS* o Add function FREE-STATIC-VECTOR o Add function FINALIZE-STATIC-VECTORS to free static vectors when they are no longer referenced. lisp/gencgc.c: o Update scavenge to check for static vectors. If we find a static vector, mark the static vector by setting the MSB of the header word.
-
- Dec 01, 2009
-
-
rtoy authored
Carl. o Clean up implementation a bit so that we don't have :malloc all over.
-
- Nov 30, 2009
-
-
rtoy authored
-
rtoy authored
on an idea from Carl and Lynn Quam's foreign vector code that he sent many years ago. The static arrays will be GCed if nothing references them. The static arrays are currently limited to strings, 8, 16, and 32-bit integers (signed and unsigned), single and double floats, and complex single and double floats. Static arrays are not adjustable because adjusting an array can change the address if the array grows. (Ok if the array shrinks, but not implemented.) To indicate a static array, the data portion of the vector header word is set to 1. It is normally 0 for all other Lisp vectors. code/array.lisp: o Add :ALLOCATION keyword arg to MAKE-ARRAY to allow allocation of static vectors. Do the appropriate thing for static arrays. o Add MAKE-STATIC-VECTOR. This is Lynn's foreign vector stuff rewritten in Lisp instead of the original mix of Lisp and C. o Add STATIC-ARRAY-P to tell if an array is static or not. o Signal errors in MAKE-ARRAY and ADJUST-ARRAY for invalid options with static arrays. code/describe.lisp: o Indicate if the array is static. compiler/fndb.lisp: o Tell compiler about new keyword argument, :allocation, for MAKE-ARRAY.
-
- Nov 25, 2009
- Nov 21, 2009
-
-
rtoy authored
-
- Nov 20, 2009
-
-
rtoy authored
o Fix typo.
-
- Nov 10, 2009
-
-
rtoy authored
-
- Nov 04, 2009
-
-
rtoy authored
double-double floats and complex double-double floats.
-
- Nov 02, 2009
-
-
rtoy authored
amd64-dd-branch.
-
rtoy authored
-
rtoy authored
sources. No real attempt has been made to make it work, but the cross-compile does create a kernel.core, and the C code compiles (on openSuSE 10.3). The resulting kernel.core does not yet work. Use cross-x86-amd64.lisp as the cross-compile script. This is intended to be cross-compiled using the 20a release for Linux, and only supports x87. The sse2 support has not be ported yet. tools/cross-scripts/cross-x86-amd64.lisp: o Update cross-compile with some missing constants, and frob new symbols. tools/clean-target.sh: o Remove amd64f files too. code/pred.lisp: o Define predicates for double-doubles for bootstrapping to work around recursive known function problems with these predicates. code/sap.lisp: o Define int-sap with (unsigned-byte 64) type declaration. (May not be needed?) code/unix-glibc2.lisp: o Build fails defining map_failed to (int-sap -1). Just hard-wire to 0 for now so we can build. compiler/float-tran.lisp: o Add missing conditional for %complex-double-double-float. compiler/amd64/float.lisp: o Merge double-double support for amd64. Not really tested yet. compiler/amd64/parms.lisp: o Update to match x86 build. In particular, get the space address correct and update the static symbols. compiler/amd64/type-vops.lisp: o DYLAN-FUNCTION-HEADER-TYPE no longer exists. compiler/amd64/vm.lisp: o Add double-double storage classes and register definitions. lisp/Config.amd64: o Bring in line with Config.x86 and friends. lisp/Linux-os.c: o Bring amd64 code up-to-date with x86/linux code. lisp/Linux-os.h o Need to include sys/ucontext.h to get ucontext defined. (Why?) o Also define __USE_GNU so we get the register offsets in the ucontext defined. (Why?) lisp/amd64-arch.c: o Change struct sigcontext to os_context_t. o Use SC_PC instead of context->sc_pc. o Merge some changes in from x86 version, like SC_EFLAGS. May need more work. lisp/amd64-assem.s: o Use rbx instead of ebx for jmp. lisp/amd64-lispregs.h: o Define SC_REG, SC_PC, SC_SP using the new x86 style. lisp/backtrace.c: o Remove inline assembly for now until I figure out what the amd64 version should be. lisp/gencgc.c: o Conditionalize out weak hash table support for now. lisp/gencgc.h: o Set PAGE_SIZE for amd64. (Is 4096 right?) lisp/globals.h: o Export current_dynamic_space_free_pointer and current_auto_gc_trigger like for x86.
-
- Oct 29, 2009
-
-
rtoy authored
-
- Oct 28, 2009
-
-
rtoy authored
complex and floats ensure that the float is converted to a complex with the correct imaginary part. The failed tests from Maxima (rtest_gamma) now pass. (Almost. The required tolerance is a little too tight for sse2, mostly due to a slightly inaccurate exp function. But that's libc's fault, not CMUCL's fault.)
-
rtoy authored
junk in the high part of the xmm register. This causes some tests in maxima to fail. o Same fix for adding/subtracting a complex and a float. The vops need to be examined carefully to make sure we keep the invariant that the high part is zero for double-float values in XMM registers.
-
- Oct 20, 2009
-
-
rtoy authored
downloads/experimental/cross-x86-amd64.lisp.
-
- Oct 18, 2009
-
-
rtoy authored
faster reads on external-formats. This is done by adding an additional buffer to streams so we can convert the entire in-buffer into characters all at once. To build this change, you need to do a cross-compile using boot-2009-10-1-cross.lisp. Using that build, do a normal build with these sources. For a non-unicode build use boot-2009-10-01.lisp with a 20a non-unicode build. code/extfmts.lisp: o Add another slot to the extfmts for copying the state. o Modify EF-OCTETS-TO-STRING and OCTETS-TO-STRING to support the necesssary changes for fast formats. This is incompatible with the previous version because the string is not grown if needed. code/fd-stream-extfmt.lisp: o Set *enable-stream-buffer-p* to T so we have fast streams. code/fd-stream.lisp: o Add new slots to support fast strams. o In SET-ROUTINES, initialize the new slots appropriately. o Update UNREAD-CHAR to be able to back up in the string buffer to unread. o Add implementation to copy the state of an external format. code/stream.lisp: o Change %SET-FD-STREAM-EXTERNAL-FORMAT to be able to change formats even if we've already converted the buffer with a different format. We reconvert the buffer with the old format until we reach the current character. Then the remaining octets are converted using the new format and stored in the string buffer. o Add FAST-READ-CHAR-STRING-REFILL to refill the string buffer, like FAST-READ-CHAR-REFILL does for the octet in-buffer. code/struct.lisp: o Add new slots to hold the string buffer, the current index, and length. These are needed for the fast formats. code/sysmacs.lisp: o Update PREPARE-FOR-FAST-READ-CHAR, DONE-WITH-FAST-READ-CHAR, and FAST-READ-CHAR to support the string buffer. code/string.lisp: o Microoptimization of SURROGATEP to reduce the number of branchs. general-info/release-20b.txt: o Update with these changes pcl/simple-streams/external-formats/utf-16-be.lisp: pcl/simple-streams/external-formats/utf-16-le.lisp: pcl/simple-streams/external-formats/utf-16.lisp: o These formats actually have state, so update them to take a handle an initial state. These are needed if the string buffer ends with a leading surrogate and the next string buffer starts with a trailing surrogate. The conversion needs to combine the surrogates together.
-
- Oct 16, 2009
-
-
rswindells authored
Linux and FreeBSD.
-