Skip to content
  1. Apr 21, 2013
  2. Apr 20, 2013
  3. Sep 01, 2012
    • Raymond Toy's avatar
      Clean up RCS ids · eeab7066
      Raymond Toy authored
       * Get rid of the RCS Header stuff.  They're meaningless in git.
       * Add public domain comment to some of the files if the only comment
         was the RCS header.
      eeab7066
  4. Aug 10, 2012
    • Raymond Toy's avatar
      src/lisp/os.h: · c07cc020
      Raymond Toy authored
       src/lisp/gencgc.c:
       * Move the macros for fpu buffers from gencgc.c to here.
       src/lisp/x86-arch.c:
       * Use the new save_fpu_state instead of fpu_save.  And apply to all
         OSes.
      c07cc020
  5. Jul 18, 2012
    • Raymond Toy's avatar
      Fix ticket:61, using option 2. · 40b532c5
      Raymond Toy authored
      src/lisp/gencgc.c:
      o Save and restore the FPU state in alloc().
      
      src/compiler/x86/alloc.lisp
      src/compiler/x86/array.lisp
      src/compiler/x86/call.lisp
      src/compiler/x86/float-sse2.lisp
      src/compiler/x86/float.lisp
      src/compiler/x86/move.lisp
      src/compiler/x86/sap.lisp:
      o Don't need to use :save-p anymore because the allocation routine
        saves an live registers anyway.  This improves code generation as
        well.
      
      src/general-info/release-20d.txt:
      o Update.
      40b532c5
  6. Jul 05, 2012
  7. Jun 15, 2012
  8. Jan 27, 2012
  9. Nov 04, 2011
  10. Sep 24, 2011
    • Raymond Toy's avatar
      Fix Trac ticket:46. · 44a8f0c7
      Raymond Toy authored
      Make the size of all spaces configurable from the command line.
      
      code/commandline.lisp:
      o Define the switches so lisp doesn't complain.
      
      general-info/lisp.1:
      o Document new switches.
      
      general-info/release-20c.txt:
      o Update
      
      lisp/Darwin-os.c
      lisp/FreeBSD-os.c
      lisp/Linux-os.c
      lisp/NetBSD-os.c
      lisp/backtrace.c
      lisp/cgc.c
      lisp/gencgc.c
      lisp/os-common.c
      lisp/ppc-validate.h
      lisp/purify.c
      lisp/solaris-os.c
      lisp/sparc-arch.c
      lisp/sparc-validate.h
      lisp/x86-validate.h:
      lisp/validate.c
      o Basically rename CONTROL_STACK_SIZE, BINDING_STACK_SIZE,
        READ_ONLY_SPACE_SIZE, and STATIC_SPACE_SIZE to control_stack_size,
        binding_stack_size, read_only_space_size, and static_space_size,
        respectively.
      
      lisp/coreparse.c
      o Check the space size in the core file against the allocated size.
        If the allocated space is too small, print an error message and
        exit.
      
      lisp/globals.c
      o Define new variables for the allocated size of spaces.
      
      lisp/globals.h
      o Declare the new variables for the size of the spaces.
      
      lisp/lisp.c
      o Set the default values of the spaces.
      o Parse the new command-line flags and set the space sizes.
      
      lisp/sunos-os.c:
      o Added os_init0 (that we forgot last time).
      
      lisp/x86-assem.S:
      o Change $CONTROL_STACK_END to GNAME(control_stack_end) to get the
        correct end of the stack.
      44a8f0c7
  11. Jan 09, 2011
    • rtoy's avatar
      Changes to support building on Mac OS X 10.6. When compiled on 10.6, · 0b2b8885
      rtoy authored
      the resulting binary still works on 10.5.
      
      lisp/Config.x86_darwin:
      o Add -m32 flag to build and link a 32-bit binary.
      
      lisp/Darwin-os.h:
      o Include <sys/ucontext.h> instead of <ucontext.h> to get rid of the
        error about deprecated functions in ucontext.h.
      
      lisp/gencgc.h:
      o Mac OS X defines PAGE_SIZE in a header and that conflicts with our
        name.  Rename our PAGE_SIZE to GC_PAGE_SIZE.
      
      lisp/gencgc.c:
      o Rename PAGE_SIZE to GC_PAGE_SIZE.
      0b2b8885
  12. Dec 22, 2010
  13. Jul 26, 2010
  14. Jul 22, 2010
  15. Jul 19, 2010
    • rtoy's avatar
      Merge changes from sparc-tramp-assem-2010-07-19. This moves · 30102669
      rtoy authored
      closure_tramp and undefined_tramp from the C side to the Lisp side via
      Lisp assembly routines.  (Simplifies things quite a bit for sparc.)
      
      Also includes some GC fixes for sparc and ppc to handle moving the pc,
      npc, lr, and ctr registers.  They need to be handled like the lip
      register.
      
      See bootfiles/20a/boot-2010-07-1-cross.lisp for instructions on how to
      bootstrap this change.  A basic cross-compile with a specific cross
      bootstrap file is needed.
      30102669
  16. Apr 01, 2010
    • rtoy's avatar
      Fix SSE2 bug when running · 5efbe364
      rtoy authored
      (defun testfn ()
        (let* ((i-gc-ed-u nil)
               (ext:*gc-notify-before* (lambda (a) (/ a 0.34d0))))
          (dotimes (i 100000)
            (setf i-gc-ed-u nil)
            (let* ((v1 (list (* 1d0 (random 10)) (* 1d0 (random 10))))
                   (v2 (list (* 1d0 (random 10)) (* 1d0 (random 10))))
                   (dot1 (reduce #'+ (mapcar #'* v1 v2)))
                   (dot2 (reduce #'+ (mapcar #'* v1 v2))))
              (when (/= dot1 dot2)
                (print `(gc ,i-gc-ed-u v1 ,v1 v2 ,v2 dot1 ,dot1 dot2 ,dot2)))))))
      
      Running this with sse2 would cuase dot1 and dot2 to sometimes be
      different.  We forgot to save the SSE2 state in call_into_lisp.
      
      (This bug was mentioned on comp.lang.lisp, http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/828371aa4800272c?hl=en#
      
      x86-assem.S:
      o Save and restore SSE2 state when running with SSE2 core.  (This
        might need more tweaking.  Should we use cpuid instead of looking at
        fpu_mode?)
      
      gencgc.c:
      o Save the SSE2 state, along with X87 state for SSE2 cores.
      5efbe364
  17. Dec 21, 2009
  18. Dec 18, 2009
  19. 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
      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
  20. 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
  21. 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
      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
  22. Jul 07, 2009
    • rtoy's avatar
      o Fix a compiler warning about inconsistent arg types. · c5b3b076
      rtoy authored
      o Fix some typos.
      o Clean up consecutive allocation heuristic:
        - Add comments to alloc_stats slots.
        - Removed regions_differ_count slot
        - Reset abandon_region_count when saved_region is updated.
      c5b3b076
  23. Jun 11, 2009
  24. Sep 16, 2008
  25. Sep 11, 2008
    • rtoy's avatar
      Enable gencgc page protection for x86/darwin. · 53ec2e7d
      rtoy authored
      gencgc.c:
      o Enable page protection
      
      Darwin-os.c:
      o Turn on sigbus_handler for x86/darwin.
      o Minor tweaks of sigbus_handler for x86/darwin.
      o Install the sigbus handler.
      53ec2e7d
  26. Apr 11, 2008
  27. Mar 19, 2008
  28. Mar 18, 2008
  29. Mar 16, 2008
  30. Mar 15, 2008
    • agoncharov's avatar
      Getting rid of some compiler warnings: · 44e0351e
      agoncharov authored
        * Eliminate `printf' format string and the following arguments
          conflicts.
      
        * A variable may be used uninitialized.
      
        * A variable may be defined but not used.
      44e0351e
  31. Jul 30, 2007
  32. Jul 26, 2007
  33. Jul 06, 2007
  34. May 30, 2007
    • rtoy's avatar
      This checkin adds some debugging code for the x86 heap corruption · f22fe508
      rtoy authored
      issue and also works around the heap corruption.  These are enabled if
      DEBUG_BAD_HEAP is #defined.
      
      gencgc.c:
      o Make print_ptr and verify_gc non-static so they can be used
        elsewhere.
      
      lisp.c:
      o Call verify_gc at startup (if enabled) so we can see the heap
        corruption.
      
      save.c:
      o Add debugging prints and stuff to see what's going on, if enabled.
      o The workaround is to skip over the call to
        update_dynamic_space_free_pointer in save().  See the comments there
        for more info.
      f22fe508