Skip to content
Snippets Groups Projects
  1. Aug 26, 2003
  2. 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
    • gerd's avatar
      Lazy signaling of errors because of invalid method qualifiers, · 2f40ed5a
      gerd authored
      	for ANSI compliance.
      
      	* src/pcl/defcombin.lisp (compute-effective-method):  If
      	*in-precompute-effective-methods-p*, generate an emf consisting of
      	a call to %invalid-qualifiers if there are such methods.
      
      	* src/pcl/combin.lisp (standard-compute-effective-method): Likewise.
      	(make-effective-method-lambda): Handle %invalid-qualifiers like
      	%no-primary-method.
      
      	* src/pcl/braid.lisp (%invalid-qualifiers): New function.
      	(invalid-qualifiers): New method.
      
      	* src/pcl/generic-functions.lisp (invalid-qualifiers): New gf.
      
      	* src/pcl/dfun.lisp (*max-emf-precomputation-methods*): Set to 100.
      
      	* src/docs/cmu-user/extensions.tex (Effective Method Precomputation):
      	Change description of *max-emf-precomputation-methods*.
      2f40ed5a
    • gerd's avatar
      (defun foo (n d) · 1ce65ee5
      gerd authored
      	  (declare (type (unsigned-byte 32) n d))
      	  (ffloor n d))
      
      	had a return type of nil when byte-compiled because ffloor's
      	derive-type optimizer returned a rational quotient type.
      1ce65ee5
  3. Aug 24, 2003
    • gerd's avatar
      Debugger signalling an error when a function parameter is · b8e7cf93
      gerd authored
      	a special variable.  Reported by Alexey Dejneka on cmucl-imp.
      	This fixes the read case, but not the setq case.
      
      	* src/code/debug-int.lisp (preprocess-for-eval): Don't
      	symbol-macrolet special variables, let-bind them instead.
      b8e7cf93
  4. Aug 23, 2003
  5. Aug 22, 2003
  6. Aug 21, 2003
  7. Aug 20, 2003
  8. Aug 19, 2003
  9. Aug 18, 2003
  10. Aug 17, 2003
    • toy's avatar
      FFLOOR bug from Paul Dietz on cmucl-imp: · 5256a270
      toy authored
      (defun f (x) (declare (type (integer 0 100) x)) (ffloor x))
      
      was not compiling.  FTRUNCATE-DERIVE-TYPE-QUOT didn't handle the case
      where the result type was FLOAT, which implied that
      NUMERIC-TYPE-FORMAT is NIL.
      5256a270
  11. Aug 16, 2003
    • gerd's avatar
      * src/pcl/braid.lisp (bootstrap-meta-braid): Add missing · 218243f7
      gerd authored
      	arg to error.
      218243f7
    • gerd's avatar
      Format string checking for ERROR, WARN, and others. · a66297f9
      gerd authored
      	* src/compiler/srctran.lisp (check-format-args-1)
      	(check-format-args-2): Extracted from check-format-args.
      	(check-format-args): Take a continuation argument for the control
      	string.
      	(format): Use the new check- functions.
      	(error, warn, compiler-error, compiler-warning)
      	(compiler-note, compiler-mumble): Add format-checking
      	deftransforms.
      
      	* src/compiler/fndb.lisp (compiler-warning, compiler-note)
      	(compiler-mumble, compiler-error): Add defknowns.
      
      	* src/compiler/ir1util.lisp (compiler-mumble, compiler-warning)
      	(compiler-note): Return no values.
      
      	* src/code/parse-time.lisp (deal-with-am-pm): Add a missing
      	arg to error.
      	* src/compiler/saptran.lisp (foreign-symbol-address):
      	* src/compiler/new-assem.lisp (emit-annotation): Likewise.
      a66297f9
  12. Aug 15, 2003
  13. Aug 12, 2003
  14. Aug 11, 2003
  15. Aug 08, 2003
  16. Aug 07, 2003
  17. Aug 06, 2003
    • toy's avatar
      58db2bd2
    • toy's avatar
      ir2tran.lisp: Make make-closure use dynamic-extent for everyone · 9c7dd4b4
      toy authored
      {alpha,hppa,mips,ppc}/alloc.lisp:  Add dynamic-extent arg to the
      make-closure VOP.  (Not tested.)
      9c7dd4b4
    • gerd's avatar
      Dynamic-extent closures for x86. Use boot15.lisp for · 5ac014db
      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.
      5ac014db
    • gerd's avatar
      Control viability of dynamic-extent declarations with a · 289982f2
      gerd authored
      	user-settable variable and an interface function that can be used
      	across backends.
      
      	* src/compiler/globaldb.lisp
      	(*trust-dynamic-extent-declarations*): New variable.
      	(trust-dynamic-extent-declaration-p): New function.
      	* src/compiler/x86/macros.lisp (allocation): Use it.
      	* src/compiler/sparc/macros.lisp (allocation): Use it.
      
      	* src/code/exports.lisp ("EXTENSIONS"): Export
      	*trust-dynamic-extent-declarations*.
      	* src/code/exports.lisp ("C"): Export
      	trust-dynamic-extent-declaration-p.
      289982f2
    • toy's avatar
      Update notes for dynamic-extent support, and some other missing · f4dc265b
      toy authored
      changes.
      f4dc265b
    • toy's avatar
      Add support for DYNAMIC-EXTENT &REST args. Update the ALLOCATION · a69278c9
      toy authored
      macro to support stack allocation.
      a69278c9
  18. Aug 05, 2003
Loading