Commit Graph

225 Commits

Author SHA1 Message Date
Stephen Chang
0f39ee9b72 fix ni-range docs; add for tests 2016-01-19 14:22:02 -05:00
Stephen Chang
60845b2098 fix broken for tests in racket-test-core 2016-01-19 11:56:46 -05:00
Matthew Flatt
86f0d75a96 JIT: fix fast path for property-only chaperones
The recently added fast path for property-only chaperones did not
propagate the original object in the case that the property-only
chaperone wraps a `chaperone-procedure*` chaprerone.

Merge to v6.4
2016-01-19 06:51:25 -05:00
Matthew Flatt
1204aacd70 procedure-specialize: repair for literal syntax object
Fix `procedure-specialize` for a procedure that refers to a
syntax-object literal. A syntax-object literal becomes part of the
procedure closure, but in a special way that nomrally allows syntax
objects to be loaded on demand. For now, specialization counts as
a demand of the syntax object.

Merge to v6.4
2016-01-17 16:37:20 -07:00
Matthew Flatt
ea172ae459 unsafe-{chaperone,impersonate}-procedure: fix name on bad arity
When a procedure created by `unsafe-{chaperone,impersonate}-procedure`
is given the wrong number of arguments, the original procedure's name
should be used in the error message.
2016-01-16 23:06:33 -07:00
Matthew Flatt
0a266780fe unsafe-{impersonate,chaperone}-procedure: to racket/unsafe/ops
Move from racket/base, since the functions are unsafe.
2016-01-16 08:20:36 -07:00
Robby Findler
579d50b2d8 add procedure-result-arity 2016-01-16 00:02:20 -06:00
Robby Findler
41c8d5bc27 add unsafe-{chaperone,impersonate}-procedure 2016-01-16 00:02:19 -06:00
Jay McCarthy
df29c4e7e2 adjust double splicing behavior of rename-transformer-parameter 2016-01-14 17:29:15 -05:00
Gustavo Massaccesi
be82c27db3 fix bug in shifting of types during inlining
During inlining, the type information gathered in
code that was inside the lambda is copied to the outer
context. But the coordinates of the type information
were shifted in the wrong direction, so the type was
assigned to the wrong variable.

This bug is difficult to trigger, so the test is convoluted.

Merge to v6.4
2016-01-13 23:59:17 -03:00
Matthew Butterick
0fb11e61e6 update copyright from 2015 to 2016 2016-01-13 19:40:35 -07:00
Matthew Flatt
052c7e4c06 pick better names for new module-expansion properties
In retrospect, 'module-body-outside-context wasn't a good
name for a property that turned out to hold only an
inside-edge scope.
2016-01-13 07:53:50 -07:00
Matthew Flatt
6ea9e963c4 add context properties to a module expansion
Add 'module-body-inside-context, 'module-body-outside-context, and
'module-body-context-simple? properties to the expansion of a
`module` form. These properties expose scopes that are used by
`module->namespace` and taht appear in marshaled bytecode.
2016-01-13 07:44:31 -07:00
Jay McCarthy
b078cbc0ef Add define-rename-transformer-parameter and friends 2016-01-08 11:03:33 -05:00
Ben Greenman
3c496777ef add 'combinations' and 'in-combinations' 2016-01-07 23:44:53 -05:00
Jay McCarthy
d3c09ead19 Fix cpointer tags 2016-01-06 19:07:33 -05:00
Vincent St-Amour
656044b8fc random-sample: use reservoir sampling to do a single pass over sequences.
Suggested by Eli.
2016-01-05 14:42:43 -06:00
Sam Tobin-Hochstadt
5cf748d734 Fix set chaperone tests.
`set-first` just does an extract, not a remove.
2016-01-04 11:08:02 -05:00
Robby Findler
1c431e6f4d Clean up chaperone-hash-set and impersonate-hash-set and adjust set/c to match
Made the hash-set chaperones essentially forward the hash chaperone
operations, but now explain them all in terms of set-based operations
in the docs.

Also adjusted value-blame and has-blame? to support late-neg projections
2016-01-03 20:43:24 -06:00
Vincent St-Amour
707f9bffa6 random: move sequence support to random-ref, in racket/random.
And add `random-sample`.
2016-01-02 20:02:30 -06:00
Vincent St-Amour
6af2f711b7 Fix optimization tests. 2016-01-02 20:02:30 -06:00
Vincent St-Amour
0796350a88 Extend random to work with ranges and sequences.
Requested by Matthias.
2016-01-02 20:02:30 -06:00
Matthew Flatt
fdf56dfebf fix calculation of unexported bindings
When a module defines <name-1> and doesn't export it, but when
the module imports <name-2> and re-exports that refers to another
module's definition of <name-1>, then <name-1> wasn't properly
registered as an unexported binding.

Most of the implementation change is just a clean-up of an
unnecessary traversal from before the addition of a `count`
field in each hash table.
2016-01-02 15:10:23 -07:00
Matthew Flatt
c0915b02b0 pathlist-closure, tar, and tar-gzip: add #:path-filter
Also, add `#:skip-filtered-directory?` to `find-files`.

Less significantly, adjust `pathlist-closure` to be consistent in the
way that it includes a separator at the end of a directory path.
2016-01-01 13:52:37 -07:00
Matthew Flatt
567679bf0a {impersonate,chaperone}-hash: add equal-key-proc wrapper
The optional `equal-key-proc` wrapper effectively interposes on calls
to `equal?` and `equal-hash-code` for hash-table keys.
2015-12-31 09:22:57 -07:00
Matthew Flatt
a516304f6b fix specialization over a nested lambda 2015-12-29 07:04:17 -06:00
Robby Findler
a44ce40b56 fix a bug in 50405a2ca 2015-12-28 22:17:39 -06:00
Robby Findler
50405a2ca9 fix chaperone-hash-set and impersonate-hash-set for custom-set-types 2015-12-28 16:59:42 -06:00
Matthew Flatt
afa01fa763 allow optimizations around procedure-specialize
Although `procedure-specialize` should be useful in places where
inlining does not apply, allowing inlining and related optimizations
through it, anyway.
2015-12-28 07:37:29 -06:00
Robby Findler
bc12019af4 allow the interposition procedures to all be #f in chaperone-hash-set and impersonate-hash-set 2015-12-27 21:02:20 -06:00
Robby Findler
8f2874e4b5 fix impersonator properties for chaperone-hash-set and impersonate-hash-set 2015-12-26 22:37:00 -06:00
Robby Findler
daf19869de chaperone-hash-set fixes 2015-12-26 22:09:14 -06:00
Robby Findler
f0f85549ce add impersonate-hash-set and chaperone-hash-set 2015-12-25 22:58:55 -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
Sam Tobin-Hochstadt
e5c5feca6d Bind channel properly in place/context.
Closes #1169.
2015-12-17 19:17:28 -05:00
Matthew Flatt
d7184227e1 fix mutation of shared "self" module path index for submodules 2015-12-17 06:21:05 -07:00
Matthew Flatt
ca237910b3 fix make-syntax-delta-introducer with a #f argument
Closes PR 15202
2015-12-15 17:11:45 -07: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
Matthew Flatt
f5d5277ae7 fix binding table when shadowing imports 2015-12-10 04:56:14 -07:00
Matthew Flatt
d87e3ead7f fix test for the case that the addon dir is missing 2015-12-05 14:41:22 -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
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
7901962647 incremental GC: fix phantom-byte counting 2015-12-01 05:50:06 -07:00
Vincent St-Amour
e7e75c2292 Fix exponentiation of negative single-floats and moderately large bignums. 2015-11-29 15:46:56 -06:00
Vincent St-Amour
e9282d4f6e Fix expt of floats by large positive bignums.
Brings behavior in line with Gambit.

Closes GH #1148.
2015-11-25 17:46:36 -06:00
Matthew Flatt
5cb02282f5 fix round-to-even for exact->inexact on rationals
Thanks again to Robby
2015-11-22 18:09:11 -07:00
Matthew Flatt
ce7487182a fix too-early exact->inexact conversion in number parsing
Robby found this bug, continuing his streak that included
find the bugs behind commits f5dbd99e43 and 901ffdcbac.
2015-11-22 09:11:23 -07:00
Matthew Flatt
901ffdcbac fix inexact-number parsing problem
Bug introduced in c40229f756.
2015-11-22 06:50:49 -07:00
Matthew Flatt
f5dbd99e43 fix precision in exact->inexact on bignums
The strategy of converting a bignum to a flonum by converting on word
boundaries can lose one bit of precision. (If the use of a word
boundary causes a single bit to get rounded away, but the first bit of
the next word is non-zero, then the rounding might have been down when
it should have been up.)

Avoid the problem by aligning relative to the high bit, instead.
2015-11-22 06:50:49 -07:00