- Dec 22, 2006
-
-
rtoy authored
another issue with uninitialized &aux variables. (defstruct (foobar (:constructor make-foobar (xxx &key (aaa nil) (bbb nil) &aux (foobar-data xxx) (aaa (or aaa (getf foobar-data :aaa) 1)) (bbb (or bbb (getf foobar-data :bbb) (1+ aaa)))))) (aaa (required-argument) :type fixnum) (bbb (required-argument) :type fixnum)) (make-foobar nil) -> #<foobar :aaa 1 :bbb 2> But CMUCL gives type errors. To fix Albert's issue, modify CREATE-BOA-CONSTRUCTOR to keep track of the &aux vars separately from the other arglist vars. Adjust CREATE-VECTOR-CONSTRUCTOR, CREATE-LIST-CONSTRUCTOR, CREATE-STRUCTURE-CONSTRUCTOR, and CREATE-FIN-CONSTRUCTOR to take an extra arg for the &aux vars. For CREATE-STRUCTURE-CONSTRUCTOR, we only put declarations for the other arglist vars. To make sure we store the right kinds of objects into the slots, we also wrap (the <type> init) for each initial value. Also CLHS 3.4.6 has an example of a boa constructor using an aux variable without an initializer. CMUCL was not handling that right. Modify CREATE-BOA-CONSTRUCTOR to change the initializer to use (or <aux> slot-default-value) to get the correct default value into the slot if the aux variable doesn't.
-
- Oct 21, 2005
-
-
rtoy authored
condition, or defstruct, and vice versa, so signal an error if we try to do that.
-
- Oct 05, 2004
-
-
rtoy authored
list may not be a proper list. Instead, use a special version of NTHCDR that will exit early if we reach the end of a non-proper list.
-
- Sep 03, 2004
-
-
rtoy authored
If an object to be recursively printed has components and is at a level equal to or greater than the value of *print-level*, then the object is printed as ``#''. Adjust the default structure printer and %print-unreadable-object to do this. This fixes the PRINT-LEVEL.2, PRINT-LEVEL.6, PRINT-LEVEL.8, and PRINT-LEVEL.9. test failures.
-
- Mar 31, 2004
-
-
emarsden authored
- restarts when a package lock is triggered by DEFSTRUCT redefinition: disable the package-definition-lock instead of the package-lock (from Helmut Eller)
-
- Aug 08, 2003
-
-
emarsden authored
structural and the definition locks for all existing packages. Add an additional restart to the PACKAGE-LOCKED-ERROR signaling points that allows the user to disable all packages then continue. Package locks are initialized upon startup, so the unlocking only takes effect during the current session. However, this function doesn't suffer from the problem that affects LISP::*ENABLE-PACKAGE-LOCKED-ERRORS* (which is bound by LOAD so can't be set from an initialization file).
-
- Aug 06, 2003
-
-
gerd authored
bootstrapping. (defun prn (fn) (print (funcall fn))) (defun foo (x) (flet ((bar () x)) (declare (dynamic-extent #'bar)) (prn #'bar))) => The closure for BAR is allocated from the stack * src/compiler/node.lisp (lexenv): Add slot dynamic-extent. * src/compiler/ir1util.lisp (make-lexenv): Add keyword arg for dynamic-extent. * src/code/defstruct.lisp (%redefine-defstruct) [#+bootstrap-dynamic-extent]: Definition that corresponds to to the clobber-it restart. * src/compiler/ir1tran.lisp (process-dynamic-extent-declaration): Rewritten. * src/compiler/x86/alloc.lisp (make-closure): Add constant arg dynamic-extent, and use it for allocation. * src/compiler/ir2tran.lisp (ir2-convert-closure) [#+x86]: Pass dynamic-extent to the make-closure vop.
-
- Jun 20, 2003
-
-
gerd authored
object that is an obsolete instances. Reported by Andre Valente on cmucl-imp. * src/code/defstruct.lisp (typep-to-layout): Add no-error arg. (%defstruct): Call typep-to-layout with no-error true.
-
- Jun 18, 2003
-
-
gerd authored
package COMMON-LISP which LISP uses, so that COMMON-LISP no longer has the non-ANSI nickname LISP. To bootstrap, use boot13.lisp as target:bootstrap.lisp with pmai's build scripts, and do a full compile. * src/bootfiles/18e/boot13.lisp: Change for all the package changes. * src/code/exports.lisp: New package common-lisp, which lisp uses. * src/tools/worldload.lisp: * src/tools/setup.lisp: Use cl-user instead of user. Use lisp:: instead of cl::. * src/tools/worldcom.lisp: * src/tools/snapshot-update.lisp: * src/tools/pclcom.lisp: * src/tools/mk-lisp: * src/tools/hemcom.lisp: * src/tools/config.lisp: * src/tools/comcom.lisp: * src/tools/clxcom.lisp: * src/tools/clmcom.lisp: * src/pcl/defsys.lisp: * src/motif/lisp/initial.lisp: * src/interface/initial.lisp: * src/hemlock/lispmode.lisp (setup-lisp-mode): Use cl-user instead of user. * src/code/save.lisp (assert-user-package): * src/code/print.lisp (%with-standard-io-syntax): Find cl-user package instead of user. * src/code/package.lisp (package-locks-init): Add lisp. (package-init): Don't add user nickname to cl-user. * src/code/ntrace.lisp (*trace-encapsulate-package-names*): Add common-lisp. * src/code/hash.lisp (toplevel): * src/code/hash-new.lisp (toplevel): Use in-package :lisp instead of :common-lisp. * src/code/float-trap.lisp (sigfpe-handler): Don't qualify floating-point-inexact with ext:. * src/pcl/simple-streams/strategy.lisp (sc): * src/pcl/simple-streams/null.lisp (null-read-char): * src/pcl/simple-streams/internal.lisp (allocate-buffer) (free-buffer): * src/pcl/simple-streams/impl.lisp (%check, %read-line) (%peek-char, %read-byte): * src/pcl/simple-streams/file.lisp (open-file-stream) (device-close): * src/pcl/simple-streams/classes.lisp (simple-stream) (device-close): * src/pcl/macros.lisp (toplevel): * src/pcl/braid.lisp (lisp::sxhash-instance): * src/pcl/env.lisp (toplevel): * src/compiler/generic/objdef.lisp (symbol-hash): * src/code/stream.lisp (read-sequence, write-sequence): * src/code/macros.lisp (defmacro, deftype): * src/code/eval.lisp (interpreted-function): * src/code/defstruct.lisp (defstruct): * src/code/debug.lisp (debug-eval-print): Use lisp:: instead of cl::.
-
- May 28, 2003
-
-
gerd authored
* src/pcl/std-class.lisp (*allow-funny-slot-names*): Renamed from *allow-keyword-slot-names*. * src/pcl/methods.lisp (legal-slot-name-p): Allow any symbol if *allow-funny-slot-names* is true. (shared-initialize): Print the value of the :slot-name initarg. * src/code/defstruct.lisp (parse-1-dsd): Treat nil as symbol when used as a slot name.
-
- May 20, 2003
-
-
gerd authored
which is necessary for conforming SLOT-EXISTS-P and MAKE-LOAD-FORM-SAVING-SLOTS. To bootstrap, using pmai's build scripts: 1. Copy boot10.lisp to target:bootstrap.lisp and do a full build. Choose the CLOBBER-IT restart when asked (for an unknown reason, it doesn't work to do this programatically.) 2. Leave the bootstrap file where it is and do a full build with the Lisp produced in step 1. 3. Remove the bootstrap file and do another full build. * src/bootfiles/18e/boot10.lisp: New file. * src-dsd/code/defstruct.lisp (defstruct-slot-description): Rename slot %name to name. (dsd-%name): New function. (dsd-name): Function removed. (parse-1-dsd): Set dsd-name to the slot symbol. * src-dsd/pcl/std-class.lisp (*allow-keyword-slot-names*): New variable. (initialize-internal-slot-functions) <around structure-effective-slot-definition>: New method binding *allow-keyword-slot-names* to true. * src-dsd/pcl/methods.lisp (legal-slot-name-p): Allow keywords if *allow-keyword-slot-names* is true.
-
- May 12, 2003
-
-
gerd authored
struct names.
-
emarsden authored
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
-
- Mar 30, 2003
-
-
gerd authored
* pcl/braid.lisp (ensure-non-standard-class): Add optional parameter existing-class. (reinitialize-structure-class): New function. (toplevel): Push it on kernel::*defstruct-hooks*. * code/defstruct.lisp (*defstruct-hooks*): New variable. (%defstruct): Call these hooks. * tools/pclcom.lisp (find-package): Remove pcl::reinitialize-structure-class from kernel::*defstruct-hooks*.
-
- Mar 27, 2003
-
-
toy authored
stuff that was introduced to fix the conc-name inheritance bugs. We keep the #-bootstrap-conc-name stuff.
-
- Mar 22, 2003
-
-
gerd authored
= 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.
-
- Feb 01, 2003
-
-
gerd authored
* pcl/defs.lisp (make-class-predicate-name): Handle uninterned symbols. * code/defstruct.lisp (define-predicate): Don't error out on some vector objects. (dsd-inherited-p): Use dd-inherited-accessor-alist.
-
- Jan 23, 2003
- Jan 03, 2003
-
-
toy authored
inheritance bug (SBCL bug 127). Slightly modified to make building a little easier. Todo: After the next release (18e) is done, go through and remove the old bootstrap-conc-name reader conditionals. We want the #-bootstrap-conc-name versions.
-
- Dec 09, 2002
-
-
toy authored
(Noted by Paul Dietz.)
-
- Jul 31, 2002
-
-
toy authored
when redefining structures. Based on suggestions from Rob MacLachlan and Mike McDonald.
-
- Apr 25, 2002
-
-
pmai authored
0.7.2.17: Merged MNA "fix for boa-constructor bug" sbcl-devel 2002-04-16 ... copied the fix to &optional arguments handling ... also test the &optional handling This fixes the handling of supplied-p args for &key and &optional args of boa-constructors. Also did a couple of code cleanups in the process.
-
- Sep 21, 2001
-
-
pw authored
problems are fixed now. This revision fixes an omission from a previous rev that added support for :print-object and :print-function defstruct options. The default method created was calling DEFAULT-STRUCTURE-PRINT with only two arguments. It seems to work correctly now.
-
- Mar 15, 2001
-
-
pw authored
defstruct options while preserving previous behaviour. ANSI processing is enabled by ext:*ansi-defstruct-options-p* which must be NIL while compiling CMUCL, PCL, CLX, HEMLOCK to avoid flushing defined print-functions. This switch is turned ON when worldload builds a core with PCL in it.
-
- Mar 04, 2001
-
-
pw authored
-
- Jan 06, 2001
-
-
dtc authored
evaluating the 'object argument.
-
- Dec 03, 1999
-
-
dtc authored
generating an error when passed a Nil argument due to an attempt to use ELT to access the name; the name is now accessed via NTH for list based structures.
-
- Sep 23, 1999
-
-
dtc authored
-
- Sep 22, 1999
-
-
dtc authored
the defstruct-slot-descriptor which was broken for inherited slot as the dsd-accessor was set to Nil in this case. Rather than setting dsd-accessor to Nil for inherited slots, add a new function dsd-inherited-p to test if an accessor has been inherited, and always setup the dsd-accessor slot with the name of the accessor function. This allows the structure printer and inspect to easily obtain a slot accessor function.
-
- Sep 20, 1999
-
-
pw authored
included other defstructs. An example of a failing case is: (defstruct a1 s1) (defstruct (a2 (:include a1)(:conc-name a1-)) s2) as seen in Hemlock source. The problem was that the dsd-accessor slot is documented to sometimes contain NIL but default-structure-print blindly called fdefinition on the sometimes NIL value. The fix here is to compute the slot accessor name from the conc-name and slot-name. NOTE: There is code in ir1tran that also blindly calls fdefinition on the contents of dsd-accessor. Don't know if this is a latent bug.
-
- Dec 19, 1998
-
-
dtc authored
Rework some error's into simple-type-error's. Based of patches from Peter Van Eynde.
-
- Jul 25, 1998
-
-
dtc authored
default-structure-print; noted by Bill Newman.
-
- Jul 24, 1998
-
-
dtc authored
remove unnecessary conditionals.
-
- May 04, 1998
-
-
dtc authored
* Rename the 'stream structure class to sys:lisp-stream. * Add a new none hierarchical 'stream built-in class which inherits from: instance, t. * Hack in the new stream class as a mixin for the structure base lisp-stream class which now inherits from: stream, structure-object, instance, t. * Add a new 'fundamental-stream standard-class which includes 'stream as a mixin, and add PCL hacks to allow this to be redefined after PCL is loaded to be (defclass fundamental-stream (standard-object stream) ...). * Add appropriate support to the base stream functions to dispatch to the Gray stream functions for the handling of fundamental-streams. Some of the lisp-streams encapsulating CLOS streams still need a little work.
-
- Apr 20, 1998
-
-
pw authored
with the ANSI spec. A default report method is attached to the serious-condition class and many of the uses of (error "string" arg..) in filesys.lisp and package.lisp were changed to use, for example, (error 'file-error :format-control "string" :format-arguments (list stuff)) The end result is no obvious change to what the user sees, and enables one to establish a handler to catch the particular error type as mentioned in the "Exceptional Situations:" section of the CLHS write-ups. There probably are still some places where the error types need to be fixed. Also, a bug in with-package-iterator which caused failure with a null package-use-list was fixed, and some file functions (like truename and probe-file) now disallow a wild pathname.
-
- Mar 21, 1998
-
-
dtc authored
-
- Mar 03, 1998
-
-
dtc authored
slots. This allows consing to be avoided when writing to these slots as for the float type.
-
- Mar 01, 1998
-
-
dtc authored
-
- Apr 09, 1997
-
-
dtc authored
will place the instance in the static space but still move the substructure lists and arrays to the RO space. This is needed for compact-info environments which cache the last name in the instance which needs to be scavenged, but the hash arrays can still be placed in the RO space (the cache name was not being scavenge which could cause a false hit if very unlucky). Shall uses this new option in compiler/globaldb.lisp after people have had a chance to bootstrap in this new support.
-