Skip to content
Snippets Groups Projects
  1. Jan 23, 2010
  2. Jan 22, 2010
  3. Dec 30, 2009
  4. Dec 22, 2009
  5. Dec 21, 2009
  6. Dec 18, 2009
  7. Dec 17, 2009
    • rtoy's avatar
      o Add linux support in other_space_p. · f0626999
      rtoy authored
      o Remove check for object < 0xf0000000 in scavenge.
      f0626999
    • rtoy's avatar
      code/unix.lisp: · e70c9348
      rtoy authored
      o Add UNIX-GETRLIMIT and appropriate constants (for solaris and
        darwin/x86)
      
      code/exports.lisp:
      o Export them.
      e70c9348
    • rtoy's avatar
      o Add another function to check for other places that can't be malloc · b7271901
      rtoy authored
        areas.  For sparc, this means anything below the end of the text
        section (to capture undefined_tramp and closure_tramp and some weird
        pointer object in the middle of call_into_c).  For darwin/x86, we
        ignore 0xffffffe9.  Needs to be checked on other OSes and
        architectures.
      o Move the switch statement of allowed static arrays into its own
        function.
      b7271901
  8. Dec 15, 2009
  9. Dec 11, 2009
  10. Dec 07, 2009
  11. Dec 06, 2009
    • rtoy's avatar
      o Have MAKE-STATIC-VECTOR push the weak pointer onto *STATIC-VECTORS* · 2ce6b09f
      rtoy authored
        instead of spreading it everywhere.
      o Add WITHOUT-GCING in MAKE-STATIC-VECTOR to make sure nothing moves.
        (Not sure this is necessary.)
      o Do the same in FREE-STATIC-VECTOR
      o Add WITHOUT-INTERRUPTS in FINALIZE-STATIC-VECTORS to make sure clear
        the weak pointer value and actually free the vector.
      2ce6b09f
  12. Dec 05, 2009
    • rtoy's avatar
      First cut at GCing static vectors, including static simple-arrays. · 45380dbb
      rtoy authored
      This is done by a simple mark-and-sweep GC of the static vectors.
      When scavenging the spaces, we mark any static vectors by setting the
      MSB of the header word.  After GC is done, an *after-gc-hooks*
      function finds all of the static vectors that are not marked and frees
      them.  For marked static vectors, we clear the mark bit.
      
      code/array.lisp:
      o Add *STATIC-VECTORS* to keep track of all static vectors that have
        been allocated.
      o Update MAKE-ARRAY
        - to allow generation of static simple unboxed arrays (1D arrays
          without an array header).
        - Push a weak pointer to the static vector onto *STATIC-VECTORS*
      o Add function FREE-STATIC-VECTOR
      o Add function FINALIZE-STATIC-VECTORS to free static vectors when
        they are no longer referenced.
      
      lisp/gencgc.c:
      o Update scavenge to check for static vectors.  If we find a static
        vector, mark the static vector by setting the MSB of the header
        word.
      45380dbb
  13. Dec 01, 2009
  14. Nov 30, 2009
    • rtoy's avatar
      Expand the docstring from MAKE-ARRAY. · d78414b9
      rtoy authored
      d78414b9
    • rtoy's avatar
      Add support for static arrays that are not moved by GC. This is based · 7badf899
      rtoy authored
      on an idea from Carl and Lynn Quam's foreign vector code that he sent
      many years ago.  The static arrays will be GCed if nothing references
      them.
      
      The static arrays are currently limited to strings, 8, 16, and 32-bit
      integers (signed and unsigned), single and double floats, and complex
      single and double floats.  Static arrays are not adjustable because
      adjusting an array can change the address if the array grows.  (Ok
      if the array shrinks, but not implemented.)
      
      To indicate a static array, the data portion of the vector header word
      is set to 1.  It is normally 0 for all other Lisp vectors.
      
      code/array.lisp:
      o Add :ALLOCATION keyword arg to MAKE-ARRAY to allow allocation of
        static vectors.  Do the appropriate thing for static arrays.
      o Add MAKE-STATIC-VECTOR.  This is Lynn's foreign vector stuff
        rewritten in Lisp instead of the original mix of Lisp and C.
      o Add STATIC-ARRAY-P to tell if an array is static or not.
      o Signal errors in MAKE-ARRAY and ADJUST-ARRAY for invalid options
        with static arrays.
      
      code/describe.lisp:
      o Indicate if the array is static.
      
      compiler/fndb.lisp:
      o Tell compiler about new keyword argument, :allocation, for
        MAKE-ARRAY.
      7badf899
  15. Nov 25, 2009
  16. Nov 21, 2009
  17. Nov 20, 2009
  18. Nov 10, 2009
  19. Nov 04, 2009
  20. Nov 02, 2009
    • rtoy's avatar
      Revert previous changes. They were supposed to go on · d01310f2
      rtoy authored
      amd64-dd-branch.
      d01310f2
    • rtoy's avatar
      Use the right instruction for amd64 to get the fp. · 695d7d4c
      rtoy authored
      695d7d4c
    • rtoy's avatar
      This large checkin brings the amd64 port up-to-date with the current · 2bafb654
      rtoy authored
      sources.  No real attempt has been made to make it work, but the
      cross-compile does create a kernel.core, and the C code compiles (on
      openSuSE 10.3).  The resulting kernel.core does not yet work.
      
      Use cross-x86-amd64.lisp as the cross-compile script.  This is
      intended to be cross-compiled using the 20a release for Linux, and
      only supports x87.  The sse2 support has not be ported yet.
      
      tools/cross-scripts/cross-x86-amd64.lisp:
      o Update cross-compile with some missing constants, and frob new
        symbols.
      
      tools/clean-target.sh:
      o Remove amd64f files too.
      
      code/pred.lisp:
      o Define predicates for double-doubles for bootstrapping to work
        around recursive known function problems with these predicates.
      
      code/sap.lisp:
      o Define int-sap with (unsigned-byte 64) type declaration.  (May not
        be needed?)
      
      code/unix-glibc2.lisp:
      o Build fails defining map_failed to (int-sap -1).  Just hard-wire to
        0 for now so we can build.
      
      compiler/float-tran.lisp:
      o Add missing conditional for %complex-double-double-float.
      
      compiler/amd64/float.lisp:
      o Merge double-double support for amd64.  Not really tested yet.
      
      compiler/amd64/parms.lisp:
      o Update to match x86 build.  In particular, get the space address
        correct and update the static symbols.
      
      compiler/amd64/type-vops.lisp:
      o DYLAN-FUNCTION-HEADER-TYPE no longer exists.
      
      compiler/amd64/vm.lisp:
      o Add double-double storage classes and register definitions.
      
      lisp/Config.amd64:
      o Bring in line with Config.x86 and friends.
      
      lisp/Linux-os.c:
      o Bring amd64 code up-to-date with x86/linux code.
      
      lisp/Linux-os.h
      o Need to include sys/ucontext.h to get ucontext defined.  (Why?)
      o Also define __USE_GNU so we get the register offsets in the ucontext
        defined.  (Why?)
      
      lisp/amd64-arch.c:
      o Change struct sigcontext to os_context_t.
      o Use SC_PC instead of context->sc_pc.
      o Merge some changes in from x86 version, like SC_EFLAGS.  May need
        more work.
      
      lisp/amd64-assem.s:
      o Use rbx instead of ebx for jmp.
      
      lisp/amd64-lispregs.h:
      o Define SC_REG, SC_PC, SC_SP using the new x86 style.
      
      lisp/backtrace.c:
      o Remove inline assembly for now until I figure out what the amd64
        version should be.
      
      lisp/gencgc.c:
      o Conditionalize out weak hash table support for now.
      
      lisp/gencgc.h:
      o Set PAGE_SIZE for amd64.  (Is 4096 right?)
      
      lisp/globals.h:
      o Export current_dynamic_space_free_pointer and
        current_auto_gc_trigger like for x86.
      2bafb654
  21. Oct 29, 2009
  22. Oct 28, 2009
    • rtoy's avatar
      Revert previous change. Instead, make the arithmetic vops for mixing · 69e201b4
      rtoy authored
      complex and floats ensure that the float is converted to a complex
      with the correct imaginary part.  The failed tests from Maxima
      (rtest_gamma) now pass.  (Almost.  The required tolerance is a little
      too tight for sse2, mostly due to a slightly inaccurate exp function.
      But that's libc's fault, not CMUCL's fault.)
      69e201b4
    • rtoy's avatar
      o Fix critical issue where the conversion of integers to floats left · 4e386db8
      rtoy authored
        junk in the high part of the xmm register.  This causes some tests
        in maxima to fail.
      o Same fix for adding/subtracting a complex and a float.
      
      The vops need to be examined carefully to make sure we keep the
      invariant that the high part is zero for double-float values in XMM
      registers.
      4e386db8
  23. Oct 20, 2009
Loading