Commit Graph

944 Commits

Author SHA1 Message Date
Paulo Matos
7313545ebf Add i386 arch
original commit: db690229a30c125990cf8c89b3cb9c29afa784e6
2020-04-26 13:50:35 +02:00
Paulo Matos
9314bd9bdc Install 32 bit libs
original commit: 5cf419506d3fd29e7ef82b55fcfe31d75db6f597
2020-04-26 13:46:32 +02:00
Paulo Matos
d3c991211b fix arch name
original commit: 532392ce4e8788228a30c12a38767f460538b298
2020-04-26 13:42:55 +02:00
Paulo Matos
bb68010646 enter dir
original commit: f3911a672310bb21637cdf4901cb2e3ce8d8b53e
2020-04-26 13:40:44 +02:00
Paulo Matos
8f93ceebba Fix mach names
original commit: d76bb24964a0eb65fa9205f2564b7e62d5c6c5ff
2020-04-26 13:36:30 +02:00
Paulo Matos
d310797c69 Print target machine information
original commit: 8c9ee4f00940af5ee557c2c93892209651757610
2020-04-26 13:35:50 +02:00
Paulo Matos
1d90152729 No need curl on vm
original commit: 89de1e481062272e5b6fc9d1a7049a33084c9696
2020-04-26 13:32:17 +02:00
Paulo Matos
b3eb7c1301 Give up on container use - it's broken in Actions
original commit: f1d99416e05d80e38e9da362ece926814339445c
2020-04-26 13:23:52 +02:00
Paulo Matos
da02466c21 Remove macos, fix home
original commit: d3bd54c562099a65618be8d692828d4437e0e067
2020-04-26 13:21:48 +02:00
Paulo Matos
99c1814b8c Install curl dependency
original commit: b3a765ab2291c1879810b13e9e4b1f9a73515b40
2020-04-26 13:18:48 +02:00
Paulo Matos
65146afcf5 Move from Travis to GitHub Actions
This consolidates use of GitHub Actions, since we are using it as well
with racket/racket.

original commit: c3bf252c76ef594dfccf332def30f3d9c733282d
2020-04-26 13:12:35 +02:00
Matthew Flatt
ac6467fd8c add a better test for list-assuming-immutable?
This test helped get the current implementation working, but I forgot
to add it to "5_2.ms".

original commit: a8f59ed7262025e130e913f420e2519ed0ac00f5
2020-04-25 17:20:41 -06:00
Matthew Flatt
120082f3f9 add list-assuming-immutable?
Build in a Racket-style `list?` using GC cooperation to make recording
the result cheaper.

original commit: 32189af3e4dfc3596fba3163fd1a8295b830448b
2020-04-25 15:33:56 -06:00
Matthew Flatt
7ba7a815b0 tweak copy-vs-mark dispatching
The C compiler doesn't generate a tail call in a place where I
expected one, and maybe it's better to branch at the call site anyway.

original commit: 70fa8e7f7bd891c548c877cabdd15073aa2aa01b
2020-04-24 10:20:50 -06:00
Matthew Flatt
752ee94563 avoid fragmentation at the chunk level
original commit: 5b52a846af7f5d9c030e6dc71f46d83b3f1b8e4c
2020-04-23 17:25:03 -06:00
Matthew Flatt
d755dbc00f cs: fix phantom bytes effect on maximum-memory-bytes
original commit: 78f2c1e3ee1329f44742a23c28a76538eef8cbdd
2020-04-22 16:30:47 -06:00
Matthew Flatt
f53f20b5b9 GC marking (non-copying) mode
Change the GC so that it can mark and sweep objects in-place, instead
of always copying. This change is helpful for reducing peak memory
use while performing a collection on a large, old heap.

Some non-copying support was already in place for locked objects,
but the new implementation is faster and more general. As an
alternative to locking, the storage manager now provides "immobile"
allocation (currently only for bytevectors, vectors, and boxes),
which allocates an object that won't move but that can be GCed if
it's not referenced. A locked object is an object that has been
immobiled and that is on a global list --- mostly the old,
non-scalable implementation of locked objects brought back, since
immobile objects cover the cases that need to scale.

original commit: aecb7b736cb1d52764c292fa6364a674958dfde3
2020-04-22 07:10:02 -06:00
Matthew Flatt
f4de537e1c gc: generate sweep_dirty_object
The `sweep_dirty_intersecting` function still had hand-implemented
sweep cases.

original commit: c51b46b3cc71ed0dbc523071dce3cc496965e0b6
2020-04-18 10:40:15 -06:00
Matthew Flatt
02fca53fba repair object counting
The leak repair wasn't quite right, and it broke `object-counts`.

original commit: 4f3ea0d8d093908e35067a02e1f78e033a5bb655
2020-04-17 08:16:55 -06:00
Matthew Flatt
c4ffe39efb fix leak related to object counts
When collecting to the maximum generation with object counts enabled,
a structure type would effectively become permanently reachable.

Also, add `bytes-finalized` to report how many bytes were associated
with guardian-based finalization by the most recent collection.

original commit: 852f5e2de95a26d3500321c4d4d732407945a57a
2020-04-16 16:16:13 -06:00
Matthew Flatt
d540162c0d sync expected errors for mats
original commit: 778e6426bc775963472e794abaca6e8739779e79
2020-04-04 16:48:14 -06:00
Matthew Flatt
63baf24ad5 repairs for locking
Fix clearing of locked-object information and copying adjacent pairs.

original commit: 53d092c50c1c24017c52b6e002e6073b81747e09
2020-04-04 16:05:20 -06:00
Matthew Flatt
5458323280 fix segment initialization for new fields
original commit: 90f358a2a33f90d9b64b6750988f679a6fcfcc7d
2020-04-04 12:43:04 -06:00
Matthew Flatt
af9c81b205 add missing workarea setup for vfasl.inc
original commit: 6934ef1acc9a9a4102fd92187073fb49c983ca32
2020-04-04 11:50:49 -06:00
Matthew Flatt
d76a610426 bump version number
original commit: 46de3359c4dd20809fc63496fa4545518396aa6b
2020-04-04 10:30:12 -06:00
Matthew Flatt
45b618c4c1 remove old implementation of compute-size-increments
The old implementation is replaced by the new mkgc.ss-based
implemented.

original commit: 7a8eaf81df0dd52cde58ed51f5210b9398cb8bb6
2020-04-04 10:28:06 -06:00
Matthew Flatt
afebbdd6a9 convert GC to "mkgc.ss" implementation
Replace repetitive C code in "gc.c" and "vfasl.c" with an
implementation using a little "Parenthe-C" language, which is a
somewhat declarative description of object tracing. From that
descrition, we generate different kinds of tracing functions, such as
the copy function or the sweep function.

The little language is still bascially C, just with parentheses and
parameterization that is much better than trying to use the C
preprocessor. (The "mkgc.ss" file includes the compiler from
Parenthe-C to C.)

Besides replacing existing code, we also generate a new traversal to
implement `compute-object-sizes`. Finally, the GC can now perform a
fused `collect` and `compute-object-sizes` in a single traversal.

Also improve the way that locked objects are detected during GC. This
can make a significant difference (on the order of 10-20% for a full
collection) when locked objects are long-lived.

original commit: de1f5c41d729ac75822a1f1e633ec6d042c883dc
2020-04-04 10:21:16 -06:00
Matthew Flatt
8656bbae7e fix ephemeron allocation
Only half(!) of the needed space was actually allocated. The extra
space is ony used after a GC, however, and a GC makes the extra room,
so that's why things haven't fallen over completely, but that's more
subtle than intended.

original commit: 3d72bc14b9247d6764809cb651403dbb4063a905
2020-04-04 10:01:04 -06:00
Gustavo Massaccesi
5c91b7f9ac cptypes: fix reduction of $value in ignored expressions
original commit: 858cc5fe0f40e73a3473e3cc3f506c2c232c0a81
2020-04-01 18:59:22 -03:00
Matthew Flatt
f828cb1eaa fix emphemeron-key tracking in a segment with locked objects
original commit: 9d1252b176e972f92030599dae0ce159c9d36c5b
2020-04-01 07:53:32 -06:00
Matthew Flatt
ec138ba57c repair compute-size-increments for anonymous fields
The size of a record with anonymous fields was not included in the
computed size.

original commit: 1c44e61a8174629cacc71adedccc028e982ca323
2020-03-28 08:34:48 -06:00
Matthew Flatt
de465e4f92 fix vfasl problems
Fix problems with record meta-types and symbol interning interleaved
with vfasl loading.

original commit: 2d98d94b3c4d634ba882f10eaebc627a5d9a1ccd
2020-03-28 08:34:48 -06:00
Matthew Flatt
26a83b4b8e avoid fold-left on records in compute-size-increments
original commit: 76713b4a708efbe1b3698d9febc9d28225f383c5
2020-03-28 08:34:48 -06:00
Matthew Flatt
bb4e1c5c51 avoid copying property lists in inspector
original commit: cab986a82105814e605bb03cc38000dff79dfb61
2020-03-28 08:34:48 -06:00
Gustavo Massaccesi
6a964d7600 cptypes: add fuel for simple? and single-valued?
So they can recognize easy cases like the expansion of not

(not x) => (if x #f #t)

original commit: 83f43e4fd228c3df503f8ab972aec71efa4ba496
2020-03-24 09:22:33 -03:00
Gustavo Massaccesi
a72817e69c cptypes: add handlers for atan and char-name
They had a very strange signature, than needs a special case.

original commit: 16d94b6731982f76548fc26c0e3524b253ddbb66
2020-03-24 09:21:08 -03:00
Gustavo Massaccesi
f976cec5da cptypes: remove discardable operations in arguments that are ignored after a reduction
After a reduction like (pair? (list <x> <y>)) => (begin (list <x> <y>) #t) make a semi-shallow
reduction of the argument, so it is further reduced to (begin <x> <y> #t) and even remove <x> or <y>
if they have no side effects.

original commit: fe085761cbd200f4c67025d968d6d1418ab7d3e7
2020-03-24 08:13:09 -03:00
Matthew Flatt
c920f3953d collect in main thread when active
For a collect rendezvous, call the collect-notify handler in
the main thread if it is active. A collect-notify handler can
then make sure the main thread is active and try again, if
that's useful to an application.

original commit: 0bc286e81827f029dd02a3627a192edd053b3b91
2020-03-23 15:32:00 -06:00
Matthew Flatt
b5bce547d2 fix x86 (32-bit) __collect-safe callable
original commit: 530e6ac49b6ac31c2993517cb15633de73e6c85a
2020-03-17 20:31:37 -06:00
Gustavo Massaccesi
16b9ffb57c cptypes: fix reduction of record?
Check that the rtd argument is single valued. For example
(record? 5 (values 1 2))
was incorrectly reduced to
(begin 5 (values 1 2) #f)

original commit: 543ba171cee6c03b4207de5ea970573dd85dd3a0
2020-03-13 15:20:30 -03:00
Matthew Flatt
840e5143e2 recognize long form of call/cc in optimization
original commit: 05c31cd27455bce6d122188da14b4973d8a49d7a
2020-03-13 08:14:39 -06:00
Matthew Flatt
5f57648104 add call-in-continuation
This operation effectively allows sending an expression back to a
continuation, instead of just a value. It's the same as Marc Feeley's
`continuation-slice` operation, but adjusted slightly to support
continuation attachments.

original commit: d0e36e72d20a6eaa5d9d8b795da5e77abde75289
2020-03-12 04:48:39 -06:00
Matthew Flatt
ad7f0b9b57 fix annotation argument in fasl step
original commit: e10716c3c6f456007ddfaee75ad07233b31c33d8
2020-03-07 07:59:16 -07:00
Matthew Flatt
35e77092f3 fix typo in a debugging assertion
original commit: 10148ea09455445a76b037e2e9fb5abcb72913ae
2020-03-07 07:06:05 -07:00
Gustavo Massaccesi
75872880f8 cptypes: rewrite implementation of primref->argument-predicate
Also, remove signatures from primref. Now the record is reverted to the one in
the main ChezScheme version.

And lift most of the code outside the cptypes function.

original commit: 8f4384e0a5e1e9b383f65e097d6088b30d8069e5
2020-03-07 08:47:37 -03:00
Gustavo Massaccesi
db47781c8c cptypes: rewrite primref->result-predicate
Also, move all result-types calculations to priminfo.ss

original commit: 5a36377edca85724e44a6462ad8a0e53b1c4f669
2020-03-07 08:47:37 -03:00
Gustavo Massaccesi
1cb4278a06 cptypes: pass an explicit variable for the prelex counter
The implicit counter to number the prelex has caused problems in the multithread
version many times, so make it an explicit arguments of the functions that is
passed around until the prelex-counter function uses it.

Perhaps it can be remover later, after rewriting the implementation of
define-specialize.

original commit: 6ca1db6a0159b6a7756fad7c5e25b0225c858609
2020-03-07 08:47:36 -03:00
Matthew Flatt
d2961790b0 add fasl terminator
While "\44\26\2\f6" currently works as a terminator for non-compressed
fasl streams, the working byte sequence varies as the fasl format
changes. Add "\177" as a simpler and unchanging terminator.

original commit: 332019360491be6cedd2063c9a8056183d764bbb
2020-03-05 17:05:22 -07:00
Gustavo Massaccesi
83e920e0a0 fix fasl-read signature
primdata.ss

original commit: 8a3300b4898fb2f8504512b9a8a91a41582d8b3a
2020-03-01 13:25:17 -03:00
Matthew Flatt
f8fa08dafb fix version in install makefile
original commit: 060bf8c21f1fc758de68d2eff0b6f9f802207c25
2020-02-23 07:20:24 -07:00