Vincent St-Amour
5353dd1076
free-vars: add mode that also reports module-bound variables
...
As a separate mode, for backwards compatibility.
2015-12-07 10:42:12 -06:00
Vincent St-Amour
22caaad944
free-vars: nicer error on submodules
2015-12-07 10:31:12 -06:00
Matthew Flatt
715bdbb49e
incremental GC: avoid already-finished finalizaton work
...
Avoid extra work svaing finalization information and
re-chaining old-generation records for a major GC.
2015-12-06 12:36:52 -05:00
Matthew Flatt
e44926fcee
increemntal GC: compact when a major GC is forced early
...
This change further defends against fragmentation when
incremental mode isn't working well.
2015-12-06 12:36:52 -05:00
Matthew Flatt
b5131321d7
force non-inremental GC if excessive fragmentation
...
Increemntal GC skips the old-generation compaction phase.
For most applications, that's ok, but it's possible for
fragmentation to get out of hand. Detect that situation
and fall back to non-incremental mode for one major GC.
2015-12-06 12:36:52 -05:00
Sam Tobin-Hochstadt
a0c09c19ac
Add test for 21316e3ebf
.
2015-12-06 12:22:37 -05:00
Sam Tobin-Hochstadt
21316e3ebf
Don't copy immutable vectors in vectorof
if not needed.
...
This happens only if the element contract is a flat contract.
2015-12-06 10:45:13 -05:00
Sam Tobin-Hochstadt
b8d4248053
Copy immutable vector more efficiently.
...
Thanks to @mflatt for the suggestion.
2015-12-06 10:31:01 -05:00
Robby Findler
e814d742a7
fix the late-neg construction for flat contracts
...
Thanks to Sam for finding this problem!
2015-12-05 23:03:06 -06:00
Robby Findler
8b3369f81c
set up some information for TR
2015-12-05 15:35:46 -06:00
Matthew Flatt
d87e3ead7f
fix test for the case that the addon dir is missing
2015-12-05 14:41:22 -05:00
Leif Andersen
f88ba77a5c
Fix travis to build against latest Racket build.
2015-12-04 18:01:57 -05:00
Matthew Flatt
fef695f066
fix call-with-atomic-output-file
for pathless filename
...
Closes #1156
2015-12-03 08:05:17 -07:00
Matthew Flatt
724dc2fdbf
fix namespace-mapped-symbols
forcing of lazy binding info
2015-12-02 13:14:28 -07:00
Sam Tobin-Hochstadt
a6eb00a41c
Avoid warning for unused variable.
2015-12-02 10:01:01 -05:00
Matthew Flatt
345b1a8187
refine the Guide section in incremental GC
2015-12-01 17:47:29 -07:00
Matthew Flatt
d56e7309ad
GC: fix yet another problem counting allocated bytes
2015-12-01 16:21:32 -07:00
Jay McCarthy
67bf4349ca
Revert "Assume that files that start with . are not modules"
...
This reverts commit fc34292486
.
2015-12-01 14:21:09 -05:00
Jay McCarthy
cfc28ee82a
Implement . ignoring directly in test, because module suffixes has other uses
2015-12-01 14:21:05 -05:00
Gustavo Massaccesi
b175241961
Flatten nested begin and begin0 forms
...
The nested begin/begin0 are flattened at read time, but some
optimizations may create new instances.
2015-12-01 13:50:16 -03:00
Matthew Flatt
7e949d5513
GC: skip memory accounting if demand goes away
...
Memory accounting is enabled on demand; if demand goes
away --- as approximated by no live custodians having
a limit or previously been queried for memory use ---
then stop accounting until demand resumes.
2015-12-01 08:14:38 -07:00
Matthew Flatt
bef34606cb
incremental GC: fix handling of ephemerons
...
Fix the case that an old-generation finalizer ends up
on a modified page after all old-generation marking
is complete.
Also, make sure epehemerons are checked after previous
marking that may have left the stack empty.
2015-12-01 05:50:06 -07:00
Matthew Flatt
03302c3f30
repair an assertion in the GC
2015-12-01 05:50:06 -07:00
Matthew Flatt
8363144818
incremental GC: make finalization more incremental
2015-12-01 05:50:06 -07:00
Matthew Flatt
f30d8bd562
incremental GC: fix overcount of immobile objects
2015-12-01 05:50:06 -07:00
Matthew Flatt
d306ecdf3a
incremental GC: fix accumulation of page-repair work
...
Too much work was being saved for the final step of a
major GC.
2015-12-01 05:50:06 -07:00
Matthew Flatt
e9c722cf22
re-tune incremental GC parameters
...
With immobile-object allocation repaired, smaller increments
work.
2015-12-01 05:50:06 -07:00
Matthew Flatt
7901962647
incremental GC: fix phantom-byte counting
2015-12-01 05:50:06 -07:00
Matthew Flatt
fa3cabd681
incremental GC: avoid allocating immobile on old-generation page
...
The allocation strategy for immobile objects avoids some fragmentation
in non-incremental mode, but it interferes with finishing up an
incremental major collection, so trade some fragmentation for
an earlier finish (which is far more likely to use less memory
instead of more, despite extra fragmentation).
2015-12-01 05:50:06 -07:00
Phil Nguyen
734563a7f4
remove duplicate examples in doc for arity=?
and arity-includes?
2015-11-30 10:40:06 -06:00
Jay McCarthy
fc34292486
Assume that files that start with . are not modules
2015-11-30 08:30:25 -05:00
Jay McCarthy
091db74ab6
Don't include directory when using default suffixes
2015-11-30 08:29:54 -05:00
Matthew Flatt
817fdad2d5
Windows with MinGW: Fix network address resolution
...
Use the same code as for MSVC compilation, which is as simple
as defining `HAVE_GETADDRINFO`.
Closes PR 15192
2015-11-29 17:31:47 -07:00
Vincent St-Amour
e7e75c2292
Fix exponentiation of negative single-floats and moderately large bignums.
2015-11-29 15:46:56 -06:00
Matthew Flatt
a389678556
improve interaction of incremental mode and finalization
...
Really, just improve when majors GCs are forced to trigger
further finalizations. This improvement makes `(collect-garbage)`
followed by `(collect-garbage 'incremental)` move more
reliably into incremental mode.
2015-11-28 15:54:45 -07:00
Robby Findler
71d80bace5
whoops: don't want to do the precondition check twice
2015-11-28 16:27:21 -06:00
Robby Findler
8cc2e27ca7
improve error checking in version/utils
...
closes #1152
2015-11-28 16:26:09 -06:00
Robby Findler
86934d4a4f
adjust contract printing so that it looks like
...
the constructors in print mode and so that it
cooperates with pretty printing to get some
newlines in there
2015-11-28 13:47:27 -06:00
Matthew Flatt
c9e9b4e400
add info on incremental GC mode to the Guide
2015-11-28 11:55:43 -07:00
Matthew Flatt
9407afa0a2
faster GC traversal of shared closure prefixes
2015-11-28 11:21:19 -07:00
Matthew Flatt
89807d178e
fix accounting of nursery for logging
...
The pre-GC count didn't include the obejcts allocated on
the most recent nursery page.
2015-11-28 10:36:12 -07:00
Matthew Flatt
c3ac1c6bf4
reduce incremental work on (collect-garbage 'minor)
...
When `(collect-garbage 'minor)` is combined with incremental
mode, do less incremental work. At the same time, don't
skip an incremental GC just because a major GC is ready.
2015-11-28 10:36:12 -07:00
Matthew Flatt
e968cfbde4
fix accounting of phantom bytes for incremental GC
...
Also fixes accounting when a phantom-bytes value is
treated as potentially having a backpointer.
2015-11-28 10:35:24 -07:00
Matthew Flatt
81e0636843
fix counting of interior-pointer-allowed objects
...
Words versus bytes.
2015-11-28 09:22:11 -07:00
Matthew Flatt
ca0e9b8b2f
report timing of incremental step
2015-11-28 09:22:11 -07:00
Matthew Flatt
d37bfd45ae
avoid unnecessary closure-fixup work in incremental mode
2015-11-28 09:22:11 -07:00
Matthew Flatt
46fe53fadb
incremental GC: avoid extra traverals of weak-link lists
...
When incremental mode has already gone through weak boxes
and arrays, a major GC doesn't need to see them again.
2015-11-28 09:22:11 -07:00
Matthew Flatt
ad2dd24fb8
incremental GC: split "incremental" finalization to single step
...
Don't finalize after performing some marking work, since
finalization is in one chunk, so it's best to avoid combining
that delay with others.
2015-11-28 06:09:39 -07:00
Matthew Flatt
493eb1de7f
tweak incremental-GC parameters
...
Based on experiments with a few programs.
2015-11-27 15:08:54 -07:00
Matthew Flatt
ba8103bbde
add PLT_INCREMENTAL_GC
...
Although calling `(collect-garbage 'incremental)` in a program with
a periodic task is the best way to request incremental collection, it's
handy for some experiments to have an environment variable that turns
it on permanently.
This change also makes incremental-mode minor collections log as "mIn"
instead of "min", and it changes the first field of the logged
`gc-info` structure to be a mode symbol instead of a boolean.
2015-11-27 08:02:18 -07:00