Skip to content
Snippets Groups Projects
  1. Aug 08, 2003
  2. Aug 07, 2003
  3. 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
  4. Aug 05, 2003
    • gerd's avatar
      * src/compiler/x86/macros.lisp (allocation): Use >= speed safety · 60f29be9
      gerd authored
      	for dynamic-extent because it's otherwise impossible to use use
      	dynamic-extent in code that otherwise needs to have type checks
      	compiled in.
      60f29be9
    • toy's avatar
      Fix bad disassembly note about allocating bytes when the add · 17fdaff0
      toy authored
      instruction didn't have an immediate arg.
      17fdaff0
    • toy's avatar
      In %ENUMERATE-FILES, also match if the file has no explicit version · 8cffe571
      toy authored
      (version NIL) and we're looking for version :NEWEST, since that's what
      no explicit version means.
      8cffe571
    • toy's avatar
      Update the LISTIFY-REST-ARGS vop to include an additional · f42502bd
      toy authored
      DYNAMIC-EXTENT arg.  (Untested on these platforms, except for sparc.)
      f42502bd
    • toy's avatar
      Remove the x86 conditionalization of the dynamic-extent arg to · b359933a
      toy authored
      listify-rest-args.
      b359933a
    • 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
    • emarsden's avatar
      Fix typos. · 0de8456c
      emarsden authored
      0de8456c
  5. Aug 04, 2003
  6. 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
  7. Aug 02, 2003
    • gerd's avatar
      (deftype string-and-number () '(cons string (cons number null))) · 63c1a0fe
      gerd authored
      	(defun bug1 (x)
      	  (declare (type string-and-number x))
         	  (the number (car (reverse x))))
      
      	(bug1 (list "one" 1))
      	 => Type error 1 is not of type number.
      
      	Reported by Luke Gorrie on cmucl-imp.
      
      	* src/compiler/knownfun.lisp (result-type-first-arg/reverse)
      	(reversed-cons-type): New functions.
      
      	* src/compiler/fndb.lisp (nreverse, reverse): Use
      	result-type-first-arg/reverse.
      63c1a0fe
  8. Jul 30, 2003
  9. Jul 29, 2003
  10. Jul 28, 2003
    • toy's avatar
    • gerd's avatar
      Improve LDB backtrace on x86. · 284fd069
      gerd authored
      	* src/lisp/gc.h (component_ptr_from_pc): Add prototype.
      
      	* src/lisp/backtrace.c (struct compiled_debug_info)
      	(struct compiled_debug_function): New structs.
      	(array_of_type_p, debug_function_from_pc): New functions.
      	(backtrace): Use debug_function_from_pc to figure out the
      	real name of the frame, instead of listing all entry points
      	of the code object.
      284fd069
    • gerd's avatar
      Loading gray-streams lead to a vicious metacircle because · 0041e6b0
      gerd authored
      	effective methods of close were no longer precomputed, and close
      	is being used somewhere inside the compiler during emf
      	compilation.
      
      	* src/pcl/gray-streams.lisp (toplevel): Call pcl-close
      	before setting the fdefinition of close to it, analogous
      	to what was already done for pcl-open-stream-p.
      
      	* src/pcl/dfun.lisp (break-vicious-metacircle): Put the
      	error in infinite-error-protect, just in case.
      0041e6b0
    • gerd's avatar
      * src/lisp/backtrace.c (print_entry_name): Print symbol package, · 9f94756e
      gerd authored
      	print strings as such.
      9f94756e
    • gerd's avatar
      CLtS effectively forbids method load-time precomputation of · c3fd05a9
      gerd authored
      	effective methods (which I think is either yet another oversight,
      	or bad language design).  Found by Paul Dietz.
      
      	Set *max-emf-precomputation-methods* to > 0 to allow
      	precomputation of effective methods at method load-time for
      	generic functions having less than the specified number of
      	methods.
      
      	* src/pcl/dfun.lisp (*max-emf-precomputation-methods*): Set to 0.
      
      	* src/pcl/pkg.lisp ("PCL"): Export *max-emf-precomputation-methods*.
      c3fd05a9
  11. Jul 26, 2003
  12. Jul 25, 2003
    • gerd's avatar
      LDB backtrace for x86, first steps. · 49187a54
      gerd authored
      	* src/lisp/backtrace.c (VM_OCFP_SAVE_OFFSET)
      	(VM_RETURN_PC_SAVE_OFFSET): New defines.
      	(stack_pointer_p, ra_pointer_p, deref, print_entry_name)
      	(print_entry_list, print_entry_points, x86_call_context):
      	New functions.
      	(backtrace): Use x86_call_context.
      49187a54
  13. Jul 24, 2003
  14. Jul 23, 2003
Loading