Skip to content
Snippets Groups Projects
  1. Nov 14, 2005
  2. Nov 13, 2005
  3. Nov 12, 2005
    • rtoy's avatar
      CMUCL wasn't properly calling C varargs functions because it wasn't · 3cce7d43
      rtoy authored
      copying float args to the int registers in addition to the float
      regs.  This really only needs to be done for varargs functions, but we
      don't have a way of indicating that right now.  So always copy.
      
      A simple test is
      
      (alien:alien-funcall
        (alien:extern-alien "printf"
                             (function c-call:void c-call:c-string
                             c-call:double))
        "%f" pi)
      
      Still needs some work.
      
      compiler/ppc/c-call.lisp:
      o Make the :arg-tn method for single- and double-float return a list
        consisting of the Tn for the float register to use and the integer
        register(s) in which to save the float.
      
      
      compiler/aliencomp.lisp:
      o Tell the ir2-convert function for %alien-funcall how to handle the
        list of TN's that the :arg-tn method might return.  Copy the float
        value to the integer register(s) appropriately.
      3cce7d43
    • rtoy's avatar
      277dded1
  4. Nov 11, 2005
    • rtoy's avatar
      Alignment of objects inside of structures is weird on Mac OS X. The · 00284c2f
      rtoy authored
      first slot gets the natural alignment, but all subsequent slots get
      4-byte alignment, even if the object is a double or long long.
      
      o Add EMBEDDED-ALIGNMENT to compute this alignment of embedded
        objects.
      o Modify PARSE-ALIEN-RECORD-FIELDS to cause the appropriate alignment
        of slots in a struct.
      00284c2f
    • rtoy's avatar
      Fix bug in peek-char for Gray streams. Reported by Walter Pelissero, · 698807d6
      rtoy authored
      cmucl-imp, 2005-11-10, with fix.
      
      o Apply Walter's fix, because it was missing the fifth arg to
        GENERALIZED-PEEKING-MECHANISM.
      o Change GENERALIZED-PEEKING-MACHINISM to use keyword args instead of
        optional args, to prevent this kind of bug.
      698807d6
  5. Nov 10, 2005
    • rtoy's avatar
      compiler/globaldb.lisp: · c9afe45f
      rtoy authored
      o Add a documentation type for the typed-structure class.
      
      pcl/cmucl-documentation.lisp:
      o Use the new type to add documentation support for structures of type
        list and vector.
      c9afe45f
  6. Nov 09, 2005
    • rtoy's avatar
      Add more precise checking for results not used for functions like · 26acdd0b
      rtoy authored
      NREVERSE and DELETE.  When given vectors, the vectors are modified
      in-place, so we don't have to use the result.
      
      compiler/fndb.lisp:
      o Functions like NREVERSE and DELETE that take sequences need to check
        to see if the sequence might be a list or not before warning about
        if the result is not used.
      o MERGE needs a fancier :result-not-used function, so disable that for
        now.
      
      compiler/knownfun.lisp:
      o LIST-FUNCTION-RESULT-NOT-USED creates a function to check is the
        specified arg is a list and determines if the result is used or not.
      26acdd0b
    • rtoy's avatar
      2b1fb181
    • rtoy's avatar
      Oops. It helps actually to check to see if the result of SORT or · e01fc306
      rtoy authored
      ADJUST-ARRAY is used or not.
      e01fc306
    • rtoy's avatar
      Oops. Remove unused function, and make sure we have an array type · 27533ab2
      rtoy authored
      before asking if it's a complex array.
      27533ab2
    • rtoy's avatar
      Change how the important-result stuff is implemented. We no longer · ec85d432
      rtoy authored
      use an IR1 attribute but allow arbitrary functions to determine if the
      result is used or not.  This allows us to handle SORT and ADJUST-ARRAY
      depending on the args.
      
      Use 19c/boot-2005-11-1.lisp to bootstrap this change.
      
      compiler/knownfun.lisp:
      o Remove IMPORTANT-RESULT attribute.
      o Add new slot to function-info the hold the function to indicate if
        the result is not used.
      o Adjust %defknown with a new keyword arg :result-not-used for the new
        slot.
      o Add functions for the result-not-used arg for
        o SORT-RESULT-NOT-USED-P: non-NIL if the sequence might be a list.
        o ADJUST-ARRAY-RESULT-NOT-USED-P: non-NIL if the array is not known
          to be adjustable.
        o FUNCTION-RESULT-NOT-USED-P:  non-NIL if function result must be
          used (for functions like nreverse).
      
      compiler/ir1opt.lisp:
      o Remove now unused function CHECK-IMPORTANT-RESULT
      o Add check in IR1-OPTIMIZE-COMBINATION to see if function result
        should be used.
      
      compiler/fndb.lisp:
      o Remove IMPORTANT-RESULT attribute and replace with :result-not-used.
      ec85d432
  7. Nov 08, 2005
    • rtoy's avatar
      o Make HEAD version of release-19c.txt match the actual release-19c.txt · 9a862e13
      rtoy authored
        in the 19c release.
      o Move the new stuff to the new file, release-19d.txt.
      9a862e13
    • rtoy's avatar
      Add an extension to allow printing pathnames using the syntax · 527266cd
      rtoy authored
      #P(<make-pathname args).  So most pathnames can be printed readably,
      even if they have weird components.  But we don't handle search-lists
      and patterns very well because we don't have readable syntax for
      those.
      
      code/sharpm.lisp:
      o Make the #P reader accept lists and apply make-pathname on them to
        create the pathname
      
      code/pathname.lisp:
      o If a pathname has no namestring, then try to print out the pathname
        object using #P(foo) syntax, if possible.  If not possible, just
        print out the pathname unreadably, as we used to.
      o Put some conditional newlines when printing out unprintable
        pathnames so it wraps a bit better.  (Needs work.)
      527266cd
  8. Nov 07, 2005
  9. Nov 04, 2005
  10. Nov 03, 2005
  11. Oct 26, 2005
  12. Oct 25, 2005
    • rtoy's avatar
      Compiler was not handling things like the following: · 680389bc
      rtoy authored
      (defun zot ()
        (flet ((%f (&key)
      	   :bad))
          (%f nil nil)))
      
      This should produce a compile-time warning and a run-time error that
      NIL is not a valid keyword.
      
      To fix this, in CONVERT-MORE-CALL listify the name so we can
      distinguish no LOSER's or a LOSER whose name is NIL.
      680389bc
  13. Oct 24, 2005
    • rtoy's avatar
      Fix ansi-test logical-pathname.error.2 which was failing because · 98ab1c48
      rtoy authored
      LOGICAL-PATHNAME-NAMESTRING-P wasn't defined anywhere.
      
      o Add LOGICAL-PATHNAME-NAMESTRING-P and adjust LOGICAL-PATHNAME to use
        it.
      
      o Print out identity when printing logical-hosts.  (This unrelated
        change makes it easier to see that the user's BOGUS logical host
        isn't the same as the BOGUS logical host used in
        *LOGICAL-PATHNAME-DEFAULTS*.
      98ab1c48
  14. Oct 22, 2005
  15. Oct 21, 2005
  16. Oct 20, 2005
    • rtoy's avatar
      Fix some issues with two-arg log function. (log 17 10f0), (log 17f0 · 0f17dd30
      rtoy authored
      10), and (log 17 10) returned different single-float results.  I think
      this is allowed by ANSI CL, but I think it's unfortunate.
      
      Therefore, try to apply float contagion to the arguments before
      computing the log function.  Also, if both args are single-floats or
      rationals, we coerce them to double-floats before computing the
      result.  This makes (log 17 10) = (log 17.0 10).
      
      There are other cases still to be considered.
      0f17dd30
  17. Oct 19, 2005
    • rtoy's avatar
      Bootstrap file for the port of SBCL'S support for detecting when · d3e339fa
      rtoy authored
      destructive functions (such as nreverse) modify constant args and for
      warning when the result of destructive functions is not used.
      d3e339fa
    • rtoy's avatar
      Port SBCL'S support for detecting when destructive functions (such as · 31ddb605
      rtoy authored
      nreverse) modify constant args and for warning when the result of
      destructive functions is not used.
      
      Detecting modification of constant args is done by adding a new IR1
      transformation that checks that a function is not destructively
      modifying constants or literals.
      
      A new IR1 attribute, important-result, is used to determine if the
      result of a function should be used instead of discarded.  (Note:
      this means some functions are not detected.  This should probably be
      implemented as another transform so the compiler can detect those cases.)
      
      code/error.lisp:
      o Add new condition CONSTANT-MODIFIED.
      
      compiler/fndb.lisp:
      o Note destructive functions that should not modify constant args
      o Note destructive functions whose results should be used.
      
      compiler/ir1opt.lisp:
      o Add new function CHECK-IMPORTANT-RESULT to check if the result is
        used.
      o Update IR1-OPTIMIZE-COMBINATION to check if a function destructively
        modifies constant args or if the result of a destructive function is
        not used.
      
      compiler/knownfun.lisp:
      o Add new IR1 attribute, IMPORTANT-RESULT, to indicate that the result
        of a function should be used.
      o Add new FUNCTION-INFO slot, DESTROYED-CONSTANT-ARGS.  This holds a
        function for computing the constant or literal arguments which are
        destructively modified by the function.
      o Add support functions for DESTROYED-CONSTANT-ARGS functions.
      31ddb605
  18. Oct 18, 2005
Loading