Skip to content
Snippets Groups Projects
  1. May 08, 2003
    • gerd's avatar
      * src/compiler/ir1tran.lisp (the) <IR1 translator>: The spec · 8a37f80c
      gerd authored
      	&rest nil means a fixed number of values.
      8a37f80c
    • gerd's avatar
      Fix problems with THE detected by Paul Dietz' tests. This also · 2e8488e0
      gerd authored
      	fixes the problem that CMUCL generated RETURN-MULTIPLE without a
      	good reason.
      
      	* src/compiler/checkgen.lisp (values-types-asserted): Use
      	coerce-to-values again.  Add fixme comments and #+nil code for
      	known problems; these aren't new problem, though.
      
      	* src/code/type.lisp (coerce-to-values): Don't add &rest t,
      	which is the business of THE.
      	(values) <type translator>: Disallow &key and &allow-other-keys.
      
      	* src/compiler/ir1tran.lisp (the) <IR1 translator>: Add &rest t
      	where appropriate, or-in null type into required types, for
      	missing values.
      2e8488e0
  2. Apr 30, 2003
  3. Apr 22, 2003
    • gerd's avatar
      Fix ANSI test SPECIAL-OPERATOR.2. · d6beb116
      gerd authored
      	* src/compiler/ir1tran.lisp (declare) <ir1 translator>: Remove.
      	(ir1-convert): Signal an error for (declare ...).
      d6beb116
  4. Apr 21, 2003
  5. Apr 19, 2003
    • gerd's avatar
      Add destructuring support to &REST, &BODY, &WHOLE. Detected · 1ca1159c
      gerd authored
      	by Paul Dietz' ANSI tests.
      
      	* src/code/defmacro.lisp (parse-defmacro-lambda-list): Add
      	&parse-body, replacing &body (<body> <decls> <doc>).  Add
      	destructuring support to &rest, &body, &whole.
      
      	* src/code/eval.lisp (lambda-list-keywords): Add &parse-body.
      
      	* src/code/exports.lisp ("EXTENSIONS"): Export &parse-body.
      
      	* src/hemlock/table.lisp (do-words, with-folded-string):
      	* src/hemlock/macros.lisp (with-pop-up-display):
      	* src/compiler/macros.lisp (deftransform):
      	* src/compiler/ir1tran.lisp (symbol-macrolet, let, locally)
      	(let*, flet, labels) <ir1-translator>:
      	* src/code/package.lisp (do-symbols, do-external-symbols)
      	(do-all-symbols):
      	* src/code/macros.lisp (defun, prog, prog*, with-open-file)
      	(with-open-stream, with-input-from-string)
      	(with-output-to-string, do, do*):
      	* src/code/mach.lisp (gr-bind):
      	* src/code/extensions.lisp (do-anonymous, do-hash, defun-cached):
      	Use &parse-body instead of &body.
      1ca1159c
  6. Apr 16, 2003
  7. Apr 14, 2003
    • toy's avatar
      Allow the debugger to return a value from a function. Based on work · 9bf565fe
      toy authored
      posted to cmucl-imp by Fredrik Kuivinen and the implementation in
      SBCL.  A catch tag is wrapped around the function to which the
      debugger can throw to to return a new value.
      
      This is enabled only if debug is more important than both speed
      and space.
      9bf565fe
  8. 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
  9. Apr 08, 2003
  10. Mar 31, 2003
    • 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
  11. Mar 30, 2003
  12. Mar 22, 2003
    • gerd's avatar
      * bootfiles/18e/boot[12].lisp: Bootstrap files for the lisp:class · a1e3ed93
      gerd authored
      = pcl:class part.  To get it booted from 18e, cross-compile using
      boot1.lisp as bootstrap.lisp in pmai's build scripts, then do a
      normal compile with boot2.lisp as bootstrap.lisp with the
      resulting Lisp.
      
      * code/byte-interp.lisp, code/defstruct.lisp, code/describe.lisp:
      * code/error.lisp, code/exports.lisp, code/hash-new.lisp:
      * code/hash.lisp, code/macros.lisp, code/misc.lisp:
      * code/package.lisp, code/pred.lisp, code/sharpm.lisp, code/type.lisp:
      * compiler/dump.lisp, compiler/fndb.lisp, compiler/globaldb.lisp:
      * compiler/proclaim.lisp, compiler/typetran.lisp, compiler/xref.lisp:
      * compiler/generic/primtype.lisp, compiler/generic/vm-type.lisp:
      Changes for to use kernel::class etc.
      
      * code/class.lisp (toplevel): Shadow class, built-in-class etc.
      (class): Give it conc-name %class-.
      (toplevel) [#+bootstrap-lisp-class=pcl-class]: Define old accessors.
      (everywhere): Use new class accessors.
      
      * compiler/generic/vm-fndb.lisp (%make-instance): Change from
      unsafe to flushable and movable.
      
      * code/ntrace.lisp (expand-trace, untrace): Changes for method
      tracing.
      
      * code/profile.lisp (profile, profile-all, unprofile): Method
      profiling.
      
      * pcl/*.text, pcl/bench.lisp, pcl/extensions.lisp:
      * pcl/fast-init.lisp, pcl/precom1.lisp, pcl/precom4.lisp:
      * pcl/structure-class.lisp, pcl/user-instances.lisp:
      Removed.
      
      * tools/pclcom.lisp: Changes for my PCL and lisp:class =
      pcl::class.
      a1e3ed93
  13. Feb 05, 2003
    • gerd's avatar
      * compiler/ir1tran.lisp (extract-flet-variables): Use · 976290ac
      gerd authored
      	valid-function-name-p for determining the block name.
      976290ac
    • 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
    • gerd's avatar
      Generalized function names. · a1a66688
      gerd authored
      	* code/fdefinition.lisp (*valid-function-names*): New variable.
      	(%define-function-name-syntax, valid-function-name-p): New
      	functions.
      	(define-function-name-syntax): New macro.
      	(toplevel): Define the syntax of setf function names.
      	(fdefinition-object): Use valid-function-name-p.
      
      	* compiler/proclaim.lisp (check-function-name): Use
      	valid-function-name-p.
      
      	* compiler/ir1tran.lisp (function): Use valid-function-name-p.
      
      	* code/profile.lisp (%report-times): Use valid-function-name-p.
      
      	* code/macros.lisp (defun): Use valid-function-name-p.
      
      	* code/eval.lisp (eval): Use valid-function-name-p.
      
      	* code/describe.lisp (describe-aux, describe-function-name):
      	Use valid-function-name-p.
      
      	* code/exports.lisp ("EXTENSIONS"): Add
      	define-function-name-syntax and valid-function-name-p.
      a1a66688
  14. Jan 06, 2003
  15. Dec 13, 2002
    • toy's avatar
      MACROLET needs to be expanded in the lexical environment, not the null · db9cd6b5
      toy authored
      environment.  Adds an optional environment argument to
      COMPILE-FOR-EVAL and INTERNAL-EVAL.  DO-MACROLET-STUFF then uses
      INTERNAL-EVAL (instead of COERCE) to create the local macro function
      in a suitable environment.
      
      This is a "minimalistic fix for CMUCL" from Gerd Moellmann.
      db9cd6b5
  16. Dec 07, 2002
    • toy's avatar
      From Eric Marsden: · 2a176aec
      toy authored
         - fixes to the internal consistency of IR2, ported from the
           corresponding changes to SBCL by Alexey Dejneka
      
         - modification of the internal IR1 consistency checking code to
           accept objects of type HEAP-ALIEN-INFO in the *FREE-VARIABLES*
           list.
      
      
        With this change, it is possible to rebuild with
        c::*check-consistency* enabled, with only the "Unseen function ~S in
        ~S." check disabled.
      2a176aec
  17. Nov 25, 2002
  18. Nov 21, 2002
  19. Aug 12, 2002
  20. Aug 09, 2002
  21. Jan 27, 2002
  22. Oct 31, 2001
  23. Oct 28, 2001
    • pw's avatar
      From Eric Marsden: · 98495f92
      pw authored
      Patch to correct non-ANSI use of symbol-macrolet in compiler backend.
      Also fix symbol-macrolet to disallow binding to special variables.
      ----------------------------------------------------------------------
      98495f92
  24. Oct 15, 2001
  25. Jun 03, 2001
    • pw's avatar
      From Tim Moore: · a0c0de03
      pw authored
      Arrange for ANSI behaviour regarding DEFMACRO processing. It has
      compile-time effect only at top level now.
      a0c0de03
  26. Mar 04, 2001
  27. Mar 03, 2001
  28. Mar 01, 2001
  29. Oct 06, 2000
  30. Oct 04, 2000
  31. Aug 10, 2000
  32. Jul 13, 2000
    • dtc's avatar
      o Fix the generation of new variable leafs by the proclaim functions. · b8bbec47
      dtc authored
        The new variables were being created by copying the old leafs which
        incorrectly copied over any refs, or sets etc, which should have been
        cleared in the new leafs.
      
      o Fix the handling of the 'special identifier in the proclaim IR1
        translator which had been incorrectly using the identifier rather than
        the variable name when updating the hash tables.
      b8bbec47
  33. Jul 07, 2000
  34. Jul 06, 2000
    • dtc's avatar
      Reworking of the values-type system to overcome a number of inconsistencies · daf333f4
      dtc authored
      causing problems:
      
      o Redefine coerce-to-values to convert a single value type into (values type),
        rather than the former definition (values type &rest t). A single value
        type such as fixnum is now equivalent to (values fixnum). Values-type-union
        and values-type-intersection will canonicalise values types with a
        single value such as (values fixnum) back to a single value type
        such as fixnum.
      
      o Now when the compiler makes assertions for the first value of
        continuations that may be generating multiple values it asserts the
        type as (values type &rest t), or as (value &optional type &rest t) if
        it is not sure that the continuation does generate a value.
      
      o Enhance the type check generation to better handle the now common
        values types with optional and rest arguments. Add the new function
        Values-types-asserted which converts asserted optional and rest
        arguments to required arguments that have been proven to be delivered,
        Thus an assertion such as (values &optional fixnum &rest t) will
        generate a fixnum type check if the proven type if (values t).
      
      o The compiler is now far more likely to pickup attempts to use an
        assertion to select a subset of values. For example
        (the (values fixnum) (values x y)) will generated a compiler warning.
      
      o Update single values type assertions where appropriate to clarify that
        the received values may be optional or that multiple values may be
        received. For example, a macro argument which had been asserted to be
        a list via (the list ,...) would now be asserted to be
        (the (values &optional list &rest t)) etc.
      
      o Have the IR1 translator for THE convert single value types into
        (values &optional type &rest t) so that code such as
        (the fixnum (values x y)) will still work acceptably. This does not
        restrict the possible type assertions as the values types may be used
        and are not modified.
      daf333f4
  35. 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
  36. 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
  37. Feb 25, 1999
Loading