/[cmucl]/src/lisp/gencgc.c
ViewVC logotype

Log of /src/lisp/gencgc.c

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (annotate)
Sticky Tag:

Revision 1.112 - (view) (annotate) - [select for diffs]
Sun Jan 9 00:12:36 2011 UTC (3 years, 3 months ago) by rtoy
Branch: MAIN
CVS Tags: GIT-CONVERSION, HEAD, snapshot-2011-02, snapshot-2011-03, snapshot-2011-04, snapshot-2011-06, snapshot-2011-07, snapshot-2011-09
Changes since 1.111: +81 -81 lines
Diff to previous 1.111 , to selected 1.11.2.4
Changes to support building on Mac OS X 10.6.  When compiled on 10.6,
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.

Revision 1.111 - (view) (annotate) - [select for diffs]
Wed Dec 22 02:12:52 2010 UTC (3 years, 3 months ago) by rtoy
Branch: MAIN
CVS Tags: cross-sol-x86-merged, snapshot-2011-01
Changes since 1.110: +51 -17 lines
Diff to previous 1.110 , to selected 1.11.2.4
Merge changes from cross-sol-x86-2010-12-20 which adds support for
Solaris/x86.  There should be no functional changes for either other
x86 ports or for the sparc port.

Revision 1.110.6.5 - (view) (annotate) - [select for diffs]
Mon Dec 20 23:32:55 2010 UTC (3 years, 3 months ago) by rtoy
Branch: cross-sol-x86-branch
CVS Tags: cross-sol-x86-2010-12-20
Changes since 1.110.6.4: +15 -15 lines
Diff to previous 1.110.6.4 , to branch point 1.110 , to next main 1.112 , to selected 1.11.2.4
Get rid of compiler warnings (SunStudio 12.2/x86) about doing
arithmetic with void pointers.  Replace with char pointers.

Revision 1.110.6.4 - (view) (annotate) - [select for diffs]
Mon Dec 20 13:53:40 2010 UTC (3 years, 3 months ago) by rtoy
Branch: cross-sol-x86-branch
Changes since 1.110.6.3: +2 -2 lines
Diff to previous 1.110.6.3 , to branch point 1.110 , to selected 1.11.2.4
Oops.  We should check that closure->function is not zero.

Revision 1.110.6.3 - (view) (annotate) - [select for diffs]
Mon Dec 20 13:25:22 2010 UTC (3 years, 3 months ago) by rtoy
Branch: cross-sol-x86-branch
Changes since 1.110.6.2: +2 -2 lines
Diff to previous 1.110.6.2 , to branch point 1.110 , to selected 1.11.2.4
Fix typo (missing paren).

Revision 1.110.6.2 - (view) (annotate) - [select for diffs]
Mon Dec 20 04:12:57 2010 UTC (3 years, 3 months ago) by rtoy
Branch: cross-sol-x86-branch
Changes since 1.110.6.1: +44 -11 lines
Diff to previous 1.110.6.1 , to branch point 1.110 , to selected 1.11.2.4
o Turn GC_ASSERTIONS for now.
o Turn off other verbose checking and debugging.
o In scav_closure_header, check if the closure function is zero and
  skip scavenging it if so.   Only do this for solaris/x86; it doesn't
  seem to be a problem on other OSes.  But leave some of the debugging
  stuff around but disabled for now, just in case.

Revision 1.110.6.1 - (view) (annotate) - [select for diffs]
Wed Dec 15 12:53:45 2010 UTC (3 years, 4 months ago) by rtoy
Branch: cross-sol-x86-branch
Changes since 1.110: +9 -8 lines
Diff to previous 1.110 , to selected 1.11.2.4
Enable GC assertions and some debugging prints.

Revision 1.110 - (view) (annotate) - [select for diffs]
Mon Jul 26 17:17:13 2010 UTC (3 years, 8 months ago) by rtoy
Branch: MAIN
CVS Tags: RELEASE_20b, cross-sol-x86-base, cross-sparc-branch-base, release-20b-pre1, release-20b-pre2, snapshot-2010-08, snapshot-2010-11, snapshot-2010-12
Branch point for: RELEASE-20B-BRANCH, cross-sol-x86-branch, cross-sparc-branch
Changes since 1.109: +25 -8 lines
Diff to previous 1.109 , to selected 1.11.2.4
o Fix a really stupid newbie C mistake in maybe_static_array_p where a
  break was missing.
o Add variablle debug_static_array_p so we can disable debugging
  messages by default, but allow the user to enable the debugging
  messages.
o Debugging messages for GC'ing static arrays are enabled if
  debug_static_array_p is true.

Revision 1.109 - (view) (annotate) - [select for diffs]
Thu Jul 22 01:16:47 2010 UTC (3 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.108: +3 -3 lines
Diff to previous 1.108 , to selected 1.11.2.4
Fixing interior pointers should ignore the lowtag bits.

Bug fix from Alastair Bridgewater.

Revision 1.108 - (view) (annotate) - [select for diffs]
Mon Jul 19 23:08:37 2010 UTC (3 years, 9 months ago) by rtoy
Branch: MAIN
Changes since 1.107: +129 -83 lines
Diff to previous 1.107 , to selected 1.11.2.4
Merge changes from sparc-tramp-assem-2010-07-19.  This moves
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.

Revision 1.107.2.3 - (view) (annotate) - [select for diffs]
Mon Jul 19 17:54:42 2010 UTC (3 years, 9 months ago) by rtoy
Branch: sparc-tramp-assem-branch
CVS Tags: sparc-tramp-assem-2010-07-19
Changes since 1.107.2.2: +110 -75 lines
Diff to previous 1.107.2.2 , to branch point 1.107 , to next main 1.112 , to selected 1.11.2.4
Fixes for scavenging interrupt contexts.  There's special code to
handle reg_LIP.  In fact, the same thing needs to be done for reg_PC,
and reg_NPC for sparc, and reg_LR and reg_CTR for ppc.  These latter
registers aren't always paired with reg_CODE (like in assembly
routines), so we need to find that paired register.

(Code essentially the same as done by Alastair Bridgewater for sbcl.)

Revision 1.107.2.2 - (view) (annotate) - [select for diffs]
Sun Jul 18 20:29:21 2010 UTC (3 years, 9 months ago) by rtoy
Branch: sparc-tramp-assem-branch
Changes since 1.107.2.1: +9 -4 lines
Diff to previous 1.107.2.1 , to branch point 1.107 , to selected 1.11.2.4
lisp/x86-assem.S:
o Comment out closure_tramp and undefined_tramp.

lisp/gencgc.c:
o Update code since closure_tramp and undefined_tramp no longer exist
  as C functions.

Revision 1.107.2.1 - (view) (annotate) - [select for diffs]
Sat Jul 17 13:43:43 2010 UTC (3 years, 9 months ago) by rtoy
Branch: sparc-tramp-assem-branch
Changes since 1.107: +15 -9 lines
Diff to previous 1.107 , to selected 1.11.2.4
lisp/sparc-assem.S:
o #ifdef out closure_tramp and undefined_tramp; they're Lisp assembly
  functions now.

lisp/gencgc.c:
o Update code for sparc which doesn't have closure_tramp and
  undefined_tramp anymore.

Revision 1.107 - (view) (annotate) - [select for diffs]
Thu Apr 1 14:05:45 2010 UTC (4 years ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2010-04, snapshot-2010-05, snapshot-2010-06, snapshot-2010-07, sparc-tramp-assem-base
Branch point for: sparc-tramp-assem-branch
Changes since 1.106: +18 -2 lines
Diff to previous 1.106 , to selected 1.11.2.4
Fix SSE2 bug when running

(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.

Revision 1.106 - (view) (annotate) - [select for diffs]
Mon Dec 21 11:36:43 2009 UTC (4 years, 3 months ago) by rswindells
Branch: MAIN
CVS Tags: intl-2-branch-base, intl-branch-2010-03-18-1300, intl-branch-base, intl-branch-working-2010-02-11-1000, intl-branch-working-2010-02-19-1000, post-merge-intl-branch, pre-merge-intl-branch, snapshot-2010-01, snapshot-2010-02, snapshot-2010-03
Branch point for: intl-2-branch, intl-branch
Changes since 1.105: +2 -2 lines
Diff to previous 1.105 , to selected 1.11.2.4
Add NetBSD support to other_space_p().

Revision 1.105 - (view) (annotate) - [select for diffs]
Fri Dec 18 04:03:24 2009 UTC (4 years, 4 months ago) by agoncharov
Branch: MAIN
Changes since 1.104: +7 -7 lines
Diff to previous 1.104 , to selected 1.11.2.4
of (FresBSD+) Get rid of gcc warnings: int != ulong; char *strdup() != int strdup; lisp space

Revision 1.104 - (view) (annotate) - [select for diffs]
Thu Dec 17 15:53:45 2009 UTC (4 years, 4 months ago) by rtoy
Branch: MAIN
Changes since 1.103: +8 -6 lines
Diff to previous 1.103 , to selected 1.11.2.4
o Add linux support in other_space_p.
o Remove check for object < 0xf0000000 in scavenge.

Revision 1.103 - (view) (annotate) - [select for diffs]
Thu Dec 17 13:45:14 2009 UTC (4 years, 4 months ago) by rtoy
Branch: MAIN
Changes since 1.102: +113 -61 lines
Diff to previous 1.102 , to selected 1.11.2.4
o Add another function to check for other places that can't be malloc
  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.

Revision 1.102 - (view) (annotate) - [select for diffs]
Sat Dec 5 03:20:37 2009 UTC (4 years, 4 months ago) by rtoy
Branch: MAIN
Changes since 1.101: +119 -4 lines
Diff to previous 1.101 , to selected 1.11.2.4
First cut at GCing static vectors, including static simple-arrays.
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.

Revision 1.101 - (view) (annotate) - [select for diffs]
Mon Nov 2 15:05:07 2009 UTC (4 years, 5 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2009-12
Changes since 1.100: +1 -6 lines
Diff to previous 1.100 , to selected 1.11.2.4
Revert previous changes.  They were supposed to go on
amd64-dd-branch.

Revision 1.99.8.1 - (view) (annotate) - [select for diffs]
Mon Nov 2 14:29:47 2009 UTC (4 years, 5 months ago) by rtoy
Branch: amd64-dd-branch
Changes since 1.99: +7 -2 lines
Diff to previous 1.99 , to next main 1.112 , to selected 1.11.2.4
(Oops.  Previous checkin went to wrong branch.  Here is the commit
log, again.)

This large checkin brings the amd64 port up-to-date with the current
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.

Revision 1.100 - (view) (annotate) - [select for diffs]
Mon Nov 2 02:51:58 2009 UTC (4 years, 5 months ago) by rtoy
Branch: MAIN
Changes since 1.99: +7 -2 lines
Diff to previous 1.99 , to selected 1.11.2.4
This large checkin brings the amd64 port up-to-date with the current
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.

Revision 1.99 - (view) (annotate) - [select for diffs]
Tue Jul 7 17:09:17 2009 UTC (4 years, 9 months ago) by rtoy
Branch: MAIN
CVS Tags: RELEASE_20a, amd64-dd-start, release-20a-base, release-20a-pre1, snapshot-2009-08, snapshot-2009-11, unicode-string-buffer-base, unicode-string-buffer-impl-base
Branch point for: RELEASE-20A-BRANCH, amd64-dd-branch, unicode-string-buffer-branch, unicode-string-buffer-impl-branch
Changes since 1.98: +31 -15 lines
Diff to previous 1.98 , to selected 1.11.2.4
o Fix a compiler warning about inconsistent arg types.
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.

Revision 1.98 - (view) (annotate) - [select for diffs]
Thu Jun 11 16:04:01 2009 UTC (4 years, 10 months ago) by rtoy
Branch: MAIN
CVS Tags: merged-unicode-utf16-extfmt-2009-06-11, portable-clx-base, portable-clx-import-2009-06-16, snapshot-2009-07
Branch point for: portable-clx-branch
Changes since 1.97: +166 -112 lines
Diff to previous 1.97 , to selected 1.11.2.4
Merge Unicode work to trunk.  From label
unicode-utf16-extfmt-2009-06-11.

Revision 1.95.2.1.2.9 - (view) (annotate) - [select for diffs]
Mon May 11 18:18:52 2009 UTC (4 years, 11 months ago) by rtoy
Branch: unicode-utf16-extfmt-branch
CVS Tags: unicode-snapshot-2009-06, unicode-utf16-extfmt-2009-06-11
Changes since 1.95.2.1.2.8: +36 -32 lines
Diff to previous 1.95.2.1.2.8 , to branch point 1.95.2.1 , to next main 1.95.2.2 , to selected 1.11.2.4
Refactor gc_alloc_region some more, moving the common stuff for
allocating in the current region to its own function.

Revision 1.95.2.1.2.8 - (view) (annotate) - [select for diffs]
Tue May 5 17:31:18 2009 UTC (4 years, 11 months ago) by rtoy
Branch: unicode-utf16-extfmt-branch
Changes since 1.95.2.1.2.7: +93 -161 lines
Diff to previous 1.95.2.1.2.7 , to branch point 1.95.2.1 , to selected 1.11.2.4
Extract the essentially identical code from gc_alloc and
gc_alloc_unboxed and move it into gc_alloc_region, and have gc_alloc
and gc_alloc_unboxed call gc_alloc_region.

This also necessitates changing how we keep track of that heuristics
for large allocations, so a new structure is created and two new
global variables are used to handle the boxed and unboxed versions.

Revision 1.95.2.1.2.7 - (view) (annotate) - [select for diffs]
Tue May 5 01:48:17 2009 UTC (4 years, 11 months ago) by rtoy
Branch: unicode-utf16-extfmt-branch
Changes since 1.95.2.1.2.6: +4 -4 lines
Diff to previous 1.95.2.1.2.6 , to branch point 1.95.2.1 , to selected 1.11.2.4
Fix logic error in gc_alloc_unboxed.  Only do gc_alloc_large if number
of consecutive large allocations is less than the limit.  Otherwise,
abandon current region and allocate a new one.

Revision 1.95.2.1.2.6 - (view) (annotate) - [select for diffs]
Mon May 4 21:07:11 2009 UTC (4 years, 11 months ago) by rtoy
Branch: unicode-utf16-extfmt-branch
Changes since 1.95.2.1.2.5: +47 -12 lines
Diff to previous 1.95.2.1.2.5 , to branch point 1.95.2.1 , to selected 1.11.2.4
o Fix error in logic in gc_alloc.  We want to do the large alloc only
  if consecutive large allocs is small enough.
o Add some extra (debugging?) code to check to see if the current
  boxed allocation region has changed in between calls to gc_alloc in
  case inline allocation happened.  If there is a change, we want to
  reset our consecutive alloc counter and update the saved boxed
  region.

Revision 1.95.2.1.2.5 - (view) (annotate) - [select for diffs]
Sat May 2 01:53:00 2009 UTC (4 years, 11 months ago) by rtoy
Branch: unicode-utf16-extfmt-branch
Changes since 1.95.2.1.2.4: +5 -4 lines
Diff to previous 1.95.2.1.2.4 , to branch point 1.95.2.1 , to selected 1.11.2.4
Make the region empty threshold a variable, for experimentation.

Revision 1.95.2.1.2.4 - (view) (annotate) - [select for diffs]
Fri May 1 16:09:10 2009 UTC (4 years, 11 months ago) by rtoy
Branch: unicode-utf16-extfmt-branch
CVS Tags: unicode-snapshot-2009-05
Changes since 1.95.2.1.2.3: +63 -16 lines
Diff to previous 1.95.2.1.2.3 , to branch point 1.95.2.1 , to selected 1.11.2.4
Add some heuristics to gc_alloc (and gc_alloc_unboxed), based on
some suggestions from Douglas.

Currently, if there's not enough free space left in the region, a
large alloc is done.  Douglahs suggested increasing the threshold,
which we have increased from 32 to PAGE_SIZE/64.

Also, he mentioned it's a bug that we abandon the region if we have a
large object allocate.  We now also do a large alloc if the object is
large enough.  (The object won't get copied in the next GC, so that's
a win.)

Finally, we add a simple heuristic where we keep track of how many
consecutive large allocs have been done.  If the threshold is
exceeded, we abandon the region (wasting space) and allocate a new
region.  This prevents spectacularly bad performance (10 times slower
or more) on sparc when the object is small, and there's some room in
the region but not enough for the object.  The boxed region would
never get updated so the allocation would never be inline.

For debugging, the consecutive alloc limit is a variable.  We also
keep track of how many times we abandon a region.

Revision 1.95.2.1.2.3 - (view) (annotate) - [select for diffs]
Wed Apr 29 21:28:04 2009 UTC (4 years, 11 months ago) by rtoy
Branch: unicode-utf16-extfmt-branch
Changes since 1.95.2.1.2.2: +5 -1 lines
Diff to previous 1.95.2.1.2.2 , to branch point 1.95.2.1 , to selected 1.11.2.4
For completeness, do the same thing to gc_alloc_unboxed as we did for
gc_alloc in the last commit.

Revision 1.95.2.1.2.2 - (view) (annotate) - [select for diffs]
Wed Apr 29 20:21:58 2009 UTC (4 years, 11 months ago) by rtoy
Branch: unicode-utf16-extfmt-branch
Changes since 1.95.2.1.2.1: +23 -1 lines
Diff to previous 1.95.2.1.2.1 , to branch point 1.95.2.1 , to selected 1.11.2.4
Work around an issue with allocation on sparc (and probably ppc).  See
comments gc_alloc for reasons.

Revision 1.95.2.1.2.1 - (view) (annotate) - [select for diffs]
Sun Nov 2 13:30:03 2008 UTC (5 years, 5 months ago) by rtoy
Branch: unicode-utf16-extfmt-branch
CVS Tags: unicode-utf16-extfmt-2009-03-27, unicode-utf16-extfmts-sync-2008-12
Changes since 1.95.2.1: +35 -7 lines
Diff to previous 1.95.2.1 , to selected 1.11.2.4
Sync to snapshot 2008-11.  But we didn't sync code/extfmts.lisp or
iso8859-1.lisp and utf-8.lisp.  (I don't think we want those changes,
yet.)

Revision 1.95.2.2 - (view) (annotate) - [select for diffs]
Sat Nov 1 22:40:36 2008 UTC (5 years, 5 months ago) by rtoy
Branch: unicode-utf16-branch
CVS Tags: unicode-utf16-char-support-2009-03-25, unicode-utf16-char-support-2009-03-26, unicode-utf16-sync-2008-11, unicode-utf16-sync-2008-12, unicode-utf16-sync-label-2009-03-16
Changes since 1.95.2.1: +35 -7 lines
Diff to previous 1.95.2.1 , to branch point 1.95 , to next main 1.112 , to selected 1.11.2.4
Sync to snapshot 2008-11.

Revision 1.97 - (view) (annotate) - [select for diffs]
Tue Sep 16 08:52:31 2008 UTC (5 years, 7 months ago) by cshapiro
Branch: MAIN
CVS Tags: RELEASE_19f, label-2009-03-16, label-2009-03-25, merge-sse2-packed, merge-with-19f, release-19f-base, release-19f-pre1, snapshot-2008-10, snapshot-2008-11, snapshot-2008-12, snapshot-2009-01, snapshot-2009-02, snapshot-2009-04, snapshot-2009-05, sse2-base, sse2-checkpoint-2008-10-01, sse2-merge-with-2008-10, sse2-merge-with-2008-11, sse2-packed-2008-11-12, sse2-packed-base
Branch point for: RELEASE-19F-BRANCH, sse2-branch, sse2-packed-branch
Changes since 1.96: +35 -3 lines
Diff to previous 1.96 , to selected 1.11.2.4
Move the gencgc write barrier code into its own function.

Revision 1.96 - (view) (annotate) - [select for diffs]
Thu Sep 11 00:15:28 2008 UTC (5 years, 7 months ago) by rtoy
Branch: MAIN
Changes since 1.95: +1 -5 lines
Diff to previous 1.95 , to selected 1.11.2.4
Enable gencgc page protection for x86/darwin.

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.

Revision 1.95.2.1 - (view) (annotate) - [select for diffs]
Wed May 14 16:12:06 2008 UTC (5 years, 11 months ago) by rtoy
Branch: unicode-utf16-branch
CVS Tags: unicode-utf16-extfmts-pre-sync-2008-11, unicode-utf16-string-support, unicode-utf16-sync-2008-07, unicode-utf16-sync-2008-09
Branch point for: unicode-utf16-extfmt-branch
Changes since 1.95: +10 -1 lines
Diff to previous 1.95 , to selected 1.11.2.4
Initial checkin of unicode branch.  This is incomplete.

What works:
o Cross-compile works on sparc and a lisp.core is created.  This core
  is able to build code and appears to use 16-bit strings.

What doesn't:
o The sparc version is not able to rebuild itself.  It hangs when
  trying to create a new lisp.core.
o The x86 version will cross-compile, but worldload fails.  The files
  being loaded have bizarre names.  Probably some deftransform not
  working correctly.

Issues:
o Characters are still essentially 8 bits.  This needs to be fixed.
o All input/output is basically still 8 bits.  Only the low 8 bits of
  a character are output.  For input, characters are assumed to be
  8-bit.
o No external formats or anything is supported.
o Readtable support not done.


Use boot-2008-05-cross-unicode-{sparc,x86}.lisp to cross-compile the
unicode changes.

Untested whether this code can still be compiled without :unicode.

Changes:

code/array.lisp:
o Base-char strings are 16 bits wide, not 8.

code/c-call.lisp:
o Define versions of DEPORT-GEN, %NATURALIZE-C-STRING to "handle"
  unicode strings.

code/debug-info.lisp:
o Adjust READ-VAR-STRING to use 16-bit strings.  (Needed to at least
  to make the disassembler work.)

code/debug.lisp:
o Add address when printing out objects that can't be printed.
  (Generally useful and not just for unicode.)

code/fd-stream.lisp:
o Hack output routines to only use the low 8-bits of the character.
  (This needs significant work!)

code/filesys.lisp:
o Some debugging %primitive prints left in, but commented out, in
  PARSE-UNIX-NAMESTRING.

code/lispinit.lisp:
o Debugging %primitive print's for top-level forms.

code/load.lisp:
o Update FOP-SHORT-CHARACTER for unicode.  But still only output the
  low 8 bits of a character to a fasl/core.  This needs updating.
o Hack routines for symbols to explicitly read in the individual bytes
  of the symbol/package name because READ-N-BYTES isn't working for us
  right now.
o Update FOP-STRING/FOP-SMALL-STRING to read in 16-bit elements for
  strings.  Full 16-bit strings supported.
o Currently only write 8-bit chars for foreign names.  This needs
  fixing.

code/misc.lisp:
o Register :unicode runtime feature.

code/pathname.lisp:
o Debugging %primitive prints left in, but commented out.

code/stream.lisp:
o Replace %primitive byte-blt with REPLACE for now to get the desired
  characters.

code/unix-glibc2.lisp:
o Workaround for unix-current-directory to return 16-bit strings.
  (Not necessary anymore?)
o UNIX-RESOLVE-LINKS doesn't seem to like MAKE-STRING with an
  INITIAL-ELEMENT specified.  Remove initial-element.  (Needs fixing.)

code/unix.lisp:
o Same as for unix-glibc2.lisp

compiler/array-tran.lisp:
o Turn off the MAKE-STRING deftransform.
o Update ARRAY-INFO to create 16-bit arrays for an element-type of
  base-char.

compiler/dump.lisp:
o Only dump 8-bit chars to a fasl for foreign fixups.
o Explicitly dump the characters of symbol name.  DUMP-BYTES not quite
  working for us now?
o Make DUMP-SIMPLE-STRING dump all 16 bits of each character.
o Characters are dumped as the low 8 bits.  Needs fixing.

compiler/generic/new-genesis.lisp:
o STRING-TO-CORE writes 16-bit strings to the core file.
o FOP-SHORT-CHARACTER for unicode added, but we still only write 8
  bits to the core.  (Needs fixing.)
o COLD-LOAD-SYMBOL modified to read 16-bit characters from the fasl
  file to create a symbol.
o FOP-UNINTERNED-SYMBOL-SAVE and FOP-UNINTERNED-SMALL-SYMBOL-SAVE
  reads 16-bit characters for symbol names.
o FOP-STRING/FOP-SMALL-STRING reads 16-bit characters for strings.
o FOP-FOREIGN-FIXUP and FOP-FOREIGN-DATA-FIXUP still only read 8-bit
  characters for foreign names.  (Needs fixing.)

compiler/generic/vm-tran.lisp:
o New deftransforms to support unicode.  Not the most efficient but
  should be workable for now.  Old deftransforms didn't copy enough
  bits.
o Deftransform for concatenate completely disabled.  This needs
  fixing.

compiler/sparc/array.lisp:
o Change simple-string accessor to use halfword accessors instead of
  byte accessors.

compiler/x86/array.lisp:
o Change simple-string accessor to use halfword accessors instead of
  byte accessors.

lisp/Config.linux_gencgc:
o Define -DUNICODE as needed

lisp/Config.sun4_solaris_sunc
o Define -DUNICODE as needed.

lisp/alloc.c:
o alloc_string needs to allocate 16-bit strings

lisp/backtrace.c:
o Tell ldb backtrace how to print out 16-bit strings.  This is a hack!

lisp/gencgc.c:
o Tell GC how long the 16-bit strings are now.

lisp/interr.c:
o Not really needed but make debug_print (aka %primitive print)
  support all objects by calling ldb's print function to print the
  object.

lisp/os-common.c:
o Add hack convert_lisp_string to take a 16-bit Lisp string and create
  a new string containing just the low 8 bits of each Lisp character.
o OS foreign linkage stuff needs 8-bit strings, so we need to convert
  Lisp strings to the desired size.  Very hackish!

lisp/print.c:
o Teach ldb how to print Lisp 16-bit strings.  Currently, just dump
  out each byte of the 16-bit string.  This needs major work!

lisp/purify.c:
o Teach purify about the 16-bit strings.

Revision 1.95 - (view) (annotate) - [select for diffs]
Fri Apr 11 08:00:53 2008 UTC (6 years ago) by cshapiro
Branch: MAIN
CVS Tags: snapshot-2008-05, snapshot-2008-06, snapshot-2008-07, snapshot-2008-08, snapshot-2008-09, unicode-utf16-base
Branch point for: unicode-utf16-branch
Changes since 1.94: +3 -3 lines
Diff to previous 1.94 , to selected 1.11.2.4
Insert intermediate (void *) casts to eliminate strict aliasing
warnings when compiling with GCC version 4.

Revision 1.94 - (view) (annotate) - [select for diffs]
Wed Mar 19 09:17:10 2008 UTC (6 years, 1 month ago) by cshapiro
Branch: MAIN
CVS Tags: snapshot-2008-04
Changes since 1.93: +2 -2 lines
Diff to previous 1.93 , to selected 1.11.2.4
Always use prototype style function definitions.  Consistently use the
void keyword to specify empty parameter lists.

Revision 1.93 - (view) (annotate) - [select for diffs]
Tue Mar 18 03:59:56 2008 UTC (6 years, 1 month ago) by cshapiro
Branch: MAIN
Changes since 1.92: +3 -3 lines
Diff to previous 1.92 , to selected 1.11.2.4
Remove empty expressions introduced in revision 1.90.

Revision 1.92 - (view) (annotate) - [select for diffs]
Tue Mar 18 03:58:45 2008 UTC (6 years, 1 month ago) by cshapiro
Branch: MAIN
Changes since 1.91: +2 -1 lines
Diff to previous 1.91 , to selected 1.11.2.4
Remove limits.h include from sunos-os.h into gencgc.c.  This include
is required by all systems.

Revision 1.91 - (view) (annotate) - [select for diffs]
Sun Mar 16 15:44:46 2008 UTC (6 years, 1 month ago) by agoncharov
Branch: MAIN
Changes since 1.90: +2 -2 lines
Diff to previous 1.90 , to selected 1.11.2.4
A commented change to test CVS commit notification. Will be removed in
the next version.

Revision 1.90 - (view) (annotate) - [select for diffs]
Sat Mar 15 15:00:02 2008 UTC (6 years, 1 month ago) by agoncharov
Branch: MAIN
Changes since 1.89: +26 -17 lines
Diff to previous 1.89 , to selected 1.11.2.4
Getting rid of some compiler warnings:

  * Eliminate `printf' format string and the following arguments
    conflicts.

  * A variable may be used uninitialized.

  * A variable may be defined but not used.

Revision 1.89 - (view) (annotate) - [select for diffs]
Mon Jul 30 16:19:25 2007 UTC (6 years, 8 months ago) by rtoy
Branch: MAIN
CVS Tags: pre-telent-clx, release-19e, release-19e-base, release-19e-pre1, release-19e-pre2, snapshot-2007-08, snapshot-2007-09, snapshot-2007-10, snapshot-2007-11, snapshot-2007-12, snapshot-2008-01, snapshot-2008-02, snapshot-2008-03
Branch point for: release-19e-branch
Changes since 1.88: +5 -5 lines
Diff to previous 1.88 , to selected 1.11.2.4
Initialize variables to silence dbx runtime-checking notes:
o Initialize some static variables
o page_table[].flags may not have been initialized correctly.

Revision 1.88 - (view) (annotate) - [select for diffs]
Thu Jul 26 14:05:02 2007 UTC (6 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.87: +13 -8 lines
Diff to previous 1.87 , to selected 1.11.2.4
o Declare undefined_tramp and closure_tramp as functions instead of
  chars, because the assembly code declare them as functions.  This
  gets rid of a linker warning about mismatched types.
o Fix a badly indented while loop in free_oldspace.  Gnu indent
  indents it nicely now.

Revision 1.87 - (view) (annotate) - [select for diffs]
Fri Jul 6 08:04:39 2007 UTC (6 years, 9 months ago) by cshapiro
Branch: MAIN
Changes since 1.86: +22 -17 lines
Diff to previous 1.86 , to selected 1.11.2.4
Import x86 Darwin port.

Revision 1.86 - (view) (annotate) - [select for diffs]
Wed May 30 17:52:08 2007 UTC (6 years, 10 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2007-06, snapshot-2007-07
Changes since 1.85: +3 -3 lines
Diff to previous 1.85 , to selected 1.11.2.4
This checkin adds some debugging code for the x86 heap corruption
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.

Revision 1.85 - (view) (annotate) - [select for diffs]
Wed May 2 16:51:59 2007 UTC (6 years, 11 months ago) by rtoy
Branch: MAIN
Changes since 1.84: +11 -16 lines
Diff to previous 1.84 , to selected 1.11.2.4
o when verifying a space, print out both the closure_tramp and
  undefined_tramp addresses, just in case, for sparc and ppc.
o Don't make verify_space a static function.

Revision 1.84 - (view) (annotate) - [select for diffs]
Fri Oct 27 15:13:25 2006 UTC (7 years, 5 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2006-11, snapshot-2006-12, snapshot-2007-01, snapshot-2007-02, snapshot-2007-03, snapshot-2007-04, snapshot-2007-05
Changes since 1.83: +2 -2 lines
Diff to previous 1.83 , to selected 1.11.2.4
Oops.  Change = to ==.

Without this, hash tables were majorly broken because the hash vector
was getting set to EQ_BASED_HASH_VALUE.

Revision 1.83.2.1 - (view) (annotate) - [select for diffs]
Fri Oct 27 15:12:45 2006 UTC (7 years, 5 months ago) by rtoy
Branch: release-19d-branch
CVS Tags: release-19d, release-19d-pre2
Changes since 1.83: +2 -2 lines
Diff to previous 1.83 , to next main 1.112 , to selected 1.11.2.4
Oops.  Change = to ==.

Without this, hash tables were majorly broken because the hash vector
was getting set to EQ_BASED_HASH_VALUE.

Revision 1.83 - (view) (annotate) - [select for diffs]
Fri Aug 18 16:58:53 2006 UTC (7 years, 8 months ago) by rtoy
Branch: MAIN
CVS Tags: release-19d-base, release-19d-pre1, snapshot-2006-09, snapshot-2006-10
Branch point for: release-19d-branch
Changes since 1.82: +7 -3 lines
Diff to previous 1.82 , to selected 1.11.2.4
Aargh!  Was filling the wrong entry in the hash_vector when freeing an
entry.  Fix that.

Revision 1.82 - (view) (annotate) - [select for diffs]
Fri Aug 18 16:48:22 2006 UTC (7 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.81: +2 -1 lines
Diff to previous 1.81 , to selected 1.11.2.4
Oops.  Forgot to define hash_vector.

Revision 1.81 - (view) (annotate) - [select for diffs]
Fri Aug 18 13:19:05 2006 UTC (7 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.80: +11 -2 lines
Diff to previous 1.80 , to selected 1.11.2.4
code/hash-new.lisp:
o Replace the magic value #x80000000 with +eq-based-hash-value+.

lisp/gencgc.c:
o Replace the magic value 0x80000000 with EQ_BASED_HASH_VALUE.
o When freeing the hash entry, we forgot to reset the hash-vector
  entry to EQ_BASED_HASH_VALUE.

Revision 1.80 - (view) (annotate) - [select for diffs]
Fri Aug 18 02:26:29 2006 UTC (7 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.79: +177 -44 lines
Diff to previous 1.79 , to selected 1.11.2.4
Add support for weak value, key-and-value, and key-or-value hash
tables.  Use boot-2006-08-1-cross to cross-compile.  During worldload,
you'll get a restart.  Choose the CLOBBER-IT restart.

bootfiles/19c/boot-2006-08-1-cross.lisp:
o Cross-compile script to mark that a cross-compile is needed.
  Nothing fancy, just load up the example scripts.

code/hash-new.lisp:
o Update the allowed values for the weak-p slot of a hash table.
o Change hash table printer to print out the test and weak style.
o Update MAKE-HASH-TABLE to allow other values for :weak-p keyword arg
  and set the weak-p slot appropriately.
o Produce an error if a weak key, key-and-value, or key-or-value table
  is created but the test is not EQ or EQL.

compiler/ppc/parms.lisp:
compiler/sparc/parms.lisp:
o Add :KEY, :VALUE, :KEY-AND-VALUE, and :KEY-OR-VALUE symbols to the
  static symbols because C code needs them.

lisp/gencgc.c:
o Add necessary support to handle the new hash types.

Revision 1.79 - (view) (annotate) - [select for diffs]
Wed Aug 16 16:19:09 2006 UTC (7 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.78: +49 -28 lines
Diff to previous 1.78 , to selected 1.11.2.4
code/hash-new.lisp:
o Add a new slot to the hash-table structure for GC to use for linking
  weak tables together.  (Previously we used the weak-p slot for
  this.  Let's make it explicit, now.  Plus, this allows us to use
  weak-p to indicate other types of weak tables, should they be
  implemented.)

lisp/gencgc.c:
o Update defstruct appropriately.
o Use the new next-weak-table slot to chain the weak tables together.
o Previously we scanned the weak tables in several places in the
  code.  However, this scanning also removed entries.  I don't think
  we want that because later scans could make a key valid.  Thus:

  - Change scav_hash_entries so that it doesn't remove a hash-table
    entry unless told to.
  - Add new function to scavenge weak tables without removing a weak
    entry.
  - Adjust scan_weak_tables to remove weak entries.

NOTE:  When building, you'll be asked twice about the hash-table
structure changing size.  Just select the CLOBBER-IT restart in both
cases.

Revision 1.78 - (view) (annotate) - [select for diffs]
Sat Aug 12 12:26:44 2006 UTC (7 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.77: +2 -2 lines
Diff to previous 1.77 , to selected 1.11.2.4
Weak pointers should be scanned after weak tables because entries in
the table could change the reachability of some weak pointer values.
(Mentioned by Gabor Melis in #lisp).

Revision 1.77 - (view) (annotate) - [select for diffs]
Fri Aug 11 13:10:32 2006 UTC (7 years, 8 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2006-08
Changes since 1.76: +15 -10 lines
Diff to previous 1.76 , to selected 1.11.2.4
Add one more place where we scan the weak hash tables, because we
scavenge some stuff there.  (Not 100% sure we need this either, but
Lynn's weak hash table test still passes.)

Revision 1.76 - (view) (annotate) - [select for diffs]
Fri Aug 11 00:16:15 2006 UTC (7 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.75: +7 -3 lines
Diff to previous 1.75 , to selected 1.11.2.4
Weak pointers were being scanned too often such that the weak pointer
would be broken but the value was still alive.  Now only scan the weak
pointers at the very end (like we used to), instead with the weak hash
tables.

Revision 1.75 - (view) (annotate) - [select for diffs]
Fri Aug 4 16:41:18 2006 UTC (7 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.74: +101 -8 lines
Diff to previous 1.74 , to selected 1.11.2.4
Add a new function scan_weak_objects() to can weak pointers and weak
(key) hash tables.  Then use it in several places where we need to
scan the weak objects before closing the region.

This fixes all of the problems with weak pointers and weak hash tables
reported by Lynn Quam, cmucl-imp, 2006/07/04.

Not 100% sure the solution is all correct, but it seems to be
working.

Revision 1.74 - (view) (annotate) - [select for diffs]
Fri Jul 21 17:36:10 2006 UTC (7 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.73: +15 -1 lines
Diff to previous 1.73 , to selected 1.11.2.4
When freeing a hash entry, reset the kv-vector entry to empty.  If we
don't maphash and with-hash-table-iterator won't know the slot is
empty.  Plus the key and/or value may contain random garbage.

Revision 1.73 - (view) (annotate) - [select for diffs]
Thu Jul 20 16:19:35 2006 UTC (7 years, 9 months ago) by rtoy
Branch: MAIN
Changes since 1.72: +16 -2 lines
Diff to previous 1.72 , to selected 1.11.2.4
Port sbcl's changes to room to handle gencgc allocation better.

lisp/gencgc.c:
o Make last_free_page non-static so Lisp can see it.
o Add get_page_table_info so Lisp can easily get at the flags and
  bytes_used slots of a page table entry.

code/room.lisp:
o Add gencgc-page-size constant.
o Fix SPACE-BOUNDS for sparc and ppc with gencgc.  The
  dynamic-space-free-pointer is something different, and we really
  wanted the last_free_page.
o Update MAP-ALLOCATED-OBJECTS to handle gencgc (from sbcl).
  Unallocated pages are skipped, as well as anything at the end of a
  page that is not in use.

Revision 1.72 - (view) (annotate) - [select for diffs]
Tue Jul 18 23:28:48 2006 UTC (7 years, 9 months ago) by rtoy
Branch: MAIN
Changes since 1.71: +4 -1 lines
Diff to previous 1.71 , to selected 1.11.2.4
Forgot a case for double-double floats in verify_space.

Revision 1.71 - (view) (annotate) - [select for diffs]
Fri Jun 30 18:41:32 2006 UTC (7 years, 9 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2006-07
Changes since 1.70: +138 -1 lines
Diff to previous 1.70 , to selected 1.11.2.4
This large checkin merges the double-double float support to HEAD.
The merge is from the tag "double-double-irrat-end".  The
double-double branch is now obsolete.

The code should build without double-double support (tested on sparc)
as well as build with double-double support (tested also on sparc).

Revision 1.70.2.1.4.6 - (view) (annotate) - [select for diffs]
Fri Jun 23 03:31:02 2006 UTC (7 years, 9 months ago) by rtoy
Branch: double-double-array-branch
CVS Tags: double-double-array-checkpoint, double-double-irrat-end, double-double-irrat-start
Changes since 1.70.2.1.4.5: +2 -2 lines
Diff to previous 1.70.2.1.4.5 , to branch point 1.70.2.1 , to selected 1.11.2.4
Fix typo.

Revision 1.70.2.1.4.5 - (view) (annotate) - [select for diffs]
Thu Jun 22 20:41:17 2006 UTC (7 years, 9 months ago) by rtoy
Branch: double-double-array-branch
Changes since 1.70.2.1.4.4: +22 -1 lines
Diff to previous 1.70.2.1.4.4 , to branch point 1.70.2.1 , to selected 1.11.2.4
Tell GC how to handle (simple-array (complex double-double-float) (*)).

Revision 1.70.2.1.4.4 - (view) (annotate) - [select for diffs]
Wed Jun 21 20:15:59 2006 UTC (7 years, 9 months ago) by rtoy
Branch: double-double-array-branch
CVS Tags: double-double-sparc-checkpoint-1
Changes since 1.70.2.1.4.3: +11 -1 lines
Diff to previous 1.70.2.1.4.3 , to branch point 1.70.2.1 , to selected 1.11.2.4
Remove the dylan-function-header type.

compiler/generic/objdef.lisp:
compiler/sparc/macros.lisp:
lisp/gencgc.c:
lisp/purify.c:
o Remove the dylan-function-header type

compiler/sparc/insts.lisp
o Remove the dylan-function-header type
o Update header-word-type-alist to match the list of header word types
  in objdefs.

Revision 1.70.2.1.4.3 - (view) (annotate) - [select for diffs]
Wed Jun 21 18:38:45 2006 UTC (7 years, 9 months ago) by rtoy
Branch: double-double-array-branch
Changes since 1.70.2.1.4.2: +33 -1 lines
Diff to previous 1.70.2.1.4.2 , to branch point 1.70.2.1 , to selected 1.11.2.4
Add support for (simple-array (complex double-double-float) (*)).

bootfiles/19c/boot-2006-06-2-cross-dd-sparc.lisp:
o Update for new array type.
o Fix a problem with ash-left-mod32 and lognot-mod32 not being
  defined.

code/array.lisp:
o Add new array type for %vector-type-code.
o Tell data-vector-ref, data-vector-set, and array-element-type about
  the new array.

code/class.lisp:
o Add new array type to the set of built-in classes.

code/exports.lisp:
o Export necessary symbols for the new array type.

code/pred.lisp:
o Generate type predicate for new array type.

compiler/array-tran.lisp:
o Add new array type to array-info.

compiler/generic/objdef.lisp:
o Add new array type code.

compiler/generic/primtype.lisp:
o Add new primitive type for this new array type.
o Update *simple-array-primitive-types* with new array type.

compiler/generic/vm-fndb.lisp:
o Defknown for new array type.

compiler/generic/vm-type.lisp:
o Update specialized-array-element-types with new type so we can
  create specialized arrays.

compiler/generic/vm-typetran.lisp:
o Tell compiler about predicate for the new array type.

compiler/sparc/array.lisp:
o Add new vops to read and write elements to our new array type.

compiler/sparc/type-vops.lisp:
o Add type vop for new array type.
o Adjust type hierarchy with new array type.

lisp/gencgc.c:
o Tell GC about the new array type.

lisp/purify.c
o Tell purify about the new array type.

Revision 1.70.2.1.4.2 - (view) (annotate) - [select for diffs]
Mon Jun 19 02:15:00 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-array-branch
Changes since 1.70.2.1.4.1: +16 -1 lines
Diff to previous 1.70.2.1.4.1 , to branch point 1.70.2.1 , to selected 1.11.2.4
lisp/gencgc.c:
o Tell GC what to do with complex double-double floats.

lisp/purify.c:
o Tell purify what to do with complex double-double floats.

Revision 1.70.2.1.4.1 - (view) (annotate) - [select for diffs]
Fri Jun 16 03:46:59 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-array-branch
Changes since 1.70.2.1: +48 -1 lines
Diff to previous 1.70.2.1 , to selected 1.11.2.4
Add support for new unboxed primitive type (simple-array
double-double-float (*)).

bootfiles/19c/boot-2006-06-2-cross-dd-ppc.lisp:
o Cross-compile script for PPC for new array type.

code/array.lisp:
o Add simple-array double-double-float to the vector types.
o Add support for double-double-float arrays to data-vector-ref and
  data-vector-set.

code/class.lisp:
o Tell compiler about the new array type.

code/exports.lisp:
o Export necessary symbols for the new array.

code/kernel.lisp:
o The args to MAKE-DOUBLE-DOUBLE-FLOAT are double-floats.

code/pred.lisp:
o Tell type system about new primitive type.

compiler/array-tran.lisp:
o Tell compiler about the new array type.

compiler/generic/objedef.lisp:
o Add new type code

compiler/generic/primtype.lisp:
o Tell compiler about new primitive array type.

compiler/generic/vm-fndb.lisp:
o Tell compiler about known function for type test function.

compiler/generic/vm-type.lisp:
o Tell compiler about new specialized array type.

compiler/generic/vm-typetran.lisp:
o Define type predicate.

compiler/ppc/array.lisp:
o Add vops to read and write an element of a double-double-float
  simple array.

compiler/ppc/type-vops.lisp:
compiler/sparc/type-vops.lisp:
o Add type vop for new array type.
o Tell compiler about the where the new array type fits in the type
  hierarchy.

lisp/gencgc.c:
o Add GC support for new array type.

lisp/purify.c:
o Add purify support for new array type.

Revision 1.70.2.1 - (view) (annotate) - [select for diffs]
Fri Jun 9 16:05:19 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-branch
CVS Tags: double-double-array-base, double-double-init-%make-sparc, double-double-init-checkpoint-1, double-double-init-ppc, double-double-init-sparc, double-double-init-sparc-2, double-double-init-x86, double-double-reader-base, double-double-reader-checkpoint-1
Branch point for: double-double-array-branch, double-double-reader-branch
Changes since 1.70: +13 -1 lines
Diff to previous 1.70 , to next main 1.112 , to selected 1.11.2.4
Add basic support for kernel:double-double-float type.  The primitive
type is there, and basic arithmetic operations work as well as PRINT.
But many things do not work: No reader, formatted output, many mixed
type arithmetic operations, special functions are just double-float
values, coerced to double-double-float.

compiler/generic/interr.lisp:
o Add new error

compiler/generic/new-genesis.lisp:
o Dump double-double-float objects (barely tested)

compiler/generic/primtype.lisp:
o Tell compiler about the new primitive type double-double-float.

compiler/generic/vm-fndb.lisp:
o Make double-double-float-p a known function.

compiler/generic/vm-type.lisp:
o Update FLOAT-FORMAT-NAME to include double-double-float

compiler/generic/vm-typetran.lisp:
o Tell compiler about double-double-float type predicate.

compiler/sparc/float.lisp:
o Add necessary vops to move double-double-float args, store and load
  double-double-floats to/from the double-double-stack,
  double-double-reg moves, box and unbox double-double-floats, move
  double-double-floats to and from args
o Add necessary vops to create a double-double-float and to extract
  the high and low parts out of a double-double-float.

compiler/sparc/parms.lisp:
o Define double-double-float-digits

compiler/sparc/type-vops.lisp:
o Define double-double-float type vop
o Adjust number hierarchy to include double-double-float

compiler/sparc/vm.lisp:
o Define the necessary storage class and storage base for the
  double-double-reg and double-double-stack.

lisp/gencgc.c:
o Tell GC about double-double-float objects.

lisp/purify.c:
o Tell purify about double-double-float objects.

code/class.lisp:
o Add the new double-double-float class.

code/exports.lisp:
o Add the necessary symbols to the various packages.  (This is
  important to get right otherwise there's confusion on what symbol
  really represents double-double-float stuff.)

code/float.lisp:
o Implement some of the necessary functions to support
  double-double-float.

code/hash-new.lisp:
o Hash double-double-floats by xor'ing the hashes of each double-float
  part.  (Is that good enough?)

code/irrat.lisp:
o Implement the special functions by calling the double-float versions
  and coercing the result to a double-double-float.  This is needed to
  get type-derivation working, but the precise value isn't that
  important right now.  We'll have to implement them later.

code/kernel.lisp:
o Make make-double-double-float, double-double-hi, and
  double-double-lo known functions.

code/lispinit.lisp:
o Register the :double-double float feature.

code/load.lisp:
o Add FOP for reading double-double-float values from fasls.  (Barely
  tested, if at all.)

code/numbers.lisp:
o Implement basic arithmetic operations for double-double-floats.
  This needs quite a bit of work to clean up, but most things work.

code/pred.lisp:
o Tell the type system about double-double-float type.

code/print.lisp:
o Add very rudimentary printing for double-double-float.  Basically
  copied from code written by Richard Fateman, with permission.

code/seq.lisp:
o Tell coerce how to coerce things to a double-double-float.

code/type.lisp:
o Tell type system about the new float format double-double-float and
  how numeric contagion works with double-double-float.

code/dump.lisp:
o Tell dumper how to dump double-double-float values to a fasl.

compiler/float-tran.lisp:
o Add appropriate deftransforms to handle conversion of things to
  double-double-float and from from double-double-float to other float
  types.
o The basic implmentation of double-double-float arithmetic is also
  here.
o Add deftransforms to tell the compiler how to do basic arithmetic
  and comparisions on double-double-float numbers.

compiler/srctran.lisp:
o Fix a bug in interval-range-info when :low is 0dd0 and :high is 0.
  We weren't returning the right value, which confuses interval-div,
  which caused an infinite loop because we couldn't split the
  numerator into positive and negative parts.
o Tell other parts about double-double-float.

Revision 1.70 - (view) (annotate) - [select for diffs]
Sat Feb 4 03:32:31 2006 UTC (8 years, 2 months ago) by rtoy
Branch: MAIN
CVS Tags: double-double-base, snapshot-2006-03, snapshot-2006-04, snapshot-2006-05, snapshot-2006-06
Branch point for: double-double-branch
Changes since 1.69: +6 -11 lines
Diff to previous 1.69 , to selected 1.11.2.4
o Disable gencgc consistency checks for DARWIN (but leave asserts
  enabled).
o I think we should call update_dynamic_space_free_pointer for sparc
  and ppc, at the very least to set last_free_page.

Revision 1.69 - (view) (annotate) - [select for diffs]
Tue Jan 31 13:58:36 2006 UTC (8 years, 2 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2006-02
Changes since 1.68: +15 -14 lines
Diff to previous 1.68 , to selected 1.11.2.4
Oops.  Fix a couple of typos (missing paren) and reindent
scavenge_interrupt_context.

Revision 1.68 - (view) (annotate) - [select for diffs]
Tue Jan 31 03:16:39 2006 UTC (8 years, 2 months ago) by rtoy
Branch: MAIN
Changes since 1.67: +27 -1 lines
Diff to previous 1.67 , to selected 1.11.2.4
When scavenging interrupt contexts, we need to scavenge LR and CTR
registers, in case they're pointing into our heap and what they're
pointing to has moved.

lisp/Darwin-os.c:
o Add support for getting the LR and CTR registers from the context.

lisp/gencgc.c:
o Handle LR and CTR registers when scavenging the interrupt context.

lisp/ppc-lispregs.h:
o Define reg_LR and reg_CTR appropriately.

Revision 1.67 - (view) (annotate) - [select for diffs]
Wed Jan 18 15:21:26 2006 UTC (8 years, 3 months ago) by rtoy
Branch: MAIN
Changes since 1.66: +85 -21 lines
Diff to previous 1.66 , to selected 1.11.2.4
Merge ppc_gencgc_branch to HEAD.

Revision 1.63.2.6 - (view) (annotate) - [select for diffs]
Thu Jan 5 03:27:43 2006 UTC (8 years, 3 months ago) by rtoy
Branch: ppc_gencgc_branch
CVS Tags: ppc_gencgc_snap_2006-01-06
Changes since 1.63.2.5: +2 -2 lines
Diff to previous 1.63.2.5 , to branch point 1.63 , to next main 1.112 , to selected 1.11.2.4
Some more changes to gencgc.  With these changes, CLEM (Cyrus Harmon's
matrix package) will compile.  Previously, it was causing gc invariant
lossage during compilation.


src/compiler/ppc/macros.lisp:
o Fix typo in comment.
o Change how pseudo-atomic sets and resets the pseudo-atomic bit.
  Instead of adding/subtracting 4, we "or" in 4, or reset that bit.
  This is what sparc does.

src/lisp/gencgc.c:
o Need to define valid_dynamic_space_pointer function for some
  error-checking (that we aren't currently doing, I think).

src/lisp/gencgc.h:
o Change PAGE_SIZE to 16k. (Still needs more testing.)

src/lisp/ppc-arch.c:
o In sigill_handler, we need to return after the allocation trap is
  handled.  Otherwise, we just blow past everthing and call
  interrupt_handle_now at the end, which isn't what we want.

Revision 1.63.2.5 - (view) (annotate) - [select for diffs]
Mon Jan 2 17:05:36 2006 UTC (8 years, 3 months ago) by rtoy
Branch: ppc_gencgc_branch
Changes since 1.63.2.4: +23 -11 lines
Diff to previous 1.63.2.4 , to branch point 1.63 , to selected 1.11.2.4
o Enable some of the gencgc consistency checks only for DARWIN.
o Turn off a few of the debugging printfs.

Revision 1.63.2.4 - (view) (annotate) - [select for diffs]
Wed Dec 21 21:20:29 2005 UTC (8 years, 3 months ago) by rtoy
Branch: ppc_gencgc_branch
Changes since 1.63.2.3: +2 -2 lines
Diff to previous 1.63.2.3 , to branch point 1.63 , to selected 1.11.2.4
Enable GC assertions only for DARWIN for now.

Revision 1.63.2.3 - (view) (annotate) - [select for diffs]
Wed Dec 21 19:09:26 2005 UTC (8 years, 3 months ago) by rtoy
Branch: ppc_gencgc_branch
Changes since 1.63.2.2: +10 -9 lines
Diff to previous 1.63.2.2 , to branch point 1.63 , to selected 1.11.2.4
lisp/Darwin-os.c:
o Turn off SIGSEGV_VERBOSE
o Additional debug prints in sigbus_handler.
o Writing to a write-protected area causes a sigbus, not a sigsegv, so
  make sigbus do what sigsegv does.

lisp/gencgc.c:
o Turn off some of the debugging prints.
o Turn off pre_verify_gen_0 since it's really slow.
o ppc seems to have the same GC invariant issue on hash tables as
  sparc does, so disable that assertion.

Revision 1.63.2.2 - (view) (annotate) - [select for diffs]
Mon Dec 19 01:10:12 2005 UTC (8 years, 4 months ago) by rtoy
Branch: ppc_gencgc_branch
CVS Tags: ppc_gencgc_snap_2005-12-17
Changes since 1.63.2.1: +4869 -4611 lines
Diff to previous 1.63.2.1 , to branch point 1.63 , to selected 1.11.2.4
Merge code from main branch of 2005-12-17 to ppc gencgc branch.  Still
doesn't work of course.

Revision 1.66 - (view) (annotate) - [select for diffs]
Thu Sep 15 18:26:51 2005 UTC (8 years, 7 months ago) by rtoy
Branch: MAIN
CVS Tags: release-19c, release-19c-base, release-19c-pre1, snapshot-2005-10, snapshot-2005-11, snapshot-2005-12, snapshot-2006-01
Branch point for: release-19c-branch
Changes since 1.65: +4847 -4559 lines
Diff to previous 1.65 , to selected 1.11.2.4
Indent all source files using GNU indent using the config in
.indent.pro.

Revision 1.65 - (view) (annotate) - [select for diffs]
Mon May 23 13:41:23 2005 UTC (8 years, 10 months ago) by rtoy
Branch: MAIN
CVS Tags: release-19b-base, release-19b-pre1, release-19b-pre2, snapshot-2005-06, snapshot-2005-07, snapshot-2005-08, snapshot-2005-09
Branch point for: release-19b-branch
Changes since 1.64: +2 -2 lines
Diff to previous 1.64 , to selected 1.11.2.4
Patch from Gerd Moellmann, cmucl-imp, 2005-05-21:

    The problem here is that a fixnum value gets stored in an
    unsigned-byte vector, which messes up the linked list.

Revision 1.64 - (view) (annotate) - [select for diffs]
Mon May 16 13:16:11 2005 UTC (8 years, 11 months ago) by rtoy
Branch: MAIN
Changes since 1.63: +6 -3 lines
Diff to previous 1.63 , to selected 1.11.2.4
From Gerd Moellman, cmucl-imp, 2005-05-15:

    Bruno reported an endless loop in the following test case:

    (let ((tab (make-hash-table :test 'eq :weak-p t)))
      (let ((a (list 'x)))
	(let ((b (list 'y)))
	  (setf (gethash a tab) 'xxx)
	  (setf (gethash b tab) (cons 'yyy b)))
	(gc)
	(list (hash-table-count tab)
	      (gethash a tab)
	      (let ((l nil))
		(maphash #'(lambda (k v) (push k l)) tab) l))))

But we return (2 XXX ((Y) (X))) instead of (1 XXX ((X))).

Revision 1.63.2.1 - (view) (annotate) - [select for diffs]
Tue Apr 5 03:41:10 2005 UTC (9 years ago) by rtoy
Branch: ppc_gencgc_branch
CVS Tags: ppc_gencgc_snap_2005-05-14
Changes since 1.63: +115 -31 lines
Diff to previous 1.63 , to selected 1.11.2.4
Checkin the current code for gencgc.  This is a basic port of sparc
gencgc for ppc.  This is not yet functional.  Allocation seems to
work, but GC does not.  We're just making a checkpoint now.

compiler/ppc/macros.lisp:
o Update allocation macro to support gencgc.  Need a temp-tn as a
  scratch register for inline allocation.
o Update with-fixed-allocation to use allocation macro correctly for
  gencgc.

assembly/ppc/array.lisp:
o Update for new allocation macro for gencgc.

code/ppc-vm.lisp:
o Define *scavenge-read-only-space*

compiler/ppc/alloc.lisp:
compiler/ppc/array.lisp:
compiler/ppc/call.lisp:
o Update to use new allocation macro for gencgc.

compiler/ppc/parms.lisp:
o Add necessary static symbols to support gencgc.

lisp/Config.ppc_darwin:
o Update to build with gencgc as needed.

lisp/Darwin-os.c:
o Update C code for gencgc.  Mostly for checking if pointer is in the
  dynamic space.
o Many debugging printf's enabled.

lisp/gencgc.c:
o Adjust sparc version appropriately for ppc.
o Enable many gencgc self-checks.

lisp/gencgc.h:
o Update PAGE_SIZE for ppc, which is 4K.

lisp/ppc-arch.c:
o Add necessary code to handle the allocation traps for gencgc.
  Basically ported sparc version for ppc.

lisp/ppc-assem.S:
o The way pseudo-atomic is done has been changed, so make the assembly
  code match.  PA is now more like sparc where the LSB is the
  PA-interrupted bit.
o do_pending_interrupt may need work.

lisp/ppc-validate.h:
o Make the READ_ONLY_SPACE_SIZE right.
o Define CONTROL_STACK_END.

lisp/purify.c:
o Enable debugging printfs
o Adjust purify for gencgc, basically copying sparc version.

Revision 1.63 - (view) (annotate) - [select for diffs]
Sun Feb 6 06:11:00 2005 UTC (9 years, 2 months ago) by cshapiro
Branch: MAIN
CVS Tags: snapshot-2005-03, snapshot-2005-04, snapshot-2005-05
Branch point for: ppc_gencgc_branch
Changes since 1.62: +2 -8 lines
Diff to previous 1.62 , to selected 1.11.2.4
Retire i586_bzero() in favor of memset().  The i586_bzero() routine is
demonstrably slower than extant compiler intrinsics or C runtime
memset() implementations for blocks of memory greater than or equal to
an x86 VM page.

Revision 1.62 - (view) (annotate) - [select for diffs]
Tue Jul 27 22:03:53 2004 UTC (9 years, 8 months ago) by cwang
Branch: MAIN
CVS Tags: snapshot-2004-08, snapshot-2004-09, snapshot-2004-10, snapshot-2004-11, snapshot-2004-12, snapshot-2005-01, snapshot-2005-02
Changes since 1.61: +3 -2 lines
Diff to previous 1.61 , to selected 1.11.2.4
Get rid of fastcopy16 which is only used in cgc.c
Get rid of i586_bzero but it may be a good optimization

Revision 1.61 - (view) (annotate) - [select for diffs]
Sat Jul 24 03:52:45 2004 UTC (9 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.60: +2 -6 lines
Diff to previous 1.60 , to selected 1.11.2.4
After almost 1 year of gencgc on sparc without encountering a gc
assertion, let's disable gc assertions on sparc now.

Revision 1.60 - (view) (annotate) - [select for diffs]
Tue Jul 20 22:38:26 2004 UTC (9 years, 9 months ago) by cwang
Branch: MAIN
Changes since 1.59: +5 -5 lines
Diff to previous 1.59 , to selected 1.11.2.4
make amd64 the same as x86

Revision 1.59 - (view) (annotate) - [select for diffs]
Mon Jul 12 23:44:07 2004 UTC (9 years, 9 months ago) by pmai
Branch: MAIN
Changes since 1.58: +3 -3 lines
Diff to previous 1.58 , to selected 1.11.2.4
Finish conversion from hardcoded sigcontext to os_context_t, as initiated
by the commit of the NetBSD support, and needed by the upcoming merge of
the OS X/Darwin port.

Revision 1.58 - (view) (annotate) - [select for diffs]
Thu Jul 8 03:31:15 2004 UTC (9 years, 9 months ago) by rtoy
Branch: MAIN
CVS Tags: prm-before-macosx-merge-tag
Changes since 1.57: +5 -3 lines
Diff to previous 1.57 , to selected 1.11.2.4
More compiler warning fixes:

* gencgc.c:
  o fixup up fprintf warnings
  o generation_bytes_allocated() defined only when GC_ASSERTIONS is
    #defined.
* x86-arch.c: fixup printf warnings.

Revision 1.57 - (view) (annotate) - [select for diffs]
Wed Jul 7 20:31:06 2004 UTC (9 years, 9 months ago) by rtoy
Branch: MAIN
Changes since 1.56: +24 -3 lines
Diff to previous 1.56 , to selected 1.11.2.4
Fix more compiler warnings:

* alloc.c:  Include gencgc.h to get declaration of alloc().
* gencgc.c:
  o Include string.h for memset.
  o Initialize some vars that gcc complains might be uninitialized
    (but they're not).
  o scav_fdefn isn't used on sparc, so comment it out.
  o valid_dynamic_space_pointer, maybe_adjust_large_object, and
    preserve_pointer are only used on x86, so comment #ifdef them for
    i386.
* os-common.c:
  o Fix a few printf warnings.
  o Cast args to bcopy.

Revision 1.56 - (view) (annotate) - [select for diffs]
Wed Jul 7 15:03:11 2004 UTC (9 years, 9 months ago) by rtoy
Branch: MAIN
Changes since 1.55: +1 -8 lines
Diff to previous 1.55 , to selected 1.11.2.4
Changes from Robert Swindells to support NetBSD.

Revision 1.55 - (view) (annotate) - [select for diffs]
Wed May 19 22:20:49 2004 UTC (9 years, 11 months ago) by cwang
Branch: MAIN
CVS Tags: snapshot-2004-06, snapshot-2004-07
Changes since 1.54: +204 -379 lines
Diff to previous 1.54 , to selected 1.11.2.4
amd64 changes

Revision 1.54 - (view) (annotate) - [select for diffs]
Tue May 18 22:59:08 2004 UTC (9 years, 11 months ago) by cwang
Branch: MAIN
Changes since 1.53: +5 -5 lines
Diff to previous 1.53 , to selected 1.11.2.4
typos

Revision 1.53 - (view) (annotate) - [select for diffs]
Tue May 11 14:36:10 2004 UTC (9 years, 11 months ago) by rtoy
Branch: MAIN
CVS Tags: amd64-merge-start
Changes since 1.52: +4 -7 lines
Diff to previous 1.52 , to selected 1.11.2.4
From Lynn Quam:

	adds the mark_bit slot to weak-pointers and eliminates the
	n-squared performance problem with scav_weak_pointer.

Revision 1.52 - (view) (annotate) - [select for diffs]
Thu May 6 09:49:50 2004 UTC (9 years, 11 months ago) by emarsden
Branch: MAIN
Changes since 1.51: +2 -3 lines
Diff to previous 1.51 , to selected 1.11.2.4
  - fix syntax for C multiline strings

Revision 1.51 - (view) (annotate) - [select for diffs]
Mon May 3 14:17:20 2004 UTC (9 years, 11 months ago) by rtoy
Branch: MAIN
Changes since 1.50: +6 -4 lines
Diff to previous 1.50 , to selected 1.11.2.4
Clean up printing of generation info to handle the larger heaps we
have now.

Revision 1.50 - (view) (annotate) - [select for diffs]
Fri Jan 9 23:05:32 2004 UTC (10 years, 3 months ago) by toy
Branch: MAIN
CVS Tags: mod-arith-base, release-19a, release-19a-base, release-19a-pre1, release-19a-pre2, release-19a-pre3, snapshot-2004-04, snapshot-2004-05
Branch point for: mod-arith-branch, release-19a-branch
Changes since 1.49: +14 -21 lines
Diff to previous 1.49 , to selected 1.11.2.4
Remove some unused code that we don't need anymore.

Revision 1.49 - (view) (annotate) - [select for diffs]
Fri Jan 9 15:14:57 2004 UTC (10 years, 3 months ago) by toy
Branch: MAIN
Changes since 1.48: +12 -1 lines
Diff to previous 1.48 , to selected 1.11.2.4
Add comment from Douglas about what DIRECT_SCAV means.

Revision 1.48 - (view) (annotate) - [select for diffs]
Fri Jan 9 15:10:52 2004 UTC (10 years, 3 months ago) by toy
Branch: MAIN
Changes since 1.47: +2 -2 lines
Diff to previous 1.47 , to selected 1.11.2.4
Oops.  It's i386, not x86.

Revision 1.47 - (view) (annotate) - [select for diffs]
Fri Jan 9 05:07:39 2004 UTC (10 years, 3 months ago) by toy
Branch: MAIN
Changes since 1.46: +83 -28 lines
Diff to previous 1.46 , to selected 1.11.2.4
Update to sparc gencgc so that alloc-tn holds the
current-region-free-pointer.

Cross compile may be needed, but I'm not sure.  I only used
cross-compiling to do this change.

sparc/macros.lisp:
o Update the allocation macro appropriately for alloc-tn holding the
  current-region-free-pointer.

lisp/gencgc.c:
o Define macros for setting and getting *current-region-free-oointer*
  and *current-region-end-addr* so sparc can use alloc-tn.
  *current-region-free-pointer* isn't used anymore, but is still a
  static symbol.  It's been replaced by alloc-tn.
o On sparc, set_alloc_pointer doesn't need to do anything anymore.
o Don't need to call update_dynamic_space_free_pointer anymore.
o The assertion that *current-region-free-pointer* is a fixnum is no
  longer valid on sparc because that is alloc-tn which contains the
  pseudo-atomic bits.

lisp/sparc-arch.c:
o The allocation trap instruction is now preceeded by a SUB
  instruction.  Handle that correctly.  Keep support for the OR
  instruction for now, but should be removed.
o Set alloc-tn from current_dynamic_space_free_pointer.

Revision 1.46 - (view) (annotate) - [select for diffs]
Fri Oct 24 02:57:00 2003 UTC (10 years, 5 months ago) by toy
Branch: MAIN
CVS Tags: snapshot-2003-11, snapshot-2003-12
Changes since 1.45: +56 -25 lines
Diff to previous 1.45 , to selected 1.11.2.4
Add support for catching heap overflows, similar to the control stack
overflow checking.  Enable with :heap-overflow-check.  We reserve some
number of pages on the heap.  When the heap reaches the reserved
pages, an overflow warning is signalled.  The reserved pages are set
0.  This allows some additional allocation to happen during debugging,
if necessary.  If another overflow happens, we throw to top-level.

Sparc only right now.

	* lisp/sparc-assem.S (_do_dynamic_space_overflow_error): New
	function to handle a heap overflow error.
	(_do_dynamic_space_overflow_warning): New function to handle heap
	overflow warning.

	* lisp/sparc-arch.c (sigill_handler): Handle the two new traps
	caused by heap overflows.

	* lisp/interrupt.c (interrupt_handle_space_overflow): New function
	to handle interrupt caused by heap space overflows.

	* lisp/gencgc.c (handle_heap_overflow): New function to handle
	heap overflows.
	(gc_alloc_new_region): Use handle_heap_overflow.
	(gc_alloc_large): Use handle_heap_overflow

	* compiler/sparc/parms.lisp (static-symbols): Add new static
	symbols for heap overflow checking:
	dynamic-space-overflow-error-hit and
	dynamic-space-overflow-warning-hit.

	* compiler/generic/new-genesis.lisp (finish-symbols): Initialize
	the new dynamic-space-overflow-error-hit and
	dynamic-space-overflow-warning-hit static symbols.

	* code/lispinit.lisp (:heap-overflow-check): Add
	heap-overflow-check to *runtime-features*, if necessary.
	("reserved_heap_pages"): Access to alien variable for heap
	overflow.
	(*reserved-heap-pages*): Default number of heap pages to reserve
	for heap overflow.
	(%top-level): Set reserved-heap-pages to the default.

	* code/interr.lisp (dynamic-space-overflow-warning-hit): Add
	function to handle heap overflow warnings.
	(dynamic-space-overflow-error-hit): Add function to handle heap
	overflow error.

	* code/error.lisp (heap-overflow): Add new condition type for heap
	overflow

Revision 1.45 - (view) (annotate) - [select for diffs]
Thu Oct 16 16:18:03 2003 UTC (10 years, 6 months ago) by toy
Branch: MAIN
Changes since 1.44: +2 -2 lines
Diff to previous 1.44 , to selected 1.11.2.4
Zap out any bits for pseudo-atomic stuff when getting the
alloc-pointer.

Revision 1.44 - (view) (annotate) - [select for diffs]
Mon Oct 13 21:56:55 2003 UTC (10 years, 6 months ago) by toy
Branch: MAIN
Changes since 1.43: +4 -4 lines
Diff to previous 1.43 , to selected 1.11.2.4
It's lowtag_Mask, not lowtagMask.

Revision 1.43 - (view) (annotate) - [select for diffs]
Mon Oct 13 20:42:56 2003 UTC (10 years, 6 months ago) by toy
Branch: MAIN
Changes since 1.42: +23 -23 lines
Diff to previous 1.42 , to selected 1.11.2.4
Convert a few more void* to char*.  Add a few casts as needed to get
rid of some compiler warnings.

Revision 1.42 - (view) (annotate) - [select for diffs]
Mon Oct 13 19:01:36 2003 UTC (10 years, 6 months ago) by toy
Branch: MAIN
Changes since 1.41: +25 -21 lines
Diff to previous 1.41 , to selected 1.11.2.4
Changes so this will compile under Sun C:

o Convert some void* objects to char* objects so we don't try to do
  pointer arithmetic on void* objects.
o Change scavenge to take void* instead of lispobj*.  Cast
  appropriately in the body.
o Change uses of scavenge to match the new definition.

Revision 1.41 - (view) (annotate) - [select for diffs]
Thu Oct 9 19:04:28 2003 UTC (10 years, 6 months ago) by toy
Branch: MAIN
Changes since 1.40: +10 -9 lines
Diff to previous 1.40 , to selected 1.11.2.4
Use the new constants lowtagMask, pseudo_atomic_Value, and
pseudo_atomic_InterruptedValue instead of the bare 7's, 4's, and 3's
and 1's in the code.

Revision 1.40 - (view) (annotate) - [select for diffs]
Wed Oct 8 16:49:34 2003 UTC (10 years, 6 months ago) by toy
Branch: MAIN
Changes since 1.39: +50 -33 lines
Diff to previous 1.39 , to selected 1.11.2.4
o The Sparc port was not correctly scavenging the interrupt handlers.
  Use the same code as used for x86.
o Clean up the code a bit, adding the functions
  scavenge_interrupt_handlers and scavenge_control_stack.  Move some
  printing noise into those functions.

There are still bugs here that are exercised by Eric Marsden's
cl-bench with cpu performance counter library.

Revision 1.39 - (view) (annotate) - [select for diffs]
Mon Sep 29 16:29:03 2003 UTC (10 years, 6 months ago) by toy
Branch: MAIN
CVS Tags: snapshot-2003-10
Changes since 1.38: +18 -3 lines
Diff to previous 1.38 , to selected 1.11.2.4
It's ok for stack references to come from stack objects, because that
can happen when we scavenge the control stack on non-x86.

Revision 1.38 - (view) (annotate) - [select for diffs]
Tue Sep 16 11:13:46 2003 UTC (10 years, 7 months ago) by gerd
Branch: MAIN
Changes since 1.37: +124 -51 lines
Diff to previous 1.37 , to selected 1.11.2.4
	* src/lisp/gencgc.c (GC_ASSERTIONS): New define for activating GC
	assertions.  Define it for sparc.
	(invalid_stack_start, invalid_stack_end) [GC_ASSERTIONS]: New
	variables.
	(garbage_collect_generation) [GC_ASSERTIONS]: Set them.
	(check_escaped_stack_object) [GC_ASSERTIONS]: New function.
	(scavenge) [GC_ASSERTIONS]: Call it.

Revision 1.37 - (view) (annotate) - [select for diffs]
Mon Sep 15 16:41:12 2003 UTC (10 years, 7 months ago) by toy
Branch: MAIN
Changes since 1.36: +7 -2 lines
Diff to previous 1.36 , to selected 1.11.2.4
Don't blindly set current_dynamic_space_free_pointer in the
set_alloc_pointer macor.  Instead, carefully merge the value with any
pseudo-atomic bits that might have been set.

Revision 1.36 - (view) (annotate) - [select for diffs]
Mon Sep 15 14:28:18 2003 UTC (10 years, 7 months ago) by gerd
Branch: MAIN
Changes since 1.35: +18 -7 lines
Diff to previous 1.35 , to selected 1.11.2.4
	* src/lisp/gencgc.c (alloc_pseudo_atomic): Wrap alloc in
	pseudo-atomic only if not already in a pseudo-atomic section.

Revision 1.35 - (view) (annotate) - [select for diffs]
Sat Sep 13 14:21:30 2003 UTC (10 years, 7 months ago) by gerd
Branch: MAIN
Changes since 1.34: +91 -138 lines
Diff to previous 1.34 , to selected 1.11.2.4
	* src/lisp/alloc.c (alloc) [GENCGC]: Define as alloc_pseudo_atomic.

	* src/lisp/gencgc.c (set_pseudo_atomic_atomic)
	(clr_pseudo_atomic_atomic) [i386]: Reverse the values assigned
	to PSEUDO_ATOMIC_ATOMIC, remove semicolons.
	(alloc_pseudo_atomic): New function wrapping alloc in a
	pseudo-atomic section.
	(alloc): Remove code for the non-PA case, rewrite the rest
	to use a loop instead of goto.

Revision 1.34.2.1 - (view) (annotate) - [select for diffs]
Wed Sep 3 11:32:06 2003 UTC (10 years, 7 months ago) by gerd
Branch: lisp-executable
Changes since 1.34: +58 -55 lines
Diff to previous 1.34 , to next main 1.112 , to selected 1.11.2.4
Fred Gilham's Lisp executable support for CMUCL.

Revision 1.34 - (view) (annotate) - [select for diffs]
Wed Aug 27 16:00:35 2003 UTC (10 years, 7 months ago) by toy
Branch: MAIN
CVS Tags: lisp-executable-base
Branch point for: lisp-executable
Changes since 1.33: +7 -7 lines
Diff to previous 1.33 , to selected 1.11.2.4
Remove the fprintf's where the hash table invariant wasn't true during
scavenging.  It appears to be true before and after GC.

Revision 1.32.2.1 - (view) (annotate) - [select for diffs]
Mon Aug 25 17:06:43 2003 UTC (10 years, 7 months ago) by gerd
Branch: dynamic-extent
Changes since 1.32: +354 -62 lines
Diff to previous 1.32 , to next main 1.112 , to selected 1.11.2.4
Merge with HEAD.

Revision 1.33 - (view) (annotate) - [select for diffs]
Fri Aug 22 13:20:03 2003 UTC (10 years, 7 months ago) by toy
Branch: MAIN
CVS Tags: sparc_gencgc_merge
Changes since 1.32: +354 -62 lines
Diff to previous 1.32 , to selected 1.11.2.4
Merge sparc_gencgc_branch that adds support for gencgc for Solaris.

Revision 1.32.4.5 - (view) (annotate) - [select for diffs]
Tue Aug 19 17:46:06 2003 UTC (10 years, 8 months ago) by toy
Branch: sparc_gencgc_branch
Changes since 1.32.4.4: +22 -4 lines
Diff to previous 1.32.4.4 , to branch point 1.32 , to next main 1.112 , to selected 1.11.2.4
o Add some comments about reg_LIP
o If lip_register_pair is -1, don't modify reg_LIP because SC_REG of
  -1 is probably not what we want.

Revision 1.32.4.4 - (view) (annotate) - [select for diffs]
Mon Aug 18 21:13:48 2003 UTC (10 years, 8 months ago) by toy
Branch: sparc_gencgc_branch
Changes since 1.32.4.3: +75 -108 lines
Diff to previous 1.32.4.3 , to branch point 1.32 , to selected 1.11.2.4
gencgc.c:
o More code cleanups, getting rid of GC_DEBUG
o Make fpu_state variable large enough to hold all 32 double-float
  regs for Sparc V9.
o Get rid of unneeded debugging printfs
o Rename update_x86_dynamic_space_free_pointer to
  update_dynamic_space_free_pointer since it's not x86 specific
  anymore.
o Get rid of the need_to_pop_stack stuff.  It's not needed.
o Don't compile sniff_code_object and apply_code_fixups for non-x86.

save.c:
o Rename update_x86_dynamic_space_free_pointer to
  update_dynamic_space_free_pointer since it's not x86 specific
  anymore.
o Cleanup calls to gc_alloc_update_page_tables.

sparc-arch.c:
o Get rid of the need_to_pop_stack stuff.  It's not needed.
o Comment out pop_fake_control_stack_frame.

sparc-assem.S
o Save the extra 16 double-float regs, if FEATURE_SPARC_V9.

Revision 1.32.4.3 - (view) (annotate) - [select for diffs]
Mon Aug 18 02:23:57 2003 UTC (10 years, 8 months ago) by toy
Branch: sparc_gencgc_branch
Changes since 1.32.4.2: +6 -4 lines
Diff to previous 1.32.4.2 , to branch point 1.32 , to selected 1.11.2.4
Make these look more like the CVS HEAD versions for x86:

o Make enable_pointer_filter TRUE, just like CVS HEAD.
o Don't sniff_code_object just before apply_code_fixups.
o Turn off the check if a pointer is pointing to an invalid object
o Fix up a few more places where we should have written i386, not x86.

Revision 1.32.4.2 - (view) (annotate) - [select for diffs]
Sun Aug 17 21:23:54 2003 UTC (10 years, 8 months ago) by toy
Branch: sparc_gencgc_branch
Changes since 1.32.4.1: +45 -30 lines
Diff to previous 1.32.4.1 , to branch point 1.32 , to selected 1.11.2.4
o Turn off the runtime GC checks, and verbose messages.
o Leave gc_assert on for sparc, but off for others.
o Add comment that pre_verify_gen_0 is very, very slow!
o Add sparc support for saving the FPU state in
  print_generation_stats.
o It's i368, not x86, stupid!
o Turn off DEBUG_PRINT_CONTEXT_INDEX
o Turn off RESCAN_CHECK

Revision 1.32.4.1 - (view) (annotate) - [select for diffs]
Fri Aug 15 20:45:40 2003 UTC (10 years, 8 months ago) by toy
Branch: sparc_gencgc_branch
Changes since 1.32: +408 -118 lines
Diff to previous 1.32 , to selected 1.11.2.4
Initial port of gencgc to Solaris.

Revision 1.32 - (view) (annotate) - [select for diffs]
Thu Mar 27 12:42:10 2003 UTC (11 years ago) by gerd
Branch: MAIN
CVS Tags: dynamic-extent-base, remove_negative_zero_not_zero, sparc_gencgc
Branch point for: dynamic-extent, sparc_gencgc_branch
Changes since 1.31: +468 -422 lines
Diff to previous 1.31 , to selected 1.11.2.4
	* code/hash-new.lisp (make-hash-table): Put warning about
	creating weak tables in #-gencgc.

	* lisp/gencgc.c (gc_assert): Ensure macro expansion is always a C
	statement.
	(struct hash_table): New struct.
	(HASH_TABLE_SIZE, EQ_HASH): New macros.
	(weak_hash_tables): New variable.
	(survives_gc, u32_vector, free_hash_entry, record_for_rehashing)
	(scav_hash_entries, scav_weak_entries, scan_weak_tables)
	(scav_hash_vector): New functions.
	(scav_vector): Removed.
	(scav_weak_pointer, trans_weak_pointer, scan_weak_pointers):
	Cleaned up.
	(gc_init_tables): Use scav_hash_vector instead of scav_vector.
	(garbage_collect_generation): Call scan_weak_tables.
	(everywhere): Add casts, change format strings, etc. to placate
	the compiler.

	* lisp/FreeBSD-os.h: Fix a function prototype.

Revision 1.31.2.1 - (view) (annotate) - [select for diffs]
Sun Mar 9 12:51:56 2003 UTC (11 years, 1 month ago) by gerd
Branch: cold-pcl
Changes since 1.31: +410 -315 lines
Diff to previous 1.31 , to next main 1.112 , to selected 1.11.2.4
*** empty log message ***

Revision 1.31 - (view) (annotate) - [select for diffs]
Wed Feb 12 20:52:37 2003 UTC (11 years, 2 months ago) by emarsden
Branch: MAIN
CVS Tags: cold-pcl-base, release-18e, release-18e-base, release-18e-pre1, release-18e-pre2
Branch point for: cold-pcl, release-18e-branch
Changes since 1.30: +9 -1 lines
Diff to previous 1.30 , to selected 1.11.2.4
Add a more informative error message to the stuff that is printed to the
terminal when gencgc exhausts dynamic space.

Revision 1.30 - (view) (annotate) - [select for diffs]
Wed Jan 29 21:28:27 2003 UTC (11 years, 2 months ago) by cracauer
Branch: MAIN
Changes since 1.29: +1 -6 lines
Diff to previous 1.29 , to selected 1.11.2.4
Remove a #ifdef ITA which sneaked in with the profiler changes.  No
functional change for normal builds.

Revision 1.29 - (view) (annotate) - [select for diffs]
Wed Jan 29 02:23:49 2003 UTC (11 years, 2 months ago) by toy
Branch: MAIN
Changes since 1.28: +2 -2 lines
Diff to previous 1.28 , to selected 1.11.2.4
Export print_generation_stats.

Revision 1.28 - (view) (annotate) - [select for diffs]
Tue Nov 5 22:45:48 2002 UTC (11 years, 5 months ago) by cracauer
Branch: MAIN
Changes since 1.27: +108 -5 lines
Diff to previous 1.27 , to selected 1.11.2.4
Make (time ...) and the profiler do precise measuring of space
allocation.  It will also not overflow or bomb out when consing
amounts cross most-positive fixnum.

The new profiler also has an interface to plug in your own print
function (also dictates sorting or results).

This is written on gencgc/x86 but tests indicated the fallsbacks for
other platforms work.

The dfixnum package included here is sketchy.

Revision 1.27.2.1 - (view) (annotate) - [select for diffs]
Fri Oct 4 23:14:04 2002 UTC (11 years, 6 months ago) by pmai
Branch: UNICODE-BRANCH
Changes since 1.27: +55 -1 lines
Diff to previous 1.27 , to next main 1.112 , to selected 1.11.2.4
Checked in Brian Spilsbury's experimental Unicode, locales, and dialect
support patchset.  This lives on its own branch, so that people can
play with it and tweak it, without disturbing 18e release engineering
on the main branch.  Bootstrapping has only been tried on LINKAGE_TABLE
x86/Linux builds.  A working cross-compile script is checked in under
bootfiles/19a/boot1-cross-unicode.lisp.  The script still leaves you
with some interactive errors, on the cross compile, which you should
answer with 2.  See the mailing list for more information.

Revision 1.27 - (view) (annotate) - [select for diffs]
Tue Aug 27 22:18:31 2002 UTC (11 years, 7 months ago) by moore
Branch: MAIN
CVS Tags: LINKAGE_TABLE, UNICODE-BASE
Branch point for: UNICODE-BRANCH
Changes since 1.26: +80 -26 lines
Diff to previous 1.26 , to selected 1.11.2.4
On x86 FreeBSD and Linux, change the way foreign symbol addresses are resolved.
They now go through a table -- effectively a new space in the core file.
Function references are resolved lazily, data references are resolved on startup
and when a .so is loaded.  The end result is that cores can be dumped that
contain references to symbols in shared libraries.  Also, the dependence of the core on addresses in the Lisp runtime is broken.

The linkage table feature is controlled by :linkage-table and LINKAGE_TABLE in C
runtime.  Several foreign symbols are now Lisp static symbols, so a cross
compile is required whether or not the new stuff is used.  I've checked in
boot4-cross-foreign-linkage.lisp that builds the compiler for linkage table; do whatever you usually do for the non-linkage table case:)  Seriously, lets start
a discussion on standardizing "cross compilation," not to mention the general
build procedure.

Revision 1.11.2.6 - (view) (annotate) - [select for diffs]
Sat Mar 23 18:51:01 2002 UTC (12 years ago) by pw
Branch: RELENG_18
CVS Tags: RELEASE_18d
Changes since 1.11.2.5: +32 -37 lines
Diff to previous 1.11.2.5 , to branch point 1.11 , to next main 1.112 , to selected 1.11.2.4
Mega commit to bring RELENG_18 branch in sync with HEAD in preparation
for release tagging 18d.

Revision 1.26 - (view) (annotate) - [select for diffs]
Mon Jan 28 20:19:39 2002 UTC (12 years, 2 months ago) by pmai
Branch: MAIN
CVS Tags: PRE_LINKAGE_TABLE
Changes since 1.25: +10 -3 lines
Diff to previous 1.25 , to selected 1.11.2.4
Added specialised port to NetBSD (1.5.2) on x86.  Since the code-base
was already cleaned up with the OpenBSD port, this doesn't require
massive changes.

Since current NetBSD is ELF-based by default, we don't make use of the
ELF feature, or in other words:  The presence of the NetBSD feature
implies ELF, since there is no support for non-ELF NetBSD.

The page-protection feature of the generational GC had to be turned
off, because currently NetBSD 1.5.2 doesn't provide access to the
faulting memory address in SIGSEGV signal-handlers on the x86
platform.

The memory is validated/mmapped in 64MB chunks in os-validate, in
order to circumvent a restriction on NetBSD, that prevented me from
mmapping 128MB or more apiece.  It has been pointed out to me that
this may be caused by the default ulimit on data segment sizes, which
seems kind of strange, but might be true.  In any case the current
approach works OK, and doesn't require root interaction, so is
probably the better approach.

Revision 1.25 - (view) (annotate) - [select for diffs]
Thu Dec 6 19:15:44 2001 UTC (12 years, 4 months ago) by pmai
Branch: MAIN
Changes since 1.24: +3 -3 lines
Diff to previous 1.24 , to selected 1.11.2.4
Added specialised port to OpenBSD (2.9).  Many parts of the original
code which were previously conditionalized on :FreeBSD, are now
conditionalized on :BSD instead, with the :BSD feature now implying a
4.4BSD(lite2) derived OS.  This should make future BSD-ports easier.
FreeBSD and OpenBSD are differentiated by having either :FreeBSD or
:OpenBSD on the features list.

Currently the OpenBSD port does not have working ELF support, because
OpenBSD 2.9 is still non-ELF by default.  So don't put ELF on the
features list when building for OpenBSD, or fix the code to work
correctly in this case instead.

Revision 1.24 - (view) (annotate) - [select for diffs]
Fri Oct 27 19:25:55 2000 UTC (13 years, 5 months ago) by dtc
Branch: MAIN
Changes since 1.23: +6 -5 lines
Diff to previous 1.23 , to selected 1.11.2.4
Cleanup compiler warnings.

Revision 1.11.2.5 - (view) (annotate) - [select for diffs]
Tue Oct 24 13:33:56 2000 UTC (13 years, 5 months ago) by dtc
Branch: RELENG_18
CVS Tags: RELEASE_18c
Changes since 1.11.2.4: +40 -24 lines
Diff to previous 1.11.2.4 , to branch point 1.11
o Add the command line switch -dynamic-space-size for setting the size
  of the dynamic space. DYNAMIC_SPACE_SIZE now defines the maximum
  size, and when defined DEFAULT_DYNAMIC_SPACE_SIZE gives the default.

o Increase the maximum dynamic space size for Linux x86 to 1.625GB,
  with the default remaining at 512MB.

o Define the default dynamic space size for FreeBSD x86 to also be 512MB,
  with a maximum of 2GB.

Revision 1.23 - (view) (annotate) - [select for diffs]
Tue Oct 24 13:32:31 2000 UTC (13 years, 5 months ago) by dtc
Branch: MAIN
Changes since 1.22: +40 -24 lines
Diff to previous 1.22 , to selected 1.11.2.4
o Add the command line switch -dynamic-space-size for setting the size
  of the dynamic space. DYNAMIC_SPACE_SIZE now defines the maximum
  size, and when defined DEFAULT_DYNAMIC_SPACE_SIZE gives the default.

o Increase the maximum dynamic space size for Linux x86 to 1.625GB,
  with the default remaining at 512MB.

o Define the default dynamic space size for FreeBSD x86 to also be 512MB,
  with a maximum of 2GB.

Revision 1.11.2.4 - (view) (annotate) - [selected]
Sat Oct 21 12:51:04 2000 UTC (13 years, 5 months ago) by dtc
Branch: RELENG_18
Changes since 1.11.2.3: +9 -7 lines
Diff to previous 1.11.2.3 , to branch point 1.11
Use the value 0xffffffff to represent auto_gc_trigger disabled rather
than zero, simplifying the trigger test.

Revision 1.22 - (view) (annotate) - [select for diffs]
Sat Oct 21 12:50:42 2000 UTC (13 years, 5 months ago) by dtc
Branch: MAIN
Changes since 1.21: +9 -7 lines
Diff to previous 1.21 , to selected 1.11.2.4
Use the value 0xffffffff to represent auto_gc_trigger disabled rather
than zero, simplifying the trigger test.

Revision 1.21 - (view) (annotate) - [select for diffs]
Tue Sep 5 08:51:51 2000 UTC (13 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.20: +3 -2 lines
Diff to previous 1.20 , to selected 1.11.2.4
Minor source cleanups.

Revision 1.20 - (view) (annotate) - [select for diffs]
Sun Aug 27 14:45:41 2000 UTC (13 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.19: +16 -30 lines
Diff to previous 1.19 , to selected 1.11.2.4
Misc source cleanup.

Revision 1.11.2.3 - (view) (annotate) - [select for diffs]
Thu Jun 22 12:55:39 2000 UTC (13 years, 9 months ago) by dtc
Branch: RELENG_18
Changes since 1.11.2.2: +3 -1 lines
Diff to previous 1.11.2.2 , to branch point 1.11 , to selected 1.11.2.4
Flush a verbose debug message that occurred rarely during code fixups.

Revision 1.19 - (view) (annotate) - [select for diffs]
Thu Jun 22 12:55:19 2000 UTC (13 years, 9 months ago) by dtc
Branch: MAIN
Changes since 1.18: +3 -1 lines
Diff to previous 1.18 , to selected 1.11.2.4
Flush a verbose debug message that occurred rarely during code fixups.

Revision 1.11.2.2 - (view) (annotate) - [select for diffs]
Tue May 23 16:38:15 2000 UTC (13 years, 10 months ago) by pw
Branch: RELENG_18
Changes since 1.11.2.1: +2603 -2262 lines
Diff to previous 1.11.2.1 , to branch point 1.11 , to selected 1.11.2.4
This set of revisions brings the RELENG_18 branch up to HEAD in preparation
for an 18c release.

Revision 1.18 - (view) (annotate) - [select for diffs]
Wed Jan 19 18:09:16 2000 UTC (14 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.17: +1 -10 lines
Diff to previous 1.17 , to selected 1.11.2.4
Flush references to zero_stack as this has been handled by
scrub-control-stack for some time.

Revision 1.17 - (view) (annotate) - [select for diffs]
Sun Jan 9 19:36:07 2000 UTC (14 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.16: +105 -105 lines
Diff to previous 1.16 , to selected 1.11.2.4
Replace the PAGE_BYTES define with PAGE_SIZE, and use it where
appropriate rather than the constant 4096.

Remove uses of the variable last_used_page.

Revision 1.16 - (view) (annotate) - [select for diffs]
Thu Sep 16 15:25:18 1999 UTC (14 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.15: +3 -3 lines
Diff to previous 1.15 , to selected 1.11.2.4
Portability fix for the signal masked check in alloc.

Revision 1.15 - (view) (annotate) - [select for diffs]
Wed Aug 25 14:25:06 1999 UTC (14 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.14: +287 -273 lines
Diff to previous 1.14 , to selected 1.11.2.4
Improve the packing of information into the page table, reducing the
table size by 25%, and move to a fixed layout of the page flags to
better support future atomic operations for threaded code.

Revision 1.14 - (view) (annotate) - [select for diffs]
Sat Aug 21 18:03:25 1999 UTC (14 years, 8 months ago) by dtc
Branch: MAIN
Changes since 1.13: +2387 -2052 lines
Diff to previous 1.13 , to selected 1.11.2.4
Source cleanup.

Revision 1.13 - (view) (annotate) - [select for diffs]
Sat Dec 19 16:32:56 1998 UTC (15 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.12: +5 -4 lines
Diff to previous 1.12 , to selected 1.11.2.4
Few fixes for the page zero check in gc_free_heap; work around a gcc
problem, and limit the range of pages to be checked.

Revision 1.12 - (view) (annotate) - [select for diffs]
Wed Dec 16 12:38:05 1998 UTC (15 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.11: +2 -2 lines
Diff to previous 1.11 , to selected 1.11.2.4
Fix a bug in the page zero checking code of gc_free_heap.

Revision 1.11.2.1 - (view) (annotate) - [select for diffs]
Tue Jun 23 11:24:55 1998 UTC (15 years, 9 months ago) by pw
Branch: RELENG_18
CVS Tags: RELEASE_18b
Changes since 1.11: +1 -1 lines
Diff to previous 1.11 , to selected 1.11.2.4
This (huge) revision brings the RELENG_18 branch up to the current HEAD.
Note code/unix-glib2.lisp not yet included -- not sure it is ready to go.

Revision 1.11 - (view) (annotate) - [select for diffs]
Sat Mar 21 07:45:51 1998 UTC (16 years, 1 month ago) by dtc
Branch: MAIN
Branch point for: RELENG_18
Changes since 1.10: +162 -1 lines
Diff to previous 1.10 , to selected 1.11.2.4
Save and reset FP state during the execution of
print_generation_stats. This is necessary when this function is called
directly from the allocation routines on a failure and the FP state is
setup for Lisp.

Revision 1.10 - (view) (annotate) - [select for diffs]
Tue Mar 10 18:30:24 1998 UTC (16 years, 1 month ago) by dtc
Branch: MAIN
Changes since 1.9: +52 -3 lines
Diff to previous 1.9 , to selected 1.11.2.4
Add verify_zero_fill to verify that the free memory is zero filled;
helping detect heap corruption. The check can be enabled during a heap
verify via gencgc_enable_verify_zero_fill, or it can be called from
lisp via the alien function gencgc_verify_zero_fill.

Revision 1.9 - (view) (annotate) - [select for diffs]
Wed Jan 14 10:40:58 1998 UTC (16 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.8: +3 -3 lines
Diff to previous 1.8 , to selected 1.11.2.4
Make search_dynamic_space an external as it is need by purify.  Make
valid_dynamic_space_pointer a static local as a similarly name
function is used by purify.

Revision 1.8 - (view) (annotate) - [select for diffs]
Wed Dec 31 18:07:42 1997 UTC (16 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.7: +25 -9 lines
Diff to previous 1.7 , to selected 1.11.2.4
Enhance scavenge_thread_stacks to only scavenge the live portion of
the saved stack vectors.

Revision 1.7 - (view) (annotate) - [select for diffs]
Thu Dec 25 09:33:48 1997 UTC (16 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.6: +11 -3 lines
Diff to previous 1.6 , to selected 1.11.2.4
Take more care when scavenging the Lisp functions of the interrupt
handlers, taking care to avoid SIG_DFL, and SIG_IGN which is equal to
1 on FreeBSD and looks like a forwarding point which causes trouble.

Revision 1.6 - (view) (annotate) - [select for diffs]
Wed Dec 3 08:17:02 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.5: +59 -62 lines
Diff to previous 1.5 , to selected 1.11.2.4
Further cleanup of the interrupts masked check in alloc.

Cleanup the verbose messages, making them all dependent on the verbose
level, and disable them all by default.

Revision 1.5 - (view) (annotate) - [select for diffs]
Tue Dec 2 02:50:45 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.4: +19 -20 lines
Diff to previous 1.4 , to selected 1.11.2.4
Add some pointer coercions to reduce the number of compiler warnings.

Revision 1.4 - (view) (annotate) - [select for diffs]
Mon Dec 1 16:44:57 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.3: +7 -2 lines
Diff to previous 1.3 , to selected 1.11.2.4
Disable a test in alloc that tested that interrupts were disabled in
non-pseudo-atomic allocations, because this code has been debugged now
and the test may not have been very portable.

Revision 1.3 - (view) (annotate) - [select for diffs]
Sun Nov 30 05:08:29 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.2: +73 -42 lines
Diff to previous 1.2 , to selected 1.11.2.4
Improve the efficiency of gc_free_heap by having it assume free pages
are zero filled and not write protected which should be the case.

Make more of the consistency checks conditional and disable them all.

Revision 1.2 - (view) (annotate) - [select for diffs]
Sat Nov 29 20:32:41 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.1: +2 -2 lines
Diff to previous 1.1 , to selected 1.11.2.4
Comment out verbose message in maybe_adjust_large_object.

Revision 1.1 - (view) (annotate) - [select for diffs]
Tue Nov 25 17:59:18 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Diff to selected 1.11.2.4
Conservative generational garbage collection for the x86 port.

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.

  Diffs between and
  Type of Diff should be a

Sort log by:

  ViewVC Help
Powered by ViewVC 1.1.5