Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
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.
Sync to utf16 branch, tag unicode-utf16-sync-label-2009-03-16.
Sync to CVS HEAD, tag label-2009-03-16. But don't sync Config.FreeBSD_gencgc, Config.x86_freebsd, FreeBSD-os.c, and FreeBSD-os.h. Let Alex sync those later. The result seems to work as expected on Solaris and x86/linux. Darwin (ppc or x86) untested.
Move defvar of *ALLOW-FUNNY-SLOT-NAMES* from std-class.lisp to slots.lisp to get rid of an undefined variable warning in slots.lisp.
Make compiler and interpreter handle slot-value the same. See thread http://article.gmane.org/gmane.lisp.cmucl.devel/10471. These changes make the compiler and interpreter behave the same, and, as a side-effect, makes Nicolas's code work as he wants. pcl/slots.lisp: o Add LEGAL-SLOT-NAME-P-INTERNAL that returns two values. If the slot-name is legal, return T. If illegal, return NIL and a string indicating why. o Use this new function in the compiler macros for SLOT-VALUE, (SETF SLOT-VALUE) and SLOT-BOUNDP so that we use the fast ACCESSOR-* versions only when we know the slot-name is legal. Otherwise, the compiler macros give up. pcl/methods.lisp: o Change the method LEGAL-SLOT-NAME-P to use LEGAL-SLOT-NAME-P-INTERNAL. o Update the call to LEGAL-SLOT-NAME-P in SHARED-INITIALIZE since LEGAL-SLOT-NAME-P returns 2 values now.
Remove the slot named SLOT from the UNBOUND-SLOT condition. Also removes the :slot initarg. These are all subsumed by the :name initarg and slot in a cell-error condition. This makes UNBOUND-SLOT no longer backward compatible. I hope that's ok.
* src/pcl/slots.lisp (slot-value, set-slot-value, slot-boundp) (slot-makunbound, slot-exists-p): Declaim ftypes.
SLOT-VALUE, (SETF SLOT-VALUE), SLOT-BOUNDP, SLOT-MAKUNBOUND not returning values specified by the standard when SLOT-MISSING/SLOT-UNBOUND are called and return. Found by Paul Dietz. * src/pcl/std-class.lisp (compute-effective-slot-definition): Return slot-unbound's primary value. * src/pcl/slots.lisp (slot-value): Return slot-missing's primary value. (set-slot-value): Always return the new value. (slot-boundp): Return a boolean equivalent of slot-missing's primary value. (slot-makunbound): Always return the instance. (slot-value-using-class): Return slot-unbound's primary value. (slot-unbound-internal): Likewise. * src/pcl/slots-boot.lisp (ensure-accessor): Return slot-missing's primary value for slot-value, a boolean equivalent of its primary value for slot-boundp, and always return the value for setf. (accessor-set-slot-value): Always return the new value. (make-optimized-std-reader-method-function): Return slot-unbound's primary value. (make-optimized-std-slot-value-using-class-method-function) (make-internal-reader-method-function): Likewise. * src/pcl/method-slot-access-optimization.lisp (inline-slot-unbound): Return slot-unbound's primary value.
SLOT-UNBOUND. tests from Paul Dietz. * src/pcl/slots.lisp (slot-unbound): Initialize :name of cell-error.
* src/pcl/ctor.lisp (constructor-function-form): Don't handle condition classes. * src/pcl/braid.lisp (ensure-non-standard-class): Make an initfunction for condition slots if there is none. * src/pcl/slots.lisp (allocate-instance) <condition-class>: New method.
More SLOT-VALUE etc. on conditions. * src/pcl/slots.lisp (slot-value-using-class) (setf slot-boundp-using-class) <condition-class>: New methods. * src/pcl/std-class.lisp (initialize-internal-slot-functions): Use slot-name->class-table. (shared-initialize): Call update-pv-table-cache-info. (compute-slots) <around condition-class>: New method. * src/pcl/slots-boot.lisp (ensure-accessor): Use slot-name->class-table. (get-optimized-std-accessor-method-function) (get-optimized-std-slot-value-using-class-method-function): Handle condition classes. * src/pcl/methods.lisp (*condition-slot-value-using-class-method*) (*condition-setf-slot-value-using-class-method*) (*condition-slot-boundp-using-class-method*): New vars. (condition-svuc-method, set-condition-svuc-method): New functions. (update-std-or-str-methods): Handle conditions. * src/pcl/generic-functions.lisp (condition-class-p): New gf. * src/pcl/dfun.lisp (make-accessor-table): Use slot-name->class-table. * src/pcl/defs.lisp (*the-condition-class*): New var. (slot-name->class-table): New function. (condition): New class. (*early-class-predicates*): Add condition-class-p. * src/pcl/braid.lisp (bootstrap-meta-braid) (bootstrap-initialize-class): Add condition-class stuff. (bootstrap-make-slot-definitions): Simplified. (bootstrap-make-slot-definition): Use slot-name->class-table.
Make condition slots readable with SLOT-VALUE. * src/pcl/std-class.lisp (compute-effective-slot-definition) <condition-class>: New method. * src/pcl/slots.lisp (slot-makunbound-using-class) <condition-class>: New method.
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.
Detect odd-length keyword argument lists, invalid keyword arguments is methods. Change lambda-lists of some gfs and methods to include &key, or &key &allow-other-keys. Bugs found by Paul Dietz in his test suite. * src/pcl/boot.lisp (bind-args): Handle the case that &key is in the lambda-list, but no keyword args. (get-key-arg1): Additional argument first-time; check for invalid keyword arguments, and add number of args when true. (get-key-arg): Call get-key-arg1. (odd-number-of-keyword-arguments, invalid-keyword-argument): New functions. * src/pcl/init.lisp (make-instance) <symbol, class>: Add &key. (initialize-instance) <slot-object>: Likewise. (reinitialize-instance) <slot-object>: Likewise. (update-instance-for-different-class): Likewise. (update-instance-for-redefined-class): Likewise. (shared-initialize) <slot-object>: Likewise. * src/pcl/std-class.lisp (change-class): Likewise. * src/pcl/slots.lisp (allocate-instance) <standard-class>: (allocate-instance) <structure-class>: Likewise. * src/pcl/methods.lisp (reinitialize-instance) <standard-method>: Likewise. * src/pcl/generic-functions.lisp (change-class) (allocate-instance, update-instance-for-different-class) (update-instance-for-redefined-class): Add &key &allow-other-keys. * src/pcl/fsc.lisp (allocate-instance) <funcallable-standard-class>: Add &key. * src/pcl/std-class.lisp (make-defstruct-allocation-function): Fix a paren bug.
Test cases CLASS-0203.. SLOT-MAKUNBOUND not returning instance. * src/pcl/slots.lisp (slot-makunbound-using-class) <std-class standard-object standard-effective-slot-definition>: Return the object as specified by AMOP.
* 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.
*** empty log message ***
Entomotomy Bug: pcl-code-too-obfuscated This applies two patches by Gerd Moellmann to clean up needlessly convoluted code in PCL. One removes a macrolet workaround for implementations with broken labels, the other makes use of &whole in compiler-macros to punt on transforming certain calls, instead of playing tricks with setf of fdefinition.
Entomotomy Bug: redefined-classes-and-subtypep This patchset by Gerd Moellmann reenables the previous fix to this bug, without retriggering the obsolete-instance-trap-on-redefined-class bug. Additionally, this cleans up the layout-invalid vs. wrapper-state logic making the code much easier to follow.
Committed patch by Gerd Moellmann to rename the constant *slot-unbound* to the more fitting name +slot-unbound+.
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.
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.
In SET-SLOT-VALUE, pass the new-value argument to SLOT-MISSING so a user method can actually do something useful. From Tom Russ, firstname.lastname@example.org.
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.
Rework the PCL class hierarchy to better match the disjoint instance and funcallable-instance types within CMUCL. Add the new class funcallable-standard-object, and the new class std-object as a superclass of both standard-object and funcallable-standard-object. Generic-functions are now funcallable-standard-objects implemented as FINs and disjoint from standard-objects which are implemented as instances in CMUCL, fixing some problems in the type system. This change moves the PCL implementation away from the MOP specification which requires that generic-functions be standard-objects. However ANSI CL does not require generic functions to be standard-objects and the MOP author Gregor Kiczales suggests it is appropriate for generic functions to be disjoint from standard-objects.
Add define-condition UNBOUND-SLOT. Default method for slot-unbound now signals that condition as required by ANSI spec.
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|