1. 13 Oct, 2011 2 commits
  2. 12 Oct, 2011 1 commit
  3. 11 Oct, 2011 1 commit
  4. 10 Oct, 2011 1 commit
  5. 09 Oct, 2011 1 commit
  6. 25 Sep, 2011 2 commits
  7. 21 Aug, 2011 1 commit
  8. 28 Mar, 2011 1 commit
  9. 24 Sep, 2010 1 commit
    • rtoy's avatar
      Add :decoding-error arg to compile-file to specify how decoding errors · 0b17eeac
      rtoy authored
      should be handled.
      
      compiler/main.lisp:
      o Add DECODING-ERROR slot to SOURCE-INFO structure.
      o MAKE-FILE-SOURCE-INFO requires a decoding error argument so the
        SOURCE-INFO structure can be properly initialized.
      o Add :DECODING-ERROR keyword arg to COMPILE-FILE to specify how
        decoding errors are handled.  Default is T, which means to signal an
        error.
      
      compiler/fndb.lisp:
      o Tell compiler about the new parameter.
      
      general-info/release-20c.txt:
      o Document change.
      0b17eeac
  10. 15 Sep, 2010 1 commit
  11. 01 Jun, 2010 1 commit
  12. 20 Apr, 2010 1 commit
  13. 19 Apr, 2010 1 commit
  14. 03 Apr, 2010 1 commit
  15. 19 Mar, 2010 1 commit
  16. 18 Mar, 2010 1 commit
    • rtoy's avatar
      Make CMUCL signal a cerror if we try to redefine a slot accessor. If · bd3d965b
      rtoy authored
      continued, the accessor is redefined.  Previously, a warning was
      printed and the structure was (mostly) undefined.
      
      compiler/proclaim.lisp:
      o Add new function NOTE-IF-ACCESSOR to check if we're redefining a
        slot accessor.  If so, signal a cerror, and redefine if continued.
      o Adjust DEFINE-FUNCTION-NAME to call NOTE-IF-ACCESSOR.
      
      compiler/main.lisp:
      o Make COMPILE-FIX-FUNCTION-NAME call NOTE-IF-ACCESSOR to catch
        attempts to redefine a slot-accessor.
      
      code/macros.lisp:
      o Move call to C::DEFINE-FUNCTION-NAME to the top of C::%%DEFUN before
        we set the fdefinition.   This allows us to give up before modifying
        anything if we choose not to redefine the slot accessor.
      bd3d965b
  17. 16 Mar, 2010 1 commit
  18. 14 Mar, 2010 1 commit
  19. 15 Feb, 2010 1 commit
  20. 22 Jan, 2010 1 commit
  21. 11 Jun, 2009 1 commit
  22. 01 Jul, 2005 1 commit
  23. 13 Jun, 2005 1 commit
    • rtoy's avatar
      Save xref information to fasls. · 624c3dc2
      rtoy authored
      This is done by faking it.  The file being compiled is compiled as
      usual, but we append fake forms to the file as if they came from the
      file.  These fake forms insert the necessary information into the xref
      databases when the fasl is loaded.
      
      To support this feature, we also updated COMPILE-FILE to recognize the
      :xref keyword arg.  Set this to non-NIL to enable computing and saving
      xref information.
      
      code/exports.lisp:
      o Update XREF exports
      
      compiler/fndb.lisp:
      o Update with new definition of COMPILE-FILE.
      
      compiler/main.lisp:
      o Append fake forms to the file being compiled to save xref
        information to the fasl.  This clears out any xref info we might
        have for the file, and inserts the necessary xref information into
        the database.
      o Add :XREF keyword arg to COMPILE-FILE.  Default value of :XREF is
        C::*RECORD-XREF-INFO*.
      
      compiler/xref.lisp:
      o Add function to invalidate xref info for a given namestring, so we
        can reset the info when a fasl with xref info is loaded.
      o Add a function to find all xref information for a given pathname.
        Used for saving xref info to a fasl.
      624c3dc2
  24. 16 Dec, 2004 1 commit
    • rtoy's avatar
      Enable loop analysis code. But the default is loop analysis is not · be26c9f9
      rtoy authored
      done, because we don't do anything with the loop results.
      
      ir1util.lisp:
      	o Make sure component initializes the outer-loop slot of the
      	  component.
      
      main.lisp:
      	o Add defvar *loop-analyze*, defaulting to NIL.
      	o Run loop analysis code when *loop-analyze* is T.
      
      node.lisp:
      	o Make the outer-loop slot of a component a required arg and
      	  adjust the declared type appropriately.
      
      represent.lisp:
      	o Add ASSIGN-TN-DEPTHS function to assign loop depths to TNs.
      
      vop.lisp:
      	o Forgot to add the loop-depth slot for TNs.
      be26c9f9
  25. 26 Oct, 2004 1 commit
  26. 10 May, 2004 2 commits
  27. 06 Apr, 2004 1 commit
    • 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
  28. 16 Jan, 2004 1 commit
  29. 02 Dec, 2003 1 commit
  30. 11 Aug, 2003 1 commit
  31. 15 Jul, 2003 1 commit
  32. 12 May, 2003 1 commit
    • 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
  33. 11 Apr, 2003 1 commit
    • 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
  34. 31 Mar, 2003 1 commit
    • gerd's avatar
      Name local functions (FLET ...) or (LABELS ...). · cf3f726a
      gerd authored
      	* compiler/ir1tran.lisp (*current-function-names*): New variable.
      	(find-lexically-apparent-function): Use lexenv-find-function.
      	(ir1-convert): Likewise.
      	(ir1-convert-lambda): Bind *current-function-names*.
      	(do-macrolet-stuff): Likewise.
      	(extract-flet-variables): Determine function name from
      	(%cleanup-function): Use lexenv-find-function.
      
      	* compiler/main.lisp (compile): Bind *current-function-names*.
      
      	* compiler/macros.lisp (lexenv-find-function): New function.
      
      	* code/fdefinition.lisp (flet, labels): Define function names.
      
      	* pcl/walk.lisp (environment-function): Activate code for
      	handling flet/labels function names.
      cf3f726a
  35. 05 Feb, 2003 1 commit
    • emarsden's avatar
      Added a cross-referencing facility to the compiler. · 5383aa5f
      emarsden authored
      The new XREF package exports function WHO-CALLS, WHO-REFERENCES, WHO-BINDS
      and WHO-SETS. These return structures of type XREF-CONTEXT, which contain
      the name of the referencing context, the file it was referenced from (or NIL
      when compiling from the toplevel), and the source-position in that file.
      
      Also change the names of lambda nodes in IR1 for macros and compiler-macros
      to be lists of the form
      
         (:macro macro-name)
         (:compiler-macro macro-name)
      
      instead of strings of the form "DEFMACRO MACRO-NAME".
      
      Documentation has been added to the User's Manual.
      
      This change shouldn't cause any bootstrapping problems when building.
      5383aa5f
  36. 21 Jan, 2003 1 commit
    • toy's avatar
      From Eric Marsden: · 7b973467
      toy authored
          From a recent thread on comp.lang.lisp, it seems that CMUCL is non
          conforming in the way that it handles the coalescing of constants in
          the functions EVAL and COMPILE:
      
             Literal objects appearing in code processed by the compile
             function are neither copied nor coalesced. The code resulting
             from the execution of compile references objects that are eql
             to the corresponding objects in the source code.
      7b973467
  37. 06 Jan, 2003 1 commit