Skip to content
Snippets Groups Projects
  1. Dec 17, 2005
  2. Dec 14, 2005
  3. Dec 12, 2005
  4. Dec 11, 2005
    • rtoy's avatar
      Remove unused code. · 34ecaeba
      rtoy authored
      34ecaeba
    • rtoy's avatar
      Make ppc port look a little more like sparc by making · 903edb2a
      rtoy authored
      fdefn-raw-addr-slot actually hold a tagged pointer instead of the raw
      address.  Not sure if this is good or not, but making it like sparc
      makes ppc a little easier.
      
      Might need a cross-compile; the 2005-12-1-ppc cross-compile script
      works fine.
      
      assembly/ppc/arith.lisp:
      o Static functions are now tagged, so need to adjust address before
        branching to them.
      
      compiler/generic/new-genesis.lisp:
      o Fill fdefn-raw-addr-slot with the tagged address instead of
        converting to untagged.
      
      compiler/ppc/call.lisp:
      o fdefn-raw-addr-slot is tagged, so need to adjust it before branching
        to function.
      
      compiler/ppc/cell.lisp:
      o No need to adjust function address before storing it in the
        fdefn-raw-addr-slot.
      
      compiler/ppc/static-fn.lisp:
      o Static functions are tagged, so need to adjust address before
        branching to them.
      
      lisp/gc.c:
      o Don't need scav_fdefn, because the fdefn is a tagged object now.
      
      lisp/ppc-assem.S:
      o Make undefined_tramp and closure_tramp be tagged instead of
        untagged.
      
      lisp/purify.c
      o RAW_ADDR_OFFSET is 0 now, like sparc.
      903edb2a
    • rtoy's avatar
      o Change :cmu19a to :cmu19c · 6d2d0b3b
      rtoy authored
      o Hack to make move-double-to-int-arg available in OLD-PPC and PPC
        packages.   (Don't know why this is needed but it was.)
      6d2d0b3b
    • rtoy's avatar
      The boxed register reg_FDEFN is r10, but r10 is one of the registers · caf495ce
      rtoy authored
      used in the C calling convention, so it's a bad idea to have reg_FDEFN
      be r10.
      
      So, make r10 be the new unboxed register reg_NL7 and replace reg_L2
      with reg_FDEFN.  (I was too lazy to renumber all registers, and I
      don't think it matters where reg_FDEFN is.)
      
      A simple cross-compile is needed.  Use boot-2005-12-1-ppc.lisp for the
      cross-compile script.
      
      compiler/ppc/vm.lisp:
      o Make old FDEFN be the new unboxed register NL7.
      o Rename L2 to be FDEFN, removing L2 complete.
      
      lisp/ppc-assem.S:
      o reg_L2 no longer exists, so don't use it.
      
      lisp/ppc-lispregs.h:
      o Make the corresponding changes here that were made in vm.lisp.
      
      bootfiles/19c/boot-2005-12-1-ppc.lisp:
      o Simple cross-compile script for this change.
      caf495ce
  5. Dec 09, 2005
    • rtoy's avatar
      Fix bug reported by Drew McDermott, cmucl-help, 2005/12/07. · 483afea5
      rtoy authored
      (defun spunk (a b)
         (let (k m p q)
            (multiple-value-setq
               (k m p q)
              (the (values t t t t)
                (punk a b)))))
      
      
      Remove the assertion that the values type must have no required args
      and adjust maybe-negate-check appropriately.  (This last from Alexey
      Dejneka.)
      483afea5
  6. Dec 06, 2005
  7. Dec 05, 2005
  8. Dec 04, 2005
  9. Dec 01, 2005
  10. Nov 30, 2005
  11. Nov 29, 2005
  12. Nov 20, 2005
    • rtoy's avatar
      Fix the long-long callback issues reported by Luis Oliveira, · df0e56dc
      rtoy authored
      cmucl-imp, 2005/11/02.
      
      o long-long args to callbacks were getting the wrong value because
        both halves were getting written to the same memory location when
        saving register args to memory.
      o A long-long return value was getting word-swapped; ppc is
        big-endian, not little-endian.
      df0e56dc
  13. Nov 18, 2005
  14. Nov 17, 2005
    • rtoy's avatar
      Fix up issues with calling varargs functions. (There is probably a · 806c63c5
      rtoy authored
      better solution, but this works.)  Although we don't have to, we
      always copy float args to an int register or stack.
      
      compiler/aliencomp.lisp:
      o Clean up and comment what we're doing here for ppc.
      o Use the new MOVE-{SINGLE,DOUBLE}-TO-INT vops to make the float go to
        the right integer register or stack location.
      
      compiler/ppc/c-call.lisp:
      o Add comments
      o Make the float :arg-tn methods handle storing of floats to the int
        stack.
      
      compiler/ppc/float.lisp:
      o Add MOVE-{SINGLE,DOUBLE}-TO-INT vops to copy a float to an int or
        stack.
      806c63c5
  15. Nov 15, 2005
  16. Nov 14, 2005
  17. Nov 13, 2005
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
Loading