Matthew Flatt
376a673a0c
use internal `equal?'-based table in atomic mode
...
for kill safety
2011-08-09 13:10:41 -06:00
Kevin Tew
22ac1f8c54
Places - check for inter-place pointers
2011-08-08 10:58:22 -06:00
Matthew Flatt
2d4e14dca8
fix a kill-safety problem in the module name resolver
2011-08-06 08:25:36 -06:00
Matthew Flatt
84b9cf6b90
fix non-place-friendly parts of finalizer support
2011-08-04 06:57:32 -06:00
Matthew Flatt
3b8d00029e
fix `namespace-attach-module{-declaration}' problem
...
Closes PR 12048
2011-08-02 17:06:12 -06:00
Matthew Flatt
9a5bae277a
set self modidx on primitive modules
...
which fixes a crash related to `module->namespace'
2011-08-01 15:16:04 -06:00
Matthew Flatt
ec27cbfd90
fix problems related to futures and is-list flags on pairs
...
Although a future thread used an atomic compare-and-swap to
set "is a list" or "not a list" flag on pairs via the
JIT-implemented `list?', the hashing function in the runtime
thread did not; as a result, it might be possible to lose
a hash code due to cache inconsistency (although I'm not
sure it's actually possible, and I couldn't trigger a problem
with a test). Most of the changes are related to using
an atomic compare-and-swap when setting a hash code, as
well as clean-ups to related code. Processor-count tests
avoid using atomic compare-and-swap on uniprocessors, which
might not support the relevant machine instructions.
As significantly, the compare-and-swap operation for the
JIT-implemented `list?' did not actually set flags on
a pair that has a hash code. This could lead to `list?'
tests that were not constant time (but only if the relevant
pair's `eq?' hash code had been used previously).
2011-07-31 04:43:24 -06:00
Matthew Flatt
e6b4d547c9
fix problem with initialization of tag name array
...
The bug to lead to a crash from `(dump-memory-stats)'
Mrege to 5.1.2
2011-07-27 15:26:48 +01:00
Matthew Flatt
7123996b30
change `eval-jit-enabled' initialization
...
to reflect whether JIT compilation is supported by the build
(i.e., set it to #f initially when the JIT is not supported)
2011-07-27 07:55:05 +01:00
James Swaine
783ee2cf88
Add convenience macros for raising exceptions in C functions which may run on future threads
2011-07-26 16:20:35 -05:00
Matthew Flatt
73b16c8578
don't constant-fold an fx operation if the result is non-fx
...
In fact, the result must be an fx on all platforms, since
compilation should be platform-independent.
2011-07-25 11:30:23 -04:00
Matthew Flatt
cab8e5e0e2
JIT tweaks for `unsafe-{s,u}16vector-set!'
...
by making better use of the code that's in place for other
similar operations
2011-07-25 11:30:22 -04:00
Matthew Flatt
c9d4e0fb8c
win32: fix `copy-file' handling of file-exists error
...
The specific error reported by CopyFileW doesn't seem
to be documented. It's unclear whether Racket's old test
for ERROR_EXISTS_ALREADY was the wrong choice (as opposed
to ERROR_FILE_EXISTS) or whether some Windows versions
use it; we test for both for now.
Also, improve error reporting when an errno or
GetLastError() value is available.
Closes PR 12074
Merge to 5.1.2
2011-07-23 22:15:18 -04:00
Matthew Flatt
530bb1b9ba
code-inspector fix for top-level code from bytecode
...
Merge to 5.1.2
2011-07-20 14:25:24 -06:00
Matthew Flatt
0d2b08f053
fix validation of top-level define-{syntaxes,values-for-syntax}
...
(Only appears in bytecode for non-module code.)
Merge to 5.1.2
2011-07-20 14:08:30 -06:00
Matthew Flatt
5b8a892fbb
fix bug in .zo writing
...
The bug showed up in the "racket/embed.rktl" test.
Merge to 5.1.2
2011-07-20 13:57:52 -06:00
Matthew Flatt
30174b3c81
another try at Mac OS X 10.4 x86 libraries
...
Merge to 5.1.2
2011-07-20 13:26:48 -06:00
Matthew Flatt
d9ae1d048d
fix optimizer bug related to `case-lambda' at module level
...
The bug triggered a crash on ARM, and probably doesn't
affect other platforms, but I'm not competely sure.
Merge to 5.1.2
2011-07-19 15:27:50 -06:00
Matthew Flatt
5efe7001d6
fix "block cache" layer to handle allocation failure
2011-07-17 20:08:26 -06:00
Matthew Flatt
92671ab3ea
fix source name of built-in modules
...
Closes PR 12051
Merge to 5.1.2
2011-07-16 21:42:57 -06:00
Matthew Flatt
c4b820e5c5
make `namespace->module' fail on kernel modules for the right reason
2011-07-16 21:36:41 -06:00
Matthew Flatt
701c9666d6
fix printing of namespace with places enabled
...
This commit goes with 62acb298bd
.
2011-07-16 21:17:10 -06:00
Matthew Flatt
3f0914080b
fix SGC
...
Merge to 5.1.2
2011-07-16 14:30:09 -06:00
Matthew Flatt
9ca07e7d65
minor code clarification
2011-07-16 14:30:09 -06:00
Matthew Flatt
4307bcace5
fix taint behavior of some syntax operations
...
`syntax-local-get-shadower' and
`syntax-make-delta-introducer' both taint their
results when a given syntax object is tainted
2011-07-16 08:03:54 -06:00
Kevin Tew
bf4a8ad5c4
create hash codes for place shared objects
2011-07-15 13:06:07 -06:00
Matthew Flatt
62acb298bd
places: fix printing of symbol resolved module paths
2011-07-14 21:32:48 -06:00
Matthew Flatt
1c4722eaee
remove obsolete reference to '#%mred-kernel
2011-07-14 21:32:47 -06:00
James Swaine
32a3828a2e
Made continuation-mark-set-first future-safe. Fixed a rarely occurring bug with lightweight continuation capture for futures.
2011-07-14 19:30:52 -06:00
Matthew Flatt
4d03ffb57d
another JIT tweak
2011-07-14 17:07:18 -06:00
Matthew Flatt
825548f5dc
tweak JIT to improve and slightly generalize register tracking
2011-07-14 17:07:18 -06:00
Matthew Flatt
87a6b850a7
more info on 10.4 support
2011-07-14 17:07:18 -06:00
Matthew Flatt
0860e62bfa
rebuild Mac x86 libraries to work with 10.4
...
Merge to 5.1.2
2011-07-13 10:45:19 -06:00
Vincent St-Amour
09b6616bfa
Fix jitting of real->double-flonum.
...
Merge to 5.1.2.
2011-07-11 14:38:02 -04:00
Vincent St-Amour
7dfe1f636f
Revert "Add real->double-flonum to the JIT."
...
This reverts commit 2afff3d210
.
This commit caused real->double-flonum to have a different behavior
when jitted as opposed to interpreted, and caused real->single-flonum
to break in some cases.
Merge to 5.1.2.
2011-07-11 13:54:06 -04:00
Matthew Flatt
09eab9c3eb
fix JIT problem that can break futures
...
A recent (weeks-old) JIT change set one of a function's code
pointers to NULL to indicate that JIT-compilation of the
function is in progress, but that breaks futures. Set the
code pointer to a different not-yet-ready function, instead.
Merge to 5.1.2
Closes PR 12037
2011-07-11 07:01:41 -06:00
Eli Barzilay
ac139c5dcb
New Racket version 5.1.2.3.
2011-07-11 03:50:16 -04:00
Matthew Flatt
cc6f3f69ab
add `port-set-next-location!'; make prompt read handler use it
...
Closes PR 12035
2011-07-10 08:36:47 -06:00
Matthew Flatt
e765231dad
fix hash-ref' bugs on immutable
eq?'-based tables
...
There were two:
* new: after finding a hash code, the key wasn't
always checked to be `eq?' to the desired key
* old: the hash code wan't downshifted by 2, so
changes in the low two bits (like when a pair
is determined to start a list) could break
lookup
Merge to 5.1.2
2011-07-09 20:12:59 -06:00
Matthew Flatt
5452a16479
fix arity check on `current-module-name-resolver'
2011-07-09 06:16:11 -06:00
Matthew Flatt
9e694ce5cb
share modidx for module imported into multiple phases
2011-07-09 06:16:10 -06:00
Matthew Flatt
50bd06af9a
fix dependency
2011-07-09 06:16:10 -06:00
Matthew Flatt
d49a1e1fa1
JIT-inline `path?'
2011-07-09 06:16:10 -06:00
Eli Barzilay
1ba2d85004
New Racket version 5.1.2.2.
2011-07-09 03:50:09 -04:00
Matthew Flatt
b98e1b189a
change semantic of internal definitions
...
and `letrec-syntaxes+values' --- allowing `let' in place
of `letrec', which in turn lets the compiler optimize
away location allocation
2011-07-08 14:00:41 -06:00
Matthew Flatt
4392ab7636
make weak taint table actually weak
2011-07-08 06:28:43 -06:00
Matthew Flatt
0e95d49ddb
allow more expression reordering, especially unsafe ops
2011-07-08 06:23:29 -06:00
Matthew Flatt
65b1a569a0
add `unsafe-list-{ref,set}'
...
Use the new functions in `syntax-case'; the benefit is small, and
it's mostly useful as hint to the optimizer that the operation
can be dropped if the result isn't used
2011-07-08 06:23:29 -06:00
Matthew Flatt
848bba80a3
optimizer repair; `unsafe-c{a,d}r' can be dropped
2011-07-08 06:22:40 -06:00
Eli Barzilay
4edbf125a9
New Racket version 5.1.2.1.
2011-07-08 03:50:19 -04:00
Ryan Culpepper
ed7495ce2a
Post-release version for the v5.1.2 release
2011-07-07 23:37:55 -06:00
Kevin Tew
8128603b9b
Fix non-places build
2011-07-07 17:14:01 -06:00
Kevin Tew
8ed62b715b
Fix place-channel place-object race condition
2011-07-07 17:14:00 -06:00
Vincent St-Amour
3b33ed8c81
Abstract out magic numbers in the JIT.
2011-07-07 18:13:50 -04:00
Kevin Tew
68d49e9f59
Add assertions to place-channel tests
2011-07-07 12:38:20 -06:00
Vincent St-Amour
2afff3d210
Add real->double-flonum to the JIT.
2011-07-07 12:04:24 -04:00
Matthew Flatt
9ba6beacf5
fix non-futures, non-places build
2011-07-07 07:25:48 -06:00
Matthew Flatt
62a17da060
JIT-inline list-ref' and
list-tail'
2011-07-07 07:25:48 -06:00
Matthew Flatt
a77a2fb3e1
JIT-inline all of the `cXr's
2011-07-07 07:25:48 -06:00
Matthew Flatt
6f9c197b96
avoid compiler warnings in --disable-places mode
2011-07-07 07:25:48 -06:00
Matthew Flatt
0c605acaf4
string allocation tweak
2011-07-07 07:25:47 -06:00
Matthew Flatt
2769fdd311
specialize "slow" `unsafe-vector*-ref', etc. after all
...
based on Vincent's patch
2011-07-07 07:25:47 -06:00
Matthew Flatt
f93b404dbd
PPC JIT repairs
2011-07-07 06:54:55 -06:00
Eli Barzilay
380b6a8440
New Racket version 5.1.1.9.
2011-07-07 03:50:15 -04:00
Matthew Flatt
8cd1e9ff81
fix JIT support for property accessor with failure argument
2011-07-06 17:10:40 -06:00
Matthew Flatt
63ae1cabc4
reliably clear signal_handle when a place ends
2011-07-06 15:54:11 -06:00
Matthew Flatt
79d5572153
register place async channel wakeup_signal with GC
2011-07-06 15:54:11 -06:00
Matthew Flatt
6b4b95c569
fix `unsafe-struct-{ref,set}' for chaperones
2011-07-06 15:08:41 -06:00
Matthew Flatt
5b0fd72f7a
note an implementation rationale
2011-07-06 15:01:10 -06:00
Kevin Tew
afca6ad64a
Reduce initial memory footprint
2011-07-06 14:43:56 -06:00
Matthew Flatt
bd65218842
fix inconsistent version declaration
2011-07-06 14:02:19 -06:00
Matthew Flatt
8f6fd7060f
speed up `hash-ref'
...
by trimming the common-case path through a combination of small
JIT and function changes
2011-07-06 14:00:51 -06:00
Kevin Tew
36e3679854
Scheme_Place_Object is now under gc control, multiple places can wait on a place channel.
2011-07-06 13:27:50 -06:00
Matthew Flatt
5c2a9b2aaa
improve a syntax-object resolution cache
2011-07-06 09:07:18 -06:00
Matthew Flatt
1daa2649f0
another fix for `vector-{ref,set!}' on chaperone/impersonator
...
--- fixes a81917a2692; drop this commit if that one is dropped
2011-07-05 06:29:32 -06:00
Matthew Flatt
ca2dd17dcb
fix for `vector-{ref,set!}' on chaperone/impersonator on some platforms
...
--- fixes a81917a2692; drop this commit if that one is dropped
2011-07-04 18:04:38 -06:00
Matthew Flatt
a81917a269
JIT: faster path for `vector-{ref,set!}' on chaperone/impersonator
...
This commit probably should be removed from the v5.1.2 branch
(after the branch is created).
2011-07-04 16:26:09 -06:00
Matthew Flatt
97d5e3fa02
win32: fix place-specific scheduling semaphore
2011-07-04 08:27:33 -06:00
Jay McCarthy
467833d4e7
Initializing flag to remove GCC error
2011-07-02 12:13:21 -07:00
Matthew Flatt
8aa4ff1b06
syntax taint repairs
2011-07-02 10:08:15 -06:00
Matthew Flatt
69434370cb
allow fd 0 to be used as place signaling pipe
2011-07-01 15:04:39 -06:00
Matthew Flatt
e46a470f8d
places fixes: Windows leaks, custodian force-exit, stdio interaction
2011-07-01 14:31:56 -06:00
Matthew Flatt
3078d5c494
clean up place exit handling
...
- don't crash on multiple kills or waits
- allow the OS to reclaim the place thread when it exits on its own
2011-07-01 09:30:11 -06:00
Matthew Flatt
0f42552a0e
place fd clean-ups
...
and better handling of a place-creation failure due to pieces
at the OS layer
2011-07-01 09:30:10 -06:00
Eli Barzilay
faf74c789f
New Racket version 5.1.1.8.
2011-07-01 03:50:21 -04:00
Matthew Flatt
835bbe2874
fix typo in "place.c"
2011-06-30 10:59:17 -06:00
Matthew Flatt
d4acf4f07a
fix another problem with attempted overflow clean-up
2011-06-30 10:53:19 -06:00
Kevin Tew
c3059f7e82
place-dead-evt
2011-06-30 10:02:21 -06:00
Matthew Flatt
ae8bbaef90
fix attempt to clean up overflow checking
2011-06-30 09:55:55 -06:00
Matthew Flatt
37e4ea497b
check for integer overflow in vector reader syntax
...
Closes PR 12008
2011-06-30 09:46:02 -06:00
Matthew Flatt
e9477c17b4
fix JIT-generated `apply-values' for chaperones
...
Closes PR 11981
2011-06-30 09:28:07 -06:00
Matthew Flatt
b86e96cf90
fix optimizer bug that reordered past a mutable variable
...
Closes PR 11987
2011-06-30 09:17:42 -06:00
Matthew Flatt
737a3bd91a
fix too-early large-allocation check
...
Closes PR 12000
2011-06-30 08:56:28 -06:00
Matthew Flatt
0025ff968d
fix JIT bug
...
that caused incorrect compilation of a non-tail call as
a self non-tail call (but why hasn't this deep and old bug caused
more trouble over the years?)
2011-06-30 08:24:42 -06:00
Matthew Flatt
1af8cd07ad
minor clean-up
2011-06-30 08:24:41 -06:00
Matthew Flatt
011b79180b
fix another stx-vs-#f bug
2011-06-29 20:48:11 -06:00
Matthew Flatt
e16e36e49c
fix problem pushing instantiation-time inspector
2011-06-29 20:21:40 -06:00
Eli Barzilay
01867f12b1
New Racket version 5.1.1.7.
2011-06-29 21:47:55 -04:00
Matthew Flatt
daa6f1aed3
fix #f misused as syntax object
2011-06-29 19:46:04 -06:00
Matthew Flatt
1160d3df62
remove syntax certificates; add syntax taints
2011-06-29 19:15:48 -06:00