Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
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).
Mark translatable strings; regenerate cmucl.pot and cmucl.po
Add (intl:textdomain "cmucl") to the files to set the textdomain.
Fix problem with cross-compiles needing SXHASH-INSTANCE because TRACE uses EQUAL hash-tables now to keep track of labels/flets. Basically moved the implementation of sxhash-instance from pcl/low.lisp to hash-new.lisp.
Untracing of flet/labels functions wasn't working and neither was retracing flet/labels functions. This was caused by the hash-table in *TRACE-FUNCTIONS* using an EQ test. This doesn't work well when the functions are lists like (FLET INNER OUTER). code/ntrace.lisp: o Change *TRACED-FUNCTIONS* to use an EQUAL table so lists can match. pcl/braid.lisp: o Move LISP::SXHASH-INSTANCE to low.lisp because we need it defined earlier because of the change to tracing. Can't build PCL without this change. pcl/low.lisp: o LISP::SXHASH-INSTANCE moved here.
Merge code from main branch of 2005-12-17 to ppc gencgc branch. Still doesn't work of course.
Signal a program-error instead of error when the number of arguments to a methood is wrong. Bug found by ansi-tests.
* src/pcl/low.lisp (compile-lambda): Add &key name and inline.
CLHS 7.6.5 keyword argument checking for calls to generic functions. Found by Paul Dietz, of course. This also includes some minor code cleanup and a fix for a bug caused by a typo. * src-gf/pcl/std-class.lisp (compute-effective-slot-definition-initargs): Reformatted to make it readable on a tty. * src-gf/pcl/methods.lisp (set-condition-svuc-method): Fix a typo. * src-gf/pcl/low.lisp (parse-lambda-list): Add an ignore declaration. * src-gf/pcl/init.lisp (valid-initargs): Use method-lambda-list*. * src-gf/pcl/dfun.lisp (use-caching-dfun-p): Use generic-function-methods*. (use-constant-value-dfun-p): Ditto. (use-dispatch-dfun-p): Don't use dispatching dfuns when we must check keyword arguments according to CLHS 7.6.5, because this computes emfs for sets methods that aren't applicable together in the usual sense; this screws up emf keyword argument checking, of course. (make-initial-dfun): Use gf-arg-info*. (update-dfun): Use generic-function-name*. (final-accessor-dfun-type, make-accessor-table) (compute-applicable-methods-using-types) (compute-applicable-methods-using-types): Likewise. * src-gf/pcl/combin.lisp (standard-compute-effective-method): Don't use the single-call-method optimization if we must check keyword arguments according to CLHS 7.6.5. (callable-generator-for-emf): Rewritten to add a keyword argument check to the emf. (emfs-must-check-applicable-keywords-p) (compute-applicable-keywords, check-applicable-keywords): New functions. (odd-number-of-keyword-arguments, invalid-keyword-argument): Moved here from boot.lisp. (make-effective-method-lambda): Add a check-applicable-keywords form to the emf, if appropriate. (memf-test-converter, memf-code-converter) (memf-constant-converter): Deal with check-applicable-keywords. (*applicable-methods*): New variable. (make-callable): Bind it. (make-emf-name): Use generic-function-name*. * src/pcl/braid.lisp (ensure-non-standard-class): Remove an used branch. * src/pcl/boot.lisp (*make-method-lambda-gf-name*): Removed. (expand-defmethod): Don't bind it. (make-method-lambda-internal): Don't add &key to the method function's lambda-list if the gf has &key. (bind-args): Rewritten. Don't do keyword checking as this is done in emfs now. (get-key-arg, get-key-arg1): Simplified; do less checking. (generic-function-name*, generic-function-methods*) (gf-arg-info*, method-lambda-list*): New functions. (check-method-arg-info): Use them. (gf-lambda-list-from-method): New function. (gf-lambda-list): Use it. Don't add &allow-other-keys to a gf's lambda-list if a method has &key. (get-generic-function-info): Use gf-arg-info*. (parse-specialized-lambda-list): Add an ignore declaration. (odd-number-of-keyword-arguments, invalid-keyword-argument): Moved to combin.lisp. (check-generic-function-lambda-list): Remove &more stuff because that's checked elsewhere now (and Python can even tell it is). * src-gf/pcl/ctor.lisp (install-optimized-constructor): Remove an unmatched ).
Allow (SETF SLOT-VALUE) on read-only structure slots, like LW and ACL. Problem found by Christophe Rhodes. * src/pcl/low.lisp (structure-slotd-writer-function): Create a writer function for read-only slots. * src/pcl/braid.lisp (ensure-non-standard-class): Call structure-slotd-writer-function with additional arg.
Paul Dietz' DEFGENERIC.ERROR.4. Check for repeated lambda variables. * src/pcl/boot.lisp (parse-generic-function-lambda-list) (analyze-lambda-list, parse-specialized-lambda-list): Use parse-lambda-list. (expand-defmethod): Proclaim the generic function using the unspecialized lambda list, not the method's specialized lambda list. * src/pcl/low.lisp (parse-lambda-list): New function.
* src/pcl/cache.lisp (dfun-arg-symbol, slot-vector-symbol): Use make-.variable.. * src/pcl/ctor.lisp (make-instance->constructor-call) (slot-init-forms): Ditto. * src/pcl/low.lisp (make-.variable.): New function. * src/pcl/braid.lisp (ensure-non-standard-class): Remove ext:. * src/pcl/defclass.lisp (defclass): Ditto. * src/pcl/low.lisp (set-function-name): Ditto. * src/pcl/ctor.lisp (make-instance->constructor-call): Don't do the without-package-locks around the let-form. (install-optimized-constructor): Do it here. (slot-init-forms): Don't do it here.
Add package locks. Bootfile boot8.lisp allows this to build without a cross-compile (or just select the CLOBBER-IT restart). - two extra PACKAGE-LOCK and PACKAGE-DEFINITION-LOCK slots added to the package structure. These can be modified using the EXT:PACKAGE-LOCK and EXT:PACKAGE-DEFINITION-LOCK accessors. - macro EXT:WITHOUT-PACKAGE-LOCKS that evaluates forms with all package locks disabled (this is done by binding the global variable CL::*ENABLE-PACKAGE-LOCKED-ERRORS*) - new PACKAGE-LOCKED-ERROR condition - in SETF-FDEFINITION-HOOK and in the DEFMACRO, DEFSTRUCT, DEFTYPE and DEFCLASS defining forms, check whether the definition would modify a package whose definition-lock is enabled, and signal a package-locked-error condition with restarts that allow you to unlock the package or ignore the lock - in EXPORT, UNEXPORT etc check whether the target package is guarded by a package-lock, and signal an error - disable package locks when loading a subsystem - disable package locks in certain areas of PCL and in the MAKE-LOAD-FORM support of the compiler, where code is generated inside system packages at runtime
Argh. Remove the debug output.
Add a deftransform for extracting slot vectors. This can be done because redefinitions from funcallable instances to instances aren't required to work, and cannot be made to work. * src/pcl/low.lisp (fsc-instance-wrapper, fsc-instance-slots) (fsc-instance-hash): Moved here from fin.lisp. (pcl::pcl-instance-p) <deftransform>: Use info-standard-class-p and info-funcallable-standard-class-p. (pcl::slot-vector-or-nil) <deftransform>: New. (slot-vector-or-nil): New function. * src/pcl/info.lisp (info-std-class-p): Removed. (info-standard-class-p, info-funcallable-standard-class-p): New functions. * src/pcl/fin.lisp (fsc-instance-wrapper, fsc-instance-slots) (fsc-instance-hash): Moved to low.lisp. * src/pcl/vector.lisp (pv-binding1): Use slot-vector-or-nil instead of get-slots-or-nil.
Code cleanup. Use EXTENSIONS package to reduce clutter. * src/pcl/defsys.lisp ("PCL", "WALKER"): Use ext. * src/pcl/pkg.lisp ("PCL", "WALKER"): Use ext. * src/pcl/*.lisp: Remove ext: prefixes. * src/pcl/low.lisp (symbolicate*): Renamed from symbolicate. * src/pcl/std-class.lisp (shared-initialize): * src/pcl/defs.lisp (get-built-in-class-symbol) (get-built-in-wrapper-symbol): * src/pcl/braid.lisp (initial-classes-and-wrappers) (bootstrap-meta-braid): Use symbolicate*. * src/pcl/macros.lisp (dolist-carefully): Removed. (true, false, zero): Moved to defclass.lisp. (printing-random-thing-internal): Removed. (printing-random-thing): Removed. (rassq): Removed. (*keyword-package*): Removed. (make-keyword): Removed; import from cl. (memq, delq, assq): Macros removed, import from ext. (get-declaration): Moved to boot.lisp, where it's used. * src/pcl/boot.lisp (get-declaration): Moved here from macros.lisp. * src/pcl/methods.lisp (named-object-print-function, print-object): * src/pcl/low.lisp (print-std-instance): * src/pcl/dfun.lisp (print-dfun-info): * src/pcl/cache.lisp (print-cache, print-wrapper): * src/pcl/boot.lisp (make-early-gf): Use print-unreadable-object instead of printing-random-thing. * src/pcl/defclass.lisp (true, false, zero): Moved here from macros.lisp. * src/pcl/methods.lisp (legal-qualifiers-p) (legal-specializers-p): Use dolist.
* pcl/boot.lisp (parse-defmethod): Rewritten for clarity. Signal an error for most cases of null qualifiers. Improve DESCRIBE on generic functions. * pcl/env.lisp (method-specialized-lambda-list): New function. (describe-object): Use it, and use generic-function-lambda-list. * pcl/methods.lisp (generic-function-pretty-arglist) (method-pretty-arglist): Remove. * pcl/generic-functions.lisp (generic-function-pretty-arglist) (method-pretty-arglist): Remove. AMOP compliance fixes: Reintroduce class METAOBJECT, make GENERIC-FUNCTION a subclass of STANDARD-OBJECT, remove STD-OBJECT. This basically reverts a change of dtc from 1998. * code/describe.lisp (describe-instance): Check for standard-object, not pcl::std-object. * pcl/pkg.lisp ("PCL", "CLOS-MOP"): Export more stuff. * pcl/generic-functions.lisp: Remove some of the useless comments. * pcl/slots.lisp (slot-value-using-class, setf slot-value-using-class) (slot-boundp-using-class, slot-makunbound-using-class): Specialize on standard-object. * pcl/slots-boot.lisp (get-optimized-std-accessor-method-function): Remove an std-class-p case. * pcl/methods.lisp (update-std-or-str-methods): Use standard-object instead of std-object. (mec-all-classes-internal): Use *the-class-standard-object* instead of *the-class-std-object*. (class-test): Don't consider *the-class-std-object*. * pcl/low.lisp (pcl-instance-p) [deftransform]: Use standard-object instead of std-object. * pcl/init.lisp (update-instance-for-different-class) (update-instance-for-redefined-class): Specialize on standard-object instead of std-object. * pcl/dfun.lisp (accessor-values-internal, make-accessor-table) (make-accessor-table): Use *the-class-standard-object* instead of *the-class-std-object*. * pcl/defs.lisp (toplevel): Don't declare *the-class-std-object* special. (standard-object): Single superclass slot-object. (metaobject): New class. (std-object): Class removed. (specializer): Superclass metaobject. (definition-source-mixin, plist-mixin): Superclass standard-object, no metaclass. (documentation-mixin, dependent-update-mixin): No metaclass. (slot-definition, method, generic-function, method-combination): Superclass metaobject. * pcl/cache.lisp (raise-metatype): Don't consider std-class. * pcl/braid.lisp (bootstrap-meta-braid): Don't braid std-class. (bootstrap-initialize-class): Don't consider std-class.
* bootfiles/18e/boot.lisp: Bootstrap files for the lisp:class = pcl:class part. To get it booted from 18e, cross-compile using boot1.lisp as bootstrap.lisp in pmai's build scripts, then do a normal compile with boot2.lisp as bootstrap.lisp with the resulting Lisp. * code/byte-interp.lisp, code/defstruct.lisp, code/describe.lisp: * code/error.lisp, code/exports.lisp, code/hash-new.lisp: * code/hash.lisp, code/macros.lisp, code/misc.lisp: * code/package.lisp, code/pred.lisp, code/sharpm.lisp, code/type.lisp: * compiler/dump.lisp, compiler/fndb.lisp, compiler/globaldb.lisp: * compiler/proclaim.lisp, compiler/typetran.lisp, compiler/xref.lisp: * compiler/generic/primtype.lisp, compiler/generic/vm-type.lisp: Changes for to use kernel::class etc. * code/class.lisp (toplevel): Shadow class, built-in-class etc. (class): Give it conc-name %class-. (toplevel) [#+bootstrap-lisp-class=pcl-class]: Define old accessors. (everywhere): Use new class accessors. * compiler/generic/vm-fndb.lisp (%make-instance): Change from unsafe to flushable and movable. * code/ntrace.lisp (expand-trace, untrace): Changes for method tracing. * code/profile.lisp (profile, profile-all, unprofile): Method profiling. * pcl/*.text, pcl/bench.lisp, pcl/extensions.lisp: * pcl/fast-init.lisp, pcl/precom1.lisp, pcl/precom4.lisp: * pcl/structure-class.lisp, pcl/user-instances.lisp: Removed. * tools/pclcom.lisp: Changes for my PCL and lisp:class = pcl::class.
* std-class.lisp (inform-type-system-about-class) (shared-initialize :after): New methods for condition-class. * macros.lisp (find-class-from-cell): Test both structure-type-p and condition-type-p. Use ensure-non-standard-class. * low.lisp (structure-type-p): Return false for conditions. (condition-type-p): New function. * env.lisp (coerce-to-pcl-class, make-instance, change-class) (frob): Remove methods specializing on kernel::class. * defs.lisp (specializer-from-type): Use ensure-non-standard-class. (condition-class): New metaclass. * cmucl-documentation.lisp (setf documentation): Test both structure-type-p and condition-type-p. * cache.lisp (wrapper-class*): Call ensure-non-standard-class. (raise-metatype): Handle condition-class. * braid.lisp (find-structure-class): Variable removed. (bootstrap-initialize-class): Add supplied-p parameter for the prototype because class null has a nil prototype. (ensure-non-standard-class): Renamed from find-structure-class. Handle conditions.
* low.lisp (*canonical-class-names*): Remove. (*inhibit-class-name-canonicalization*, canonical-class-name): Remove. * defclass.lisp (expand-defclass): Don't canonicalize class names. * boot.lisp (parse-specialized-lambda-list): Don't use canonical-class-name.
* pcl/*.lisp: Changes for lisp:class = pcl:class.
* low.lisp (symbolicate): Use ext:symbolicate. * braid.lisp (initial-classes-and-wrappers): Use symbols instead of strings as arguments to symbolicate. (bootstrap-meta-braid): Likewise. * defs.lisp (get-built-in-class-symbol) (get-built-in-wrapper-symbol): Likewise.
(*canonical-class-names*): New variable. (canonical-class-name): New function. (*inhibit-class-name-canonicalization*): New variable.
*** empty log message ***
Entomotomy Bug: sxhash-on-pcl-instances-returns-42 Corrected previous check-in to not error out on funcallable-instances.
Entomotomy Bug: sxhash-on-pcl-instances-returns-42 Committed a slightly reworked patch by Gerd Moellmann that introduces new hash-code slots into (funcallable-)standard-instances, which get initialized to persistent, sequential numbers upon instance creation, thus providing better sxhash/equal hashing.
Committed patch by Gerd Moellmann to rename the constant *slot-unbound* to the more fitting name +slot-unbound+.
Patch by Gerd Moellmann to remove the unused make-specializable function, together with related implementation-dependent code. This change isn't really a loss, since make-specializable could only do its work completely automatically where CMUCL kept the argument list of the function around.
Committed patches by Gerd Moellmann to eliminate PCL's without-interrupts in favour of either system:without-interrupts (for non-MP versions), and a lock-based approach for MP versions. Note that the latter is a bit experimental, see the comments in the code for details.
Removed the shadowed version of dotimes from PCL, replacing it with normal cl:dotimes, introducing explicit fixnum declarations where they weren't obviously unnecessary. Based on a patch by Gerd Moellmann.
Mega commit to bring RELENG_18 branch in sync with HEAD in preparation for release tagging 18d.
This revision turns on INFORM-TYPE-SYSTEM-ABOUT-STD-CLASS which represses compiler warnings about undefined class when compiling defmethods in the same file as the defclass forms. It does this by calling (lisp:make-class :name class-name) which creates a minimal entry such that lisp:find-class will return non-nil. The class entry is filled out at load time. A consequence of this is that until load time, any attempt to treat that minimal class as valid will fail, probably because lisp:class-layout => NIL. This doesn't seem a problem in current practice.
Reinstate an eval-when around a defvar that I had stupidly removed the last time around.
From Pierre Mai: o All the stuff from cmu-low.lisp has been merged into low.lisp. o Therefore cmu-low.lisp has been removed completely. o All the stuff in low.lisp which either wasn't used in current PCL or was unnecessary in CMU CL, or which was implemented as no-ops for CMU CL has been removed. o Calls in other files to functions which were dropped have been removed. o Source order reorganised a bit and added several comments and doc-strings. o Made `*optimize-speed*' consistent for small and non-small cores, and fixed ordering problem. o Added `*compile-lambda-silent-p*' which when true (the default) will cause compile-lambda to be silent when compiling PCL-generated code.
This set of revisions brings the RELENG_18 branch up to HEAD in preparation for an 18c release.
Remove all #+ and #- conditionals from the source code. What is left is essentially Common Lisp except for explicit references to things in CMUCL specific packages.
Cleanup of the PCL directory. Removed files and conditional code for long dead lisp implementations. Some parts of the code is now a bit easier to read and (hopefully) understand.
Add CMUCL style file-comments; from Peter Van Eynde.
This (huge) revision brings the RELENG_18 branch up to the current HEAD. Note code/unix-glib2.lisp not yet included -- not sure it is ready to go.
Define *slot-unbound* to be a constant, and adjust some of the slot unbound tests to improve the performance of the compiled code.
This commit brings the PCL repository up to release 17f and also includes the changes in the X86 1.03.7 kit. Although the 1.03.7 changes were already in the repository, the other files appear to be of early vintage and do not work with a 17f system. Hopefully all is correctly synched now.
Conditionalized out default defstruct for std-instance, now in cmu-low
September-16-92-PCL-e has been incorporated into the CMUCL sources thanks to Rick Harris.
This is September 92 PCL.
This is July 92 PCL
This is March-92-PCL-2a.
Merged with latest PCL version.
*** empty log message ***
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|