Commit Graph

2122 Commits

Author SHA1 Message Date
Matthew Flatt
3a99a19c56 reduce double major GCs
When a major GC triggers finalization, another major
GC is scheduled immediately on the grounds that the
finalizer may release other values. That was important
at once time, but the finalization and weak-reference
implementation has improved to the point where the
extra ful GC no longer seems necessary or useful.
2015-12-20 08:58:21 -07:00
Matthew Flatt
513849c1e3 incremental GC: make accounting incremental for the root custodian 2015-12-20 08:58:21 -07:00
Matthew Flatt
9711000b70 drop generation 1/2 except in incremental mode
Originally, generation 1/2 was intended to delay major
collections when the heap is especially large. It doesn't
seem to be effective in that case, and it can slow down
minor GCs, so continue to use it only in incremental
mode (where it helps significantly with fragmentation).
2015-12-20 08:58:21 -07:00
Matthew Flatt
6957780cd5 incremental GC: tune departure from incremental mode
At the completion of an incremental major GC, if incremental
mode wasn't requested recently, schedule an immediate major
GC to reduce the heap back to its normal footprint.
2015-12-20 08:58:21 -07:00
Robby Findler
15e24fce78 adjust set/c to follow the late-neg protocol
and make it do some work earlier
2015-12-19 22:17:59 -06:00
Robby Findler
53fa16fc9c adjust hash/c to more completely follow the late-neg protocol 2015-12-19 22:17:59 -06:00
Robby Findler
bd4b243963 port xml contracts to late-neg 2015-12-19 22:17:58 -06:00
Robby Findler
3b1e535049 port recursive-contract to late-neg 2015-12-19 22:17:58 -06:00
Robby Findler
a712117030 adjust syntax-parse's contract support to use the late-neg projections 2015-12-19 22:17:58 -06:00
Robby Findler
00c0ddb7f6 port vector/c to late-neg projection (and throw away some redundant code) 2015-12-19 22:17:58 -06:00
Robby Findler
efcbd12116 port class/c and friends to late-neg projections 2015-12-19 22:17:58 -06:00
Robby Findler
93d286914e port new-∀/c and new-∃/c to late-neg 2015-12-19 11:41:38 -06:00
Robby Findler
8e2179a6eb port struct-type-property/c to late-neg and add some tests for it 2015-12-19 11:41:37 -06:00
Robby Findler
557b039f3c add more racket/contract non late-neg projection warnings 2015-12-19 11:41:37 -06:00
Robby Findler
4a29792934 port ->i to late-neg 2015-12-19 11:41:37 -06:00
Matthew Flatt
7d2b538293 fix marshaling of a compiled top-level begin-for-syntax
Closes #1174
2015-12-19 09:37:32 -07:00
Matthew Flatt
2fad028fd5 fix incremental GC bug
Also, fix reporting of whether a minor GC was in incremental mode.
2015-12-19 09:37:32 -07:00
Robby Findler
506c9be0cd add the ability to make chaperone contracts to ->i 2015-12-18 20:41:51 -06:00
Sam Tobin-Hochstadt
962a72dfda Properly handle (place ...) in submodules.
Closes #1173 and PR 12934.
2015-12-17 19:35:08 -05:00
Sam Tobin-Hochstadt
e5c5feca6d Bind channel properly in place/context.
Closes #1169.
2015-12-17 19:17:28 -05:00
Matthew Flatt
074202bdd2 raco setup: don't completely ignore a collection without compilation
A collection's "info.rkt" might have `(define compile-omit-paths
'all)` but also other setup actions, so don't completely ignore
a collection directory just because there's nothing to compile.
2015-12-17 07:55:39 -07:00
Matthew Flatt
ad1fe0c529 raco setup: make "nothing to do" count as success 2015-12-17 07:50:20 -07:00
Matthew Flatt
d7184227e1 fix mutation of shared "self" module path index for submodules 2015-12-17 06:21:05 -07:00
ben
0d633fefd3 typo: string-contains precondition 2015-12-16 14:07:16 -05:00
Matthew Flatt
ca237910b3 fix make-syntax-delta-introducer with a #f argument
Closes PR 15202
2015-12-15 17:11:45 -07:00
Vincent St-Amour
3dc49139cf Fix more missing parties in contract instrumentation. 2015-12-15 14:31:38 -06:00
Vincent St-Amour
d0d6d719af Abstract contract instrumentation. 2015-12-15 13:37:47 -06:00
Andrew Kent
b4afecab97 slightly more explicit error msg 2015-12-15 11:33:16 -06:00
Gustavo Massaccesi
6985150e0b Don't drop expressions with side effects in eq? reduction
The expression (eq? x y) is reduced to #f when the types of
x and y are known. Reduce this to (begin x y #f) when they
have side effects.
2015-12-15 00:25:00 -03:00
Vincent St-Amour
b8df0a38a2 Add instrumentation for optimized struct/dc. 2015-12-14 13:57:07 -06:00
Robby Findler
bd77a0102c add blame-missing-party? and document it and blame-add-missing-party 2015-12-14 12:53:35 -06:00
Vincent St-Amour
8bd47f3f8a Fix instrumentation of struct/dc.
Unbreaks the contract profiler.
2015-12-14 10:52:23 -06:00
Matthew Flatt
f7c67f5c45 incremental GC: always use generation 1/2 in incremental mode
Also, make nursery 1/4 as big in incremental mode, and
correspondingly tune the amount of work to perform per
collection by 1/4 its old value. Using generation 1/2
reduces fragmentation that would otherwise be increase
by a smaller nursery.
2015-12-13 17:16:05 -07:00
Matthew Flatt
d01aec1b32 JIT: always use buffer padding of 200
The main intent of this change is to raise the buffer size
for ARM, but that would leave only 32-bit x86 at size 100, so
just make it size large for all machines.
2015-12-12 14:11:17 -07:00
Matthew Flatt
c6b8ba7c4a JIT: add missing checks for buffer space 2015-12-12 08:13:34 -07:00
Matthew Flatt
d66af86a58 JIT on ARM: add assertion to check long-jump mode
The same assertion is present already in Thumb mode, but
add it to non-Thumb mode.
2015-12-12 07:48:14 -07:00
Sam Tobin-Hochstadt
e45e5712de Use quote-srcloc to avoid paths in the compiled code.
Closes #1165.
2015-12-11 13:12:11 -05:00
Robby Findler
6593594ebf port struct/dc to late-neg style projections 2015-12-10 18:41:37 -06:00
Robby Findler
4aabe505be fix missing party and indy blame interaction
(also add all of the fields to the equal and hashing
functions)
2015-12-10 18:37:50 -06:00
Robby Findler
a952f11bc5 unbreak the creation of first-order contracts that
don't supply a val-first projection
2015-12-10 09:21:41 -06:00
Matthew Flatt
f5d5277ae7 fix binding table when shadowing imports 2015-12-10 04:56:14 -07:00
Matthew Flatt
b7dd829a6f bump version number 2015-12-09 21:06:55 -07:00
Matthew Flatt
835d098eb2 racket/contract: fix blame in arre case
Remove an incorrect syntax quote that could cause the contract
system to be blamed (and also lead to an absolute path in
bytecode).
2015-12-09 21:06:55 -07:00
Matthew Flatt
1d7429f1d7 match: avoid recording full paths
Use a syntax object to store a source location, letting the
marshal process for syntax objects deal with non-relative
paths.
2015-12-09 21:06:55 -07:00
Matthew Flatt
2743ea06bb avoid paths in case-lambda names
Filter absolute path names for `case-lambda` in the same way as for
`lambda`.
2015-12-09 21:06:55 -07:00
Robby Findler
3d7d906cc1 tweak and clean up the contract combinators api
- uniformly remove the extra layers of calls to unknown functions for
  chapereone-of?  checks that make sure that chaperone contracts are
  well-behaved (put those checks only in contracts that are created
  outside racket/contract)

- clean up and simplify how missing projection functions are created
  (val-first vs late-neg vs the regular ones)

- add some logging to more accurately tell when late-neg projections
  aren't being used

- port the contract combinator that ->m uses to use late-neg

- port the </c combinator to use late-neg
2015-12-09 21:55:58 -06:00
Matthew Flatt
c0f4eb8287 inctemental GC: make finalization more incremental
Allow the process of discovering finalizers to be incremental,
including allow interruptions in later levels of ordered
finalization.
2015-12-08 07:53:03 -07:00
Matthew Flatt
6f106d9adc incremental GC: more precising counting of work done 2015-12-08 05:17:44 -07:00
Leif Andersen
5cd2220366 Add coverall support and use new TravisCI Infrastructure 2015-12-07 17:54:28 -05:00
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