- Jun 21, 2004
-
-
rtoy authored
-
- May 14, 2004
-
-
rtoy authored
-
- May 11, 2004
-
-
rtoy authored
-
- May 06, 2004
-
-
rtoy authored
source location for defvar and friends.
-
- Apr 07, 2004
- Apr 06, 2004
-
-
rtoy authored
cmucl-imp: The patch below adds a somewhat general mechanism to the get the "current location". So every macro that wants to record the source location, can insert a call to SOURCE-LOCATION in the generated code and safe the result in a appropriate place. SOURCE-LOCATION is a compiler-macro and returns a quoted struct with the source info. The patch adds the definition for SOURCE-LOCATION some modifications for the defclass, defgeneric and defmethod macros. Classes, generic functions and methods have already a "source" slot and the result of SOURCE-LOCATION is just stored into that slot. (The source slot contains currently only the *loadpath*, which is is not very useful, if the fasl file is in a different directory than the source file.)
-
- Apr 05, 2004
-
-
rtoy authored
-
- Jan 15, 2004
-
-
toy authored
(A cross-compile may not have been necessary, but I didn't try it.)
-
- Oct 24, 2003
- Oct 09, 2003
-
-
toy authored
pseudo-atomic-interrupted-value for use in bootstrapping so these are defined when we compile the code for Sparc.
-
- Sep 26, 2003
-
-
toy authored
Use boot18 to bootstrap this change.
-
- Sep 25, 2003
-
-
toy authored
and *RUNTIME-FEATURES* and setting them appropriately as files are loaded so that recompiling CMUCL produces a result with the same set of features. *RUNTIME-FEATURES* is a subset of *FEATURES* that is written out to internals.h so the C code can be compiled appropriately. A simple bootstrap with boot17 is needed.
-
- Aug 25, 2003
-
-
gerd authored
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.
-
- Aug 05, 2003
-
-
gerd authored
greater than safety for stack-allocation to actually happen, which is what ACL defaults to. Use boot15.lisp to bootstrap. * src/bootfiles/18e/boot15.lisp: New file. * src/compiler/node.lisp (leaf): Add slot dynamic-extent. * src/compiler/x86/macros.lisp (load-size, inline-allocation) (not-inline-allocation): Extract from function allocation. (stack-allocation): New function. (allocation): Add arg dynamic-extent. Call stack-allocation if dynamic-extent is true, and speed > safety. * src/compiler/x86/call.lisp (listify-rest-args): Add constant third arg, and pass it to allocation. * src/code/class.lisp (find-layout): Put part in #-bootstrap-dynamic-extent. * src/compiler/ir1tran.lisp (process-dynamic-extent-declaration): New function. (*suppress-dynamic-extent-declaration*): New variable. (process-1-declaration): Call process-dynamic-extent-declaration. (convert-more-entry) [#+x86]: Call %listify-rest-args with third arg dynamic-extent. * src/compiler/eval-comp.lisp (%listify-rest-args) [#+x86]: * src/compiler/fndb.lisp (%listify-rest-args) [#+x86]: Add third arg for dynamic-extent. Possibly temporary workaround for SBCL build problems caused by a situation like (defvar *foo*) (declaim (type foo *foo*)) (defstruct foo) (defun foo () (let ((*foo* (some-unknown-function))) ...)) When a type check is being generated for the local binding of *foo*, *foo*'s type in the info database is still an unknown-type. The typep transform generates a call to %instance-typep, because it knows that foo is an instance. The deftransform for %instance-typep does not run, so an actual call to %instance-typep is being generated. A function %instance-typep doesn't exist at run time, though. * src/compiler/ir1tran.lisp (find-free-variable): If the variable's type is an unknown-type, reparse it, and change the type in the info database.
-
- Aug 03, 2003
-
-
gerd authored
have according to CLtS. Found by Paul Dietz. Use boot14.lisp to bootstrap. * src/compiler/generic/utils.lisp (fixnumize): Renamed from fixnum. * src/bootfiles/18e/boot14.lisp: New file. * src/code/exports.lisp ("VM"): Export fixnumize. * src/assembly/alpha/arith.lisp, src/assembly/alpha/array.lisp: * src/assembly/alpha/assem-rtns.lisp, src/assembly/hppa/arith.lisp * src/assembly/hppa/array.lisp, src/assembly/hppa/assem-rtns.lisp * src/assembly/mips/alloc.lisp, src/assembly/mips/arith.lisp * src/assembly/mips/array.lisp, src/assembly/mips/assem-rtns.lisp * src/assembly/mips/bit-bash.lisp, src/assembly/ppc/arith.lisp * src/assembly/ppc/array.lisp, src/assembly/ppc/assem-rtns.lisp * src/assembly/rt/alloc.lisp, src/assembly/rt/arith.lisp * src/assembly/rt/array.lisp, src/assembly/rt/assem-rtns.lisp * src/assembly/sparc/arith.lisp, src/assembly/sparc/array.lisp * src/assembly/sparc/assem-rtns.lisp, src/assembly/x86/arith.lisp * src/assembly/x86/array.lisp, src/assembly/x86/assem-rtns.lisp * src/compiler/alpha/alloc.lisp, src/compiler/alpha/arith.lisp * src/compiler/alpha/array.lisp, src/compiler/alpha/call.lisp * src/compiler/alpha/move.lisp, src/compiler/alpha/nlx.lisp * src/compiler/alpha/static-fn.lisp, src/compiler/alpha/subprim.lisp * src/compiler/alpha/values.lisp, src/compiler/generic/utils.lisp * src/compiler/hppa/alloc.lisp, src/compiler/hppa/arith.lisp * src/compiler/hppa/array.lisp, src/compiler/hppa/call.lisp * src/compiler/hppa/move.lisp, src/compiler/hppa/nlx.lisp * src/compiler/hppa/static-fn.lisp, src/compiler/hppa/subprim.lisp * src/compiler/hppa/values.lisp, src/compiler/mips/alloc.lisp * src/compiler/mips/arith.lisp, src/compiler/mips/array.lisp * src/compiler/mips/call.lisp, src/compiler/mips/move.lisp * src/compiler/mips/nlx.lisp, src/compiler/mips/static-fn.lisp * src/compiler/mips/subprim.lisp, src/compiler/mips/values.lisp * src/compiler/ppc/alloc.lisp, src/compiler/ppc/arith.lisp * src/compiler/ppc/array.lisp, src/compiler/ppc/call.lisp * src/compiler/ppc/move.lisp, src/compiler/ppc/nlx.lisp * src/compiler/ppc/static-fn.lisp, src/compiler/ppc/subprim.lisp * src/compiler/ppc/values.lisp, src/compiler/rt/alloc.lisp * src/compiler/rt/arith.lisp, src/compiler/rt/array.lisp * src/compiler/rt/call.lisp, src/compiler/rt/move.lisp * src/compiler/rt/nlx.lisp, src/compiler/rt/static-fn.lisp * src/compiler/rt/subprim.lisp, src/compiler/rt/values.lisp * src/compiler/sparc/alloc.lisp, src/compiler/sparc/arith.lisp * src/compiler/sparc/array.lisp, src/compiler/sparc/call.lisp * src/compiler/sparc/move.lisp, src/compiler/sparc/nlx.lisp * src/compiler/sparc/static-fn.lisp, src/compiler/sparc/subprim.lisp * src/compiler/sparc/values.lisp, src/compiler/x86/alloc.lisp * src/compiler/x86/arith.lisp, src/compiler/x86/array.lisp * src/compiler/x86/call.lisp, src/compiler/x86/cell.lisp * src/compiler/x86/macros.lisp, src/compiler/x86/memory.lisp * src/compiler/x86/move.lisp, src/compiler/x86/nlx.lisp * src/compiler/x86/pred.lisp, src/compiler/x86/static-fn.lisp * src/compiler/x86/subprim.lisp, src/compiler/x86/values.lisp: Use fixnumize instead of fixnum.
-
- Jun 29, 2003
-
-
emarsden authored
Noted by Suresh Madhu.
-
- Jun 20, 2003
-
-
gerd authored
(read-token): Add. (toplevel): Set the readtable entry for #\: to the new read-token.
-
- 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::.
-
- Jun 14, 2003
-
-
gerd authored
Found by Paul Dietz. * src/bootfiles/18e/boot13.lisp: New file. * src/code/reader.lisp (read-token) <RETURN-SYMBOL>: If the package name is "", use *keyword-package*.
-
- May 27, 2003
- May 26, 2003
- May 23, 2003
-
-
gerd authored
To bootstrap, use boot12.lisp with pmai's scripts. * src/bootfiles/18e/boot12.lisp: New file. * src/tools/worldload.lisp, src/tools/worldcom.lisp: * src/tools/worldbuild.lisp: Add code:fwrappers. * src/docs/cmu-user/extensions.tex (Function Wrappers): New section. * src/code/fwrappers.lisp: New file. * src-fw/pcl/defs.lisp (gdefinition): Don't check for profiled functions. * src-fw/code/exports.lisp: Add walker and fwrappers. * src-fw/code/fdefinition.lisp (fdefn-init): Set *valid-function-names* to nil. (encapsulation): Structure removed. (do-encapsulations, encapsulation, last-encapsulation) (push-encapsulation, encapsulate, unencapsulate, encapsulated-p): Removed. There is a compatibility layer in fwrappers.lisp. (fdefinition, %set-fdefinition): Rewritten. * src/code/profile.lisp: Remove #+cmu and #-cmu. ("PROFILE"): Use fwrappers. (*profile-info*): Removed. (profile-info): Redefined. (*existing-encapsulations*): Removed. (reset-profile-info, profile-info-profiling-values): New functions. (make-profile-encapsulation): Removed. (profile): New function name syntax. (make-profile-fwrapper-name, make-profile-fwrapper): New functions. (def-profile-fwrapper): Precompute some fwrappers. (ensure-profile-fwrapper, find-profile-fwrapper, pi-or-lose): New functions. (profile-1-function): Rewritten. (unprofile-1-function): Ditto. (re-profile-redefined-function): New function. (toplevel): Push it on *setf-fdefinition-hook*. * src/code/ntrace.lisp (trace-call): Removed. (trace-fwrapper): New fwrapper. (trace-1): Use fwrap instead of encapsulate. (untrace-1): Use funwrap instead of unencapsulate.
-
- May 20, 2003
-
-
gerd authored
-
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 14, 2003
-
-
toy authored
-
- May 12, 2003
-
-
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
-
- Apr 30, 2003
-
-
gerd authored
-
- Apr 21, 2003
- Apr 20, 2003
- Apr 13, 2003
-
-
gerd authored
C::SEQUENCE-COUNT /= KERNEL::SEQUENCE-COUNT, it was an unknown type. Please read boot4.lisp. * src/code/exports.lisp ("KERNEL"): Export sequence-count. * src-types/bootfiles/18e/boot4.lisp: New file. Make compute-effective-slot-definition AMOP compliant. Patch from Kevin Rosenberg. * src/pcl/std-class.lisp (compute-slots): Pass slot name to compute-effective-slot-definition. (compute-slots): Likewise. (compute-effective-slot-definition): Add parameter slot-name. * src/pcl/generic-functions.lisp (compute-effective-slot-definition): Add second parameter slot-name. Allow non-keyword keyword names in lambda lists. This fixes test cases STRUCTURE-BOA-TEST-15/[1-8], and FLET.30. * src/compiler/node.lisp (arg-info): Accept non-keyword keyword names. * src/code/type.lisp (key-info): Likewise. Fix type system bugs detected by Paul Dietz' test suite This is to a large extent a port from SBCL. * src/code/type.lisp: Mostly rewritten with code ported from SBCL. * src/compiler/typetran.lisp (ir1-transform-type-predicate): Return nil if type is *empty-type*. (source-transform-negation-typep) (source-transform-intersection-typep): New functions. (source-transform-array-typep): Handle unknown array element types. (typep): Add handling of negation and intersection types. * src/compiler/srctran.lisp (make-canonical-union-type): Simplify, now that #'type-union is smarter. (ir1-transform-<-helper): Give up on non-numeric, non-member types. * src/compiler/checkgen.lisp (type-test-cost): Add a case for intersection-type. (values-types-asserted): Don't use coerce-to-values, see the comment there. * src/compiler/array-tran.lisp (array-dimension): Accept :maybe as array-type-complexp. * src/code/pred.lisp (%%typep): Add handling of negation-types and intersection-types. Change cases of hairy-types, union-types, and arrays with unknown element type. * src/code/exports.lisp ("KERNEL"): Export negation-type, negation-type-type, intersection-type, intersection-type-types. * src/code/class.lisp (sealed-class-intersection): Return one value. (class :simple-intersection): Return one value, return nil in the default case. (class :complex-subtypep-arg2): New type method.
-
- Mar 27, 2003
-
-
gerd authored
in cross-compilation scripts.
-
- Mar 26, 2003
-
-
gerd authored
-