Commit Graph

213 Commits

Author SHA1 Message Date
Matthew Flatt
1baa0da991 use opportunistic 1-shot continuations for attachments
An attachment continuation link can be a 1-shot continuation, but
the existing 1-short continuation implementation tends to work
less well than mutishot continuations. An opportunistic 1-shot
continuation is like a multi-shot continuation, but if it is
called from a stack that is adjacent to the continuation, then
the stack is merged with the continuation's stack.

original commit: ea1eb3c5192d644ad4c4cbf755bcb6fd438cc364
2019-02-08 13:59:28 -08:00
Matthew Flatt
9974c3bf7e repair to single-valued tracking
original commit: 8eb7644eb5def8d2a0864ef71610457d8be8c111
2019-02-02 14:12:27 -07:00
Matthew Flatt
3db5d5ab2d repair for eqv? on an immediate flonum
original commit: fd544591c6d8ba59456d5cbe6e9fc7fc010410f2
2019-02-02 13:35:30 -07:00
Matthew Flatt
627c809de4 Merge branch 'fpstr' of github.com:mflatt/ChezScheme
original commit: 871ccfa8688baa865731e047c59677b652d808f3
2019-02-01 05:26:06 -07:00
Matthew Flatt
7027a71f01 fix string allocation for callable argument or foreign-call return
The `dofretu...*` intrinsics used %ac1 without declaring it as a used
registers, which effectively broke register allocation for handling
string/bytevector foreign-call results or callable arguments.

original commit: 993fb9036acad5445319f458fd971b1a1d8e9f84
2019-01-27 13:01:57 -07:00
Matthew Flatt
75d6219a99 improve cp0 single-value detection, epsecially for loops
Compute some simple fixpoints so that `+`, `*`, etc. can be inferred
to be single-valued.

original commit: f6b6f034016936f9dde49bea5c66ea0f4a7f7676
2019-01-22 18:43:17 -07:00
Matthew Flatt
e95fb6008b add procedure-known-single-valued?
original commit: f2a45ea588003c662bc2109e38ff052832d0c262
2019-01-22 06:37:12 -07:00
Matthew Flatt
8070a7b910 Merge branch 'eqfl' of github.com:mflatt/ChezScheme
original commit: 8b36396eacb139e0fff70efcd2c9dc842815324f
2019-01-22 05:57:17 -07:00
Matthew Flatt
6e999d02c3 add ordered guardians
Also, avoid quadratic time in GC for guardian chains.

original commit: 273f79a7be5c04370c399e6b1d8af799efc8b33f
2019-01-22 05:19:38 -07:00
Matthew Flatt
67a0b0948f Merge branch 'leftassoc' of github.com:mflatt/ChezScheme
original commit: 19d0cb77e6b6dd32fa4a7a26505ee952b4efa756
2019-01-21 10:54:19 -07:00
Matthew Flatt
ae71f7472d add enable-arithmetic-left-associative
Add a parameter to constrain the compiler (off by default) to
implement `+`, `*`, and variants as left-associative when given
multiple arguments.

original commit: d126ba3364893e66263c65af1cd6dbdd8b021439
2019-01-21 10:51:16 -07:00
Matthew Flatt
c647fd031d Merge branch 'titlecase' of github.com:mflatt/ChezScheme
original commit: 244185f858a01b4679d2add4f0f6dc90c9f92c3d
2019-01-20 16:35:27 -07:00
Matthew Flatt
4752199578 fix string-titlecase on special-casing characters
original commit: 0ae58f75bcf76fb41e571579a81ab2080379455c
2019-01-20 16:34:25 -07:00
Matthew Flatt
b27f3c0a94 Merge branch 'phantom' of github.com:mflatt/ChezScheme
original commit: 743a56d8f1920620e8f6e14edca7984101425e14
2019-01-20 07:56:59 -07:00
Matthew Flatt
538def47de add phantom bytevectors
original commit: 001917fd98ac6a0f13ccab902e15b9d2169c4b9c
2019-01-20 07:41:09 -07:00
Matthew Flatt
b945bc9318 fixups for eqvnan and expt merges
original commit: 95165bd192db6136583a7141587173900e2da0c9
2019-01-18 07:52:51 -07:00
Matthew Flatt
b61298b139 Merge branch 'expt' of github.com:mflatt/ChezScheme
original commit: f634e2e45f60f60071c83769edce17541e5e6705
2019-01-18 05:59:56 -07:00
Matthew Flatt
0795cfb2a7 special cases exact numbers for number function
Especially 0s and especially `expt`.

original commit: bb9f7f75f7ada6b829de0fdc5b692de7b9613574
2019-01-18 05:59:03 -07:00
Matthew Flatt
82a556ea54 fixup for string->number
Make the recent changes insensitive to whether `/` produces
an exact value when its first argument is an exact 0.

original commit: 2d0f59dfdfa9deb37efded804ebd17b98e26f8b6
2019-01-18 05:27:51 -07:00
dyb
ee9a4b3f59 profile counts are now maintained even for code that has been
reclaimed by the collector and must be released explicitly by the
programmer via (profile-release-counters).
  pdhtml.ss, primdata.ss,
  globals.h, externs.h, fasl.c, prim5.c, prim.c, alloc.c, scheme.c,
  misc.ms,
  release_notes.stex, system.stex

original commit: 68e20f721618dbaf4c1634067c2bee24a493a750
2019-01-17 09:43:18 -08:00
Matthew Flatt
84d1e19487 Merge branch 'eqvnan' of github.com:mflatt/ChezScheme
original commit: 55b68c7585947c9c07d1be1b643d10dede983874
2019-01-17 09:05:51 -07:00
Matthew Flatt
6a54141df2 change eqv? to recognize +nan.0s as equivalent
original commit: 46ad2395a2c81326efe555876b8e0be012e24814
2019-01-17 09:05:13 -07:00
Matthew Flatt
6974fad58e Merge branch 'strnum' of github.com:mflatt/ChezScheme
original commit: 7e2ba9a879b4b59304616bc6867f25a09b2cda02
2019-01-16 14:49:25 -07:00
Matthew Flatt
d8d4b76917 fix precision on reading with large exponents
A large-magnitude mantissa can cancel some of the magnitude of an
exponent.

Also, make numbers like 1/0e1 be divide-by-zero parse errors
instead of +inf.0 (like 1/0, and in contract to 1/0# or 1/0#e1).

original commit: 820145370046aa3b4d4863ad896d40ffeae01453
2019-01-16 14:48:48 -07:00
Matthew Flatt
cdc552b4c5 fixup for wrapper-procedure
original commit: 91c411aa2834a0220a5cc557deb62bc8b316d0fa
2019-01-15 17:19:58 -07:00
Matthew Flatt
51fc773598 Merge branch 'arity-error' of github.com:mflatt/ChezScheme
original commit: dbf2bec7dc7d1db9aaef6c95786a41137da66003
2019-01-15 15:28:08 -07:00
Matthew Flatt
fee19dacb8 include provided-argument count in arity error
original commit: 56b25afdccfb4156f6dff55e2a17f2fc3b51c254
2019-01-15 15:27:31 -07:00
Matthew Flatt
3e297e025e adjust make-arity-wrapper to enforce the supplied arity mask
original commit: a9ec7da3ea3b8edc665b060bcba675248119d260
2019-01-15 11:56:03 -07:00
Matthew Flatt
dd5384be5e Merge branch 'eqv' of github.com:mflatt/ChezScheme
original commit: a4ceb7f75ce3dbb5ae83d45dd00a4d6c8eb69bca
2019-01-11 21:36:07 -07:00
Matthew Flatt
1f150fdbce improve eqv? code generation
original commit: bcc117f228c984a267031e25e068df3210137f4e
2019-01-11 21:35:31 -07:00
dyb
20ab41bb10 - redirecting output of first two checkboot runs to /dev/null so the
ignored exception, if any, does not show up in the make output.
    s/Mf-base

original commit: 4de3eab4d76feea17431099f798a343a6205e50e
2019-01-11 18:10:38 -08:00
Matthew Flatt
54282dedc4 Merge branch '17-5-Types-Pass' of github.com:gus-massa/ChezScheme
original commit: caf857a33e13c116afa6e2d960eccbada3604190
2019-01-11 15:35:20 -07:00
Matthew Flatt
ea29ba02f7 Merge branch 'sv' of github.com:mflatt/ChezScheme
original commit: 9dd62e2d4a44879ddb210bb6ebe7ad600b832634
2019-01-10 19:26:37 -07:00
Gustavo Massaccesi
6afcc310dd use "single-valued" to simplify some call-with-values patterns
original commit: 0b9d2f0d778789ee9fda8a7249c8d7da329c9bcd
2019-01-10 19:23:36 -07:00
Matthew Flatt
b78838a641 cp0: move only known-single-valued out of single-value context
In safe compilation modes, avoid turning an error like

 (let ([x (values 1 2)]) x)

or

 (car (list (values 1 2)))

into a program that returns multiple values or

 (if (list (values 1 2)) 3 4)

into a program that returns without an error.

In addition, refrain from moving an expression from a non-tail
position within a procedure to a tail position, unless the expression
is not only single valued but also gauarnteed not to inspect the
immediate continuation (e.g., using `call/cc` and comparing the result
to a previously captured continuation). This constraint applies even
in unsafe compilation modes, because the intent it to provide some
guarantees about non-tail positions to complement existing guarantees
of tail positions.

original commit: 91e9631576e7b97137be856e985609320e327f32
2019-01-08 20:27:26 -07:00
Matthew Flatt
2fd94d5573 repair to cp0 changes for single-value checking
original commit: 1d0d02a1fd01629a2b72b82e95b60084f5bff4fb
2019-01-08 18:46:43 -07:00
Matthew Flatt
8e53fec779 revise optimizations from the "noncm" branch
original commit: 444a284e69c652344174d730596caf7852be050b
2019-01-08 10:09:02 -07:00
Matthew Flatt
3658fad6b7 Merge branch 'count' of github.com:mflatt/ChezScheme
original commit: 9d0a647e87089c91195cc49480d848212025a7ed
2019-01-05 09:55:07 -07:00
Matthew Flatt
aaaa5fefa1 add compute-size-increments
Also adds `get-initial-thread`, since threa values are useful with
`compute-size[-increments]`.

Changes the compiler to inline `weak-pair?` and `ephemeron-pair?`,
since that provides better performance for `compute-size-increments`.

original commit: 57d0cc13f8e932972cba3837b4f54e9c86786091
2019-01-05 09:49:12 -07:00
Matthew Flatt
f6b40d39ba Merge branch 'noncm' of github.com:mflatt/ChezScheme
original commit: b99995a8d38565cbedfbe46ab8a6006ee936b331
2018-12-30 08:18:13 -07:00
Matthew Flatt
9a366730f4 cp0: move only known-single-valued out of single-value context
Aviod turning an error like

 (let ([x (values 1 2)]) x)

or

 (car (list (values 1 2)))

into a program that returns multiple values.

original commit: 4efb3d6f226d9131f87023e45ff2b7e4713da8ae
2018-12-30 08:15:55 -07:00
Matthew Flatt
69b92a0ca4 sync vfasl repair
original commit: b234ef2f5cb8352b9755b2cc908d562a25d18c62
2018-12-29 06:16:55 -06:00
Matthew Flatt
a0e9eed93f Merge dfasl branch of mflatt/ChezScheme
original commit: c6168b2d0b1b97e9822bc8eae2e08900cebb7152
2018-12-28 08:45:06 -06:00
Matthew Flatt
7c548bb3a1 update vfasl merge
original commit: 99dac3f53f4a7d2b2c373489135e5d270c256726
2018-12-28 08:39:21 -06:00
Matthew Flatt
6d3fc30233 avoid fasl overflow of C stack
When writing a fasl stream, add extra graph points as needed
to limit recursive reading to about 500 non-tail recursions.

original commit: a6759efdc6ac68e45ec8755a5fe9b75038e173a5
2018-12-28 08:26:50 -06:00
Matthew Flatt
d8dc4c71cc Merge branch 'separate' of ../ChezScheme-vfasl
original commit: 84734ded0f503f6604e7461a8be5e1e795a92efa
2018-12-24 05:32:24 -07:00
Matthew Flatt
545a465cf4 Merge ../ChezScheme-vfasl
original commit: dbe15d6cae6f23c4e218974ac83f36a935292ad2
2018-12-24 05:28:16 -07:00
Matthew Flatt
71c2efd2fc rename to compile-vfasl
original commit: 51c525dacc6f2a5627aa2cb1c13a25e072b04c5e
2018-12-23 10:52:51 -07:00
Matthew Flatt
14e910409c experiment with a different fasl format
Use `vfasl-convert-file` to convert to the vfasl format, something
like this:

 (vfasl-convert-file "orig/petite.boot" "new/petite.boot" '())
 (vfasl-convert-file "orig/scheme.boot" "new/scheme.boot" '("petite"))
 (vfasl-convert-file "orig/racket.boot" "new/racket.boot" '("petite" "scheme"))

original commit: a40886e2fba741ca8cfc5ebd16b902d6414da0ae
2018-12-21 21:06:08 -07:00
Matthew Flatt
a993c9c11e combine multiple fasl to one vfasl when possible
original commit: d8d4400b42196088defac994b7f97a26446d8ed2
2018-12-21 08:58:28 -07:00