Skip to content
Snippets Groups Projects
  1. Jun 21, 2004
  2. May 14, 2004
  3. May 11, 2004
  4. May 06, 2004
  5. Apr 07, 2004
  6. Apr 06, 2004
    • rtoy's avatar
      Add support for source location recording, from Helmut Eller on · f4f6325e
      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.)
      f4f6325e
  7. Apr 05, 2004
  8. Jan 15, 2004
  9. Oct 24, 2003
  10. Oct 09, 2003
  11. Sep 26, 2003
  12. Sep 25, 2003
    • toy's avatar
      Implmement Pierre Mai's idea of adding 2 macros for setting *FEATURES* · 11faa4e0
      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.
      11faa4e0
  13. Aug 25, 2003
    • gerd's avatar
      Dynamic-extent support for x86. Use boot16.lisp for · f3fe0b8d
      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.
      f3fe0b8d
  14. Aug 05, 2003
    • gerd's avatar
      DYNAMIC-EXTENT rest args. Currently for x86 only. Speed must be · 88a53c80
      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.
      88a53c80
  15. Aug 03, 2003
    • gerd's avatar
      Remove the function definition of FIXNUM, which it must not · 52858943
      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.
      52858943
  16. Jun 29, 2003
  17. Jun 20, 2003
  18. Jun 18, 2003
    • gerd's avatar
      Remove package nicknames USER from COMMON-LISP-USER. Add a new · b4f2c7c7
      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::.
      b4f2c7c7
  19. Jun 14, 2003
  20. May 27, 2003
  21. May 26, 2003
  22. May 23, 2003
    • gerd's avatar
      Add fwrappers. Rewrite TRACE and PROFILE to use fwrappers. · e9211546
      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.
      e9211546
  23. May 20, 2003
    • gerd's avatar
      boot11.lisp · 2376d277
      gerd authored
      2376d277
    • gerd's avatar
      Store user-specified slot names in DEFSTRUCT-SLOT-DESCRIPTIONs, · 20254db5
      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.
      20254db5
  24. May 14, 2003
  25. May 12, 2003
    • emarsden's avatar
      · 807d6f0f
      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
      807d6f0f
  26. Apr 30, 2003
  27. Apr 21, 2003
  28. Apr 20, 2003
  29. Apr 13, 2003
    • gerd's avatar
      The SEQUENCE-COUNT type was previously used in c:fndb, but since · c1effa7a
      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.
      c1effa7a
  30. Mar 27, 2003
  31. Mar 26, 2003
Loading