Skip to content
Snippets Groups Projects
  1. Apr 08, 2004
  2. 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
  3. Mar 24, 2004
    • emarsden's avatar
      · 39828da8
      emarsden authored
       - component names may be non-pretty-printable
      39828da8
  4. Oct 26, 2003
    • gerd's avatar
      * src/compiler/eval-comp.lisp (compile-for-eval): Delete · bf6b4a00
      gerd authored
      	unreachable blocks, similar to ir1-optimize, which we don't call.
      	This simplifies things by reducing the differences between
      	"normal" compilation and compiling for interpretation.
      
      	* src/compiler/ir1util.lisp (block-unreachable-p): New function.
      	(delete-lambda): Mark return blocks for deletion again.
      
      	* src/compiler/ir1opt.lisp (ir1-optimize): Use block-unreachable-p.
      	Delete unreachable blocks after the loop.
      bf6b4a00
  5. Oct 21, 2003
  6. Oct 13, 2003
    • gerd's avatar
      (compile nil '(lambda (c) · e3c48cee
      gerd authored
      	   (labels ((%f15 ()
      	              (* (unwind-protect c)
      	              (max -5726369 (return-from %f15 3099206)))))
      	     c)))
      	 => assertion failure in unlink-blocks
      
      	* src/compiler/ir1util.lisp (delete-lambda): Protect the deletion
      	of the return block against already being marked for deletion.
      	Mark the return block for deletion.  From SBCL.
      e3c48cee
  7. Oct 11, 2003
    • gerd's avatar
      ANSI test misc.9 and others · 4f8cab88
      gerd authored
      	 => assertion failure in delete-block
      
      	* src/compiler/ir1util.lisp (delete-lambda): Mark blocks of
      	lambda-refs for deletion.  Protect the unlink of the bind-block
      	against it being marked for deletion.
      	(delete-block) <entry>: Mark blocks of exits for deletion.
      	Delete the entry from lambda-entries.
      4f8cab88
  8. Oct 09, 2003
    • gerd's avatar
      (compile nil '(lambda (a) · f6332522
      gerd authored
      		(declare (type (integer -30078003 47403) a))
      		(unwind-protect
      		    (if (ldb-test (byte 6 23) 828450)
      			(logandc1 -1 (min -34 (block b2 a)))
      		      a))))
      	 => The assertion (C::CONSTANT-CONTINUATION-P C::CONT) failed,
      	    in %unwind-protect/ir2-convert
      
      	* src/compiler/ir1util.lisp (delete-block): Don't remove
      	block end cleanups unless *converting-for-interpreter*.
      	Reported by Paul Dietz.
      f6332522
  9. Oct 02, 2003
    • gerd's avatar
      (compile nil · 5d00555f
      gerd authored
      	  '(lambda (c) (declare (optimize (speed 3) (debug 1)))
      	     (flet ((%f18 () -36))
      	        (flet ((%f13 () (let () (block b8 (return-from b8 c)))))
      	          (%f18)))))
      	 => error nil is not an integer, in dump-1-variable
      
      	Found by Paul Dietz.
      
      	This is caused by a lambda-var being passed to dump-1-variable
      	which hasn't been packed, and so has a null tn-offset.  A ref to
      	this lambda-var remains at this point because it is referenced
      	from a different component.  The ref is deleted when that
      	component is compiled.  The problem is that there shouldn't have
      	been two components to begin with, which we prevent by recording
      	additional DFO dependencies for closed-over variables and entries.
      
      	Port from SBCL, basically.
      
      	Does not require a bootstrap file, but a full build is necessary
      	due to the renamed clambda structure slot.
      
      	* src/compiler/dfo.lisp (dfo-walk-call-graph): Process
      	new dfo dependencies.
      
      	* src/compiler/node.lisp (clambda): Rename slot `calls'
      	to `dfo-dependencies'.
      
      	* src/compiler/locall.lisp (convert-call, convert-mv-call):
      	Call note-dfo-dependency.
      	(merge-lets): Change for new clambda slot name.
      	(unconvert-tail-calls): Handle the case of non-clambdas in
      	the dfo dependencies.
      
      	* src/compiler/ir1util.lisp (continuation-home-lambda)
      	(note-dfo-dependency): New functions.
      
      	* src/compiler/ir1tran.lisp (ir1-convert-variable)
      	(return-from, go, setq): Call note-dfo-dependency.
      
      	* src/compiler/xref.lisp (lambda-called-p): New function.
      	(prettiest-caller-name): Use lambda-called-p instead of
      	lambda-calls.
      5d00555f
  10. Aug 16, 2003
    • 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
  11. Aug 06, 2003
    • 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
  12. Jun 02, 2003
    • emarsden's avatar
      Change to the compiler's error/note reporting: · d9603d83
      emarsden authored
         - an extra optional argument to COMPILER-NOTIFICATION makes it
           possible to pass text describing the error/note to
           *COMPILER-NOTIFICATION-FUNCTION*.
      
         - functions for *COMPILER-NOTIFICATION-FUNCTION* have an extra
           second argument which describes the error/note
      
         - modify the eval-server functionality in Hemlock in consequence
      
      This backwards-incompatible change makes the
      *COMPILER-NOTIFICATION-FUNCTION* facility considerably more useful,
      since the description of the error (which was previously not passed to
      the notification-function) is very useful when reporting an error.
      
      
      Compile-time effect of DEFCONSTANT: instead of discarding the
      documentation string, add it to the info database.
      d9603d83
  13. Apr 11, 2003
    • emarsden's avatar
      * Change the way that the compiler searches for function names in the · e790920a
      emarsden authored
         lexical environment to take into account generalized function names, and
         in particular inline declarations for FLET or LABELS functions. New
         function called FUNCTION-NAME-EQV-P that knows that a name like (FLET
         INNER OUTER) is equivalent to a name like INNER.
      
       * Include any context information in undefined-function warnings. Forms like
      
              (defun bogus (x)
                (declare (ftype (function (t) *) no-ftype))
                  (flet ((foo (x) (random (1+ x))))
                      (declare (inline almost-foo))
              	    (foo (+ x 1))))
      
         will now generate warnings of the form
      
            Warning: Undefined function almost-foo in an inline or notinline
            declaration
      
            Warning: Undefined function no-ftype in a function type declaration
      e790920a
  14. Mar 24, 2003
    • gerd's avatar
      * src/compiler/ir1util.lisp (delete-block): Delete entries · 97b8e2cf
      gerd authored
      	from the block's home lambda.  This fixes a compiler
      	bug showing up when evaluating
      
              (tagbody
      	  (go loop)
      	  (block g1472 #'(lambda () (return-from g1472 nil)))
      	  loop)
      
      	but doesn't fix an IR1 inconsistency (c::*check-consistency* true}
      	that existed already before.
      97b8e2cf
  15. Mar 10, 2003
  16. Jan 06, 2003
  17. Aug 26, 2002
  18. Aug 25, 2002
  19. Aug 21, 2002
  20. Jun 17, 2001
    • pw's avatar
      From eric Marsden: · c840823b
      pw authored
      Fix some error types to be ANSI compliant.
      c840823b
  21. Mar 04, 2001
  22. Jul 07, 2000
  23. Jun 18, 2000
    • dtc's avatar
      Ensure that continuation references stored within the lexical · bfbe4f7e
      dtc authored
      environment, for block exits and tagbody entries, are updated when
      continuations are substituted. Add a cont-ref structure, and a new
      slot to continuations which holds the list of these references to be
      be updated when the continuation is substituted. Based on the work of
      Tim Moore.
      bfbe4f7e
  24. Feb 28, 2000
    • dtc's avatar
      From Pierre R. Mai: · 180e2498
      dtc authored
      o Weaken the compiler warnings generated for unused or used variables
        to be style-warnings as specified by ANSI CL.
      o Check for ignore declarations of free variables, and when such
        variables are found generate a style-warning noting that the declaration
        has been ignored.
      180e2498
  25. Feb 24, 1998
  26. Oct 31, 1994
  27. Feb 11, 1994
  28. Feb 10, 1994
  29. Feb 08, 1994
  30. Nov 16, 1993
  31. Aug 31, 1993
  32. Aug 25, 1993
  33. Aug 24, 1993
  34. Aug 20, 1993
  35. Aug 17, 1993
  36. Aug 15, 1993
  37. Aug 06, 1993
  38. Aug 03, 1993
Loading