Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
Change uses of _"foo" to (intl:gettext "foo"). This is because slime may get confused with source locations if the reader macros are installed.
Remove _N"" reader macro from docstrings when possible.
Merge intl-branch 2010-03-18 to HEAD. To build, you need to use boot-2010-02-1 as the bootstrap file. You should probably also use the new -P option for build.sh to generate and update the po files while building.
Restart internalization work. This new branch starts with code from the intl-branch on date 2010-02-12 18:00:00+0500. This version works and LANG=en@piglatin bin/lisp works (once the piglatin translation is added).
o Make COMPILER-WARNING do the string lookup instead of at each call site. o Change all calls to COMPILER-WARNING to use _N" instead of _".
o Make COMPILER-NOTE do the string lookup instead of at each call site. o Change all calls to COMPILER-NOTE to use _N" instead of _".
Mark translatable strings; regenerate cmucl.pot and ko/cmucl.po accordingly.
Add (intl:textdomain "cmucl") to the files to set the textdomain.
boot-2009-07.lisp: o Bootstrap file needed to compile this change (because the current shrink-vector derive-type optimizer didn't handle union types). compiler/fndb.lisp: o Make the compiler warn if the result of lisp::shrink-vector is not used. This is a problem because the compiler doesn't know that shrink-vector destructively modifies the length of a vector. As a partial solution, warn the user if the result of shrink-vector is not. code/hash-new.lisp: code/seq.lisp: o Make sure the result of shrink-vector is used, to get rid of a new compiler warning. code/unidata.lisp: o Modify %unicode-full-case so that it doesn't use shrink-vector anymore. compiler/seqtran.lisp: o Fix shrink-vector derive-type optimizer to handle union types. tools/build-unidata.lisp: o Fix typo that someone got in. o Make sure the result of shrink-vector is used, to get rid of a new compiler warning.
Merge Unicode work to trunk. From label unicode-utf16-extfmt-2009-06-11.
Add derive-type optimizer for lisp::shrink-vector so the compiler knows the result type of lisp::shrink-vector. (Without this, the return type is always VECTOR, instead of the same type as the input vector.)
Merge from unicode-utf16 branch, label unicode-utf16-char-support-2009-03-25 to get character support.
Compare strings using code-point order, since we don't have any kind of collation support.
Merge code from main branch of 2005-12-17 to ppc gencgc branch. Still doesn't work of course.
Merge snapshot-2005-05 to this branch.
The deftransforms for STRING<*, STRING<=*, STRING>*, and STRING>=* were wrong. Replace them with, essentially, the version in STRING<>=*-BODY in string.lisp. (Should merge these into one macro!) This fixes the cmucl-type-prop 32-34 tests.
o Remove the :derive-type option from the defknowns for concatenate and make-sequence o Add derive-type optimizers for concatenate and make-sequence that only derives the type when the output sequence specifier is a subtype of sequence. (Only done for constant specifiers.) These changes fix the bug where the compiler deletes all code, including the return for (defun foo () (concatenate 'fixnum '(1 2 3))). This is caused by confusion in the compiler where derive-node-type conflicts with the declared return type and causes all trailing blocks to be deleted.
Add a derive-type optimizer for MAP.
Dynamic-extent support for x86. Use boot16.lisp for bootstrapping. * src/bootfiles/18e/boot16.lisp: New file. * src/docs/cmu-user/extensions.tex (Dynamic-Extent Declarations): New section. * src/compiler/x86/macros.lisp (dynamic-extent-allocation): Rename from stack-allocation, save an instruction. (allocation): Don't call trust-dynamic-extent-declaration-p. * src/compiler/x86/alloc.lisp (%dynamic-extent-start) (%dynamic-extent-end): New vops. (list-or-list*): Add constant arg dynamic-extent. (fixed-alloc): Likewise. * src/compiler/generic/vm-ir2tran.lisp (do-fixed-alloc): Call fixed-alloc with dynamic-extent arg. * src/compiler/hppa/alloc.lisp (%dynamic-extent-start) (%dynamic-extent-end): Add dummy vops. * src/compiler/mips/alloc.lisp: * src/compiler/ppc/alloc.lisp: * src/compiler/alpha/alloc.lisp: * src/compiler/rt/alloc.lisp: Likewise. * src/compiler/seqtran.lisp (mapper-transform): Add dynamic-extent declarations. * src/compiler/node.lisp (continuation): Add slot dynamic-extent. (cleanup): Add :dynamic-extent to type of slot kind. * src/compiler/knownfun.lisp (dynamic-extent-closure-safe): New attribute. * src/compiler/ir2tran.lisp (ir2-stack-allocate): New function. (ir2-convert-closure): Handle dynamic-extent case differently. (%dynamic-extent, %dynamic-extent-start, %dynamic-extent-end) <ir2-convert>: New optimizers. (list, list*): Handle dynamic-extent. * src/compiler/ir1tran.lisp (*trust-dynamic-extent-declarations*) (*dynamic-extent-trace*): New variables. (trust-dynamic-extent-declaration-p): New function. (process-dynamic-extent-declaration) (dynamic-extent-allocation-p, dynamic-extent-closure-args) (gen-%dynamic-extent, with-dynamic-extent): New functions/macros. (ir1-convert-combination): Handle dynamic-extent closure args. (ir1-convert-combination-args): Add arg dynamic-extent-args. Set continuation-dynamic-extent for these args. (process-dynamic-extent-declaration): Rewritten. (ir1-convert-dynamic-extent-bindings): New function. (ir1-convert-special-bindings): Call it. (ir1-convert-lambda-body): Handle dynamic-extent rest lists. (let): Handle dynamic-extent vars. (let*): Call ir1-convert-dynamic-extent-bindings. * src/compiler/globaldb.lisp (*trust-dynamic-extent-declarations*) (trust-dynamic-extent-declaration-p): Remove. * src/compiler/fndb.lisp: Add dynamic-extent-closure-safe attribute to assorted functions. * src/compiler/envanal.lisp (environment-analyze): Call find-dynamic-extent-safe-closures. (emit-cleanups): Handle :dynamic-extent cleanups. (*suppress-dynamic-extent-closure-safe*): New variable. (mark-dynamic-extent-safe-closures) (find-dynamic-extent-safe-closures): New functions. * src/compiler/byte-comp.lisp (compute-produces-and-consumes): Treat :dynamic-extent like :tagbody cleanups. * src/code/exports.lisp ("C"): Export ir2-stack-allocate, %dynamic-extent, %dynamic-extent-start, %dynamic-extent-end. * src/code/byte-interp.lisp (%dynamic-extent): (%dynamic-extent-start, %dynamic-extent-end): New functions. (toplevel): Enable block compilation.
* src/compiler/seqtran.lisp (mapper-transform): Add dynamic-extent declarations for better testing. * src/compiler/ir2tran.lisp (%dynamic-extent): (%dynamic-extent-start, %dynamic-extent-end): Optimizers rewritten/added. * src/compiler/ir1tran.lisp (process-dynamic-extent-declaration): Add check for not byte-compiling. (dynamic-extent-allocation): Removed. (dynamic-extent-allocation-p): Added. (dynamic-extent-closure-args): Return indices only. (gen-%dynamic-extent): Rewritten. (with-dynamic-extent): Remove last arg. (ir1-convert-dynamic-extent-bindings): Use dynamic-extent-allocation-p. (let): Likewise. * src/compiler/fndb.lisp (%dynamic-extent) (%dynamic-extent-start): Change/add defknowns. * src/compiler/eval-comp.lisp (%dynamic-extent) (%dynamic-extent-start, %dynamic-extent-end): Change/add. * src/compiler/envanal.lisp (compute-closure-lengths): Remove function. (emit-cleanups): Handle %dynamic-extent differently. * src/compiler/byte-comp.lisp (%dynamic-extent-start): Add. (%dynamic-extent, %dynamic-extent-end): Change according to new arg list. * src/code/exports.lisp ("C"): Export allocation-size, %dynamic-extent, %dynamic-extent-start, %dynamic-extent-end. * src/compiler/x86/macros.lisp (dynamic-extent-allocation): Simplify again. * src/compiler/x86/alloc.lisp (%dynamic-extent-start) (%dynamic-extent-end): New vops. (pop-stack): Remove vop. * src/compiler/ir1tran.lisp (process-dynamic-extent-declaration): Don't if (byte-compiling). (dynamic-extent-closure-args): Use global-var-p.
Borrow SBCL's new deftransform for map-into to speed up map-into.
Fix ELT.1B, ELT.14 from ansi-test/compiled. * src/compiler/seqtran.lisp (%setelt, elt) <deftransform, list>: Use only in unsafe code, because elt is supposed to signal an error if the index is out of bounds.
The deftransform for find should return the item we found, not the item we were looking for (because of :test-not).
This set of revisions brings the RELENG_18 branch up to HEAD in preparation for an 18c release.
Implement a specializing CONS class as per issue CONS-TYPE-SPECIFIER:ADD. The new cons-type which maintains the specialised CAR and CDR types: o Typep recurses, checking the respective car and cdr specialisations; two cons-types are type= if both their car and cdr types are type=. o Subtypep recurses, applying subtypep to the respective car and cdr types. If both sub-tests return true then the cons test returns true with a win only when both sub-tests win. If either sub-test returns false then the cons tests returns false with a win if either of sub-tests win. o Type-intersection is applied to the respective car and cdr types, and wins if both win. o The type-union of two cons-types handles cases for which either the respective car or cdr types are type=, in which case type-union is applied to the other type. This avoid returning an overly general result. o Ctype-of a cons object simply returns (cons * *); and does not attempt to recurse. o The compiler recursively checks the specialised type of the cons-type, which allows it to also use this type information to derive the result type car and cdr. Inline code is currently only generated when natively compiling.
Fix the mapper-transform to only evaluate the function argument once. Noted by Andy Freeman or Charlene Wacenske.
Fix headed boilerplate.
Fix compiler warnings.
Transform member, delete and assoc to memq, assq and delq when possible. Inline expand vector & list POSITION, vector FILL and list DELETE-IF.
Un-:both'ed the transformation to string<>=*, since increasing the number of args probably isn't a win in byte code.
Update transforms to inhibit ones which pessimize byte code.
Changed loop destructuring to destructuring-bind.
Convert SIMPLE-STRING SEARCH to %SP-STRING-SEARCH.
Changed MEMBER transform to always return the correct tail of the list, instead of trying to "optimize" the case where the destination is an IF. This was gratuitous, and confused type inference.
Quoted arg/result types in :EVAL-NAME DEFTRANSFORMs.
Changed to use :EVAL-NAME and closures instead of macros for the string transforms (reducing code bloat.) Removed some commented-out stuff.
New file header with RCS stuff.
Changed the ELT and %SETELT transforms to only change to AREF when we know we have a non-complex vector. This ensures that ELT bound checking will respect the fill pointer.
Moved MIPS branch onto trunk; no merge necessary.
Merged trunk changes into MIPS branch.
Fixed the MEMBER transform to be correct, and to generate somewhat more straightfoward code (from the compiler's point of view.) Previously we returned T or NIL, rather than the correct tail of the list.
Changed %primitive find-character to %sp-find-character.
Changed a string-char to character.
Moved simple-string sequence transforms into vm-type.lisp because they are vm specific.
Changed calls to %primitive byte-blt to call bit-bash-copy.
Fixed some typos. In POSITION, changed use of STRING-CHAR-P to TYPEP.
The the macrolet for defining string/=*, string=* transforms, comma in the name instead of always defining a transform for string/=*.
Fixed yet more crap in CONCATENATE/SIMPLE-STRING.
Fixed yet more crud in CONCATENATE/SIMPLE-STRING.
Cleaned up some crud in the CONCATENATE/SIMPLE-STRING transform.
Added SIMPLE-STRING transforms for SUBSEQ, COPY-SEQ, REPLACE, CONCATENTATE, FIND and POSITION.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|