- 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 21, 2009
-
-
rtoy authored
-
- Nov 02, 2009
-
-
rtoy authored
amd64-dd-branch.
-
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 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 15, 2009
- Oct 14, 2009
-
-
agoncharov authored
As suggested by Madhu <madhu@cs.unm.edu>, removed the ext:getenv function that I had introduced a few days ago. Instead, four foreign function definitions are introduced, following Madhu's proposal. The four functions: unix-getenv unix-setenv unix-putenv unix-unsetenv are defined both in unix.lisp and unix-glibc2.lisp.
-
- Oct 11, 2009
-
-
agoncharov authored
-
- Oct 10, 2009
-
-
agoncharov authored
-
agoncharov authored
-
- Oct 02, 2009
- Sep 19, 2009
-
-
rtoy authored
-
- Sep 17, 2009
-
-
rtoy authored
-
- Sep 15, 2009
-
-
rtoy authored
-
rtoy authored
STRING-CAPITALIZE. Not sure about the appropriate interface, though. code/string.lisp: o Add Unicode word break algorithm. Based on Scheme code by William Clinger. Used with permission. o Update STRING-CAPITALIZE to take another keyword arg to indicate if we should use the Unicode word break algorithm. Default is not to use the Unicode algorithm. compiler/fndb.lisp: o Update defknown for string-capitalize. i18n/tests/WordBreakTest.txt: o New test file for the word break algorithm i18n/tests/word-break-test.lisp: o New file to run the word break test.
-
rtoy authored
how to get access to variables with the same name.
-
- Sep 11, 2009
-
-
rtoy authored
o Add support for word break properties. o Some cleanup of the code including moving the common code in write-ntrie* to write-ntrie. code/unidata.lisp: o Add support for word break properties. o UNICODE-WORD-BREAK-CODE and UNICODE-WORD-BREAK return the property code and the property keyword for a codepoint, respectively. i18n/WordBreakProperty.txt: o New file for the word break properties.
-
- Sep 09, 2009
-
-
rtoy authored
-
- Aug 26, 2009
-
-
rtoy authored
closing an output stream. This causes things like (with-open-file (s "foo" :direction :output :external-format :utf-8) (write-char #\u+d800 s)) to output the replacement character instead of creating an empty file. code/extfmts.lisp: o Add new slot to efx structure to hold the function to flush the state in an external format. o Add accessor for the flush-state slot. o Update DEFINE-EXTERNAL-FORMAT to allow specifying the flush function. o Add macro to call the flush-state function. o Added +EF-FLUSH+ o Use vm::defenum to name the constants instead of the hand-written values. o Export +REPLACEMENT-CHARACTER-CODE+ o Document the slots in an efx stucture. code/fd-stream.lisp: o Add ef-flush def-ef-macro to flush the state of an external format when closing an output file. If ef-flush-state is NIL, we just call EF-COUT to send out the replacement character. Otherwise, the flush-state function is called to handle it. o When closing an output character stream, call ef-flush to flush any state before flushing the buffers of the stream. o Document the unicode slots in an fd-stream. code/exports.lisp: o Export +REPLACEMENT-CHARACTER-CODE+
-
rtoy authored
-
- Aug 19, 2009
-
-
rtoy authored
-
- Aug 18, 2009
-
-
rtoy authored
CMUCL source tree, but were never delivered in a distribution. code/module.lisp: o Define module "cmu-contribs" that loads defmodule definitions for the contrib code. code/save.lisp: o Add "library:contrib/" to the modules search-list so we can find the installed contribs. tools/make-extra-dist.sh: o Install all contrib files contrib/contrib.lisp: o New file that defines modules for the contrib packages.
-
- Aug 17, 2009
-
-
rtoy authored
SURROGATES-TO-CODEPOINT.
-
- Aug 14, 2009
-
-
rtoy authored
-
- Aug 13, 2009
-
-
rtoy authored
(merge-pathnames (make-pathname :directory '(:relative :back :back :back :back :back :back)) (pathname "./tmp/junk/core")) First, MERGE-DIRECTORIES would back up too far and remove :ABSOLUTE. Don't do that. Second, after fixing MERGE-DIRECTORIES, the resulting pathname directory is '(:ABSOLUTE :BACK :BACK ...) which is illegal. Call MAKE-PATHNAME instead of %MAKE-PATHNAME-OBJECT so we check for illegal pathnames.
-
rtoy authored
surrogate or a lone trailing surrogate) get replaced with the replacement character.
-
- Aug 12, 2009
-
-
rtoy authored
character (either high or low).
-
- Aug 11, 2009
-
-
rtoy authored
code/exports.lisp: o Import STREAM:SET-SYSTEM-EXTERNAL-FORMAT into the EXT package. o Define and export %sin-quick, %cos-quick, and %tan-quick only for x87 builds. compiler/float-tran.lisp: o Only apply defknowns and deftransforms for %sin-quick, %cos-quick, and %tan-quick for x87 builds.
-
rtoy authored
o Put back some unicode/unicode-bootstrap conditionals.
-
- Aug 10, 2009