Matthew Flatt
8dd4f1de21
fix futures bug
...
When `(continuation-mark-set-first #f ...)' should produce #f and
the continuation is lightweight-captured, the result was NULL
instead of #f.
2011-12-05 19:10:22 -07:00
Matthew Flatt
8b3fae79c2
fix no-futures, no-places build
2011-12-04 08:07:13 -07:00
Matthew Flatt
59e41ce05f
simpler stack-space check for Racket thread creation
2011-12-04 06:52:33 -07:00
Matthew Flatt
885bf6555f
fix future resume in runtime thread with extra stack space
...
Also, fix the possibility that a future can shift from RUNNING
to PENDING while the runtime thread is checking PENDING then
RUNNING.
2011-12-04 06:52:33 -07:00
Matthew Flatt
333ffd7ede
JIT tweak
2011-12-04 06:52:33 -07:00
Matthew Flatt
be80e7d864
fix an over-eager reordering by the bytecode compiler
...
The over-eager transformation could be space-unsafe, and it
could duplicate an unsafe operation whose result is used only
once in a function that eds up being inlined multiple times.
2011-12-04 06:52:33 -07:00
Matthew Flatt
db3878e309
another futures bug fix
2011-12-03 07:35:39 -07:00
Matthew Flatt
09d4d6c507
avoid uninitialized-variable warning from C compilers
2011-12-03 05:45:41 -07:00
Matthew Flatt
829e894af2
flatten (begin ... (begin ...)) in last pass of compiler
...
Flattening just makes bytecode slightly smaller.
2011-12-02 20:46:00 -07:00
Matthew Flatt
dd5d1c9046
another futures bug fix
2011-12-02 16:47:59 -07:00
Matthew Flatt
745c4b6470
fix another way that `racket/gui' instances can leak
2011-12-02 15:48:29 -07:00
Matthew Flatt
7397f710e2
fix reconstruction of `provide' forms in module expansion
2011-12-02 13:58:39 -07:00
Matthew Flatt
96330556e7
fix secondary hash-code for weak hashes
2011-12-02 12:11:52 -07:00
Matthew Flatt
67c3aa4b2d
improve comments on `future_t' fields; remove a redundant field
2011-12-02 09:58:22 -07:00
Matthew Flatt
c2fac607f0
another futures bug fix
2011-12-02 09:41:59 -07:00
Matthew Flatt
efe165aeac
futures bug fix
2011-12-02 08:04:52 -07:00
Matthew Flatt
48524906d8
fix bug in cross-module inliner
2011-12-01 14:05:42 -07:00
Kevin Tew
78c2d7b9ab
fix variables assigned but not referenced
2011-12-01 14:05:42 -07:00
Matthew Flatt
1bc2441b5a
switch to syntax property for 'compiler-hint:cross-module-inline
2011-12-01 10:26:48 -07:00
Kevin Tew
903eb9ec32
Added place_obj->dead to detect places that terminate normally
2011-12-01 09:54:39 -07:00
Kevin Tew
288e84ff8d
Dead code removal
2011-12-01 09:54:39 -07:00
Kevin Tew
d1ee222d19
Fix place.c typos
2011-12-01 09:54:39 -07:00
Kevin Tew
3b0568b39c
Allow instanciation of places with resolved module paths
2011-12-01 09:54:39 -07:00
Matthew Flatt
99032a75d0
inline map',
for-each', andmap', and
ormap'
...
More generally, support a
(define _id (begin 'compiler-hint:cross-module-inline _proc-expr))
hint, which is how the compiler determines that `map', etc., are
candidates for inlining.
2011-12-01 06:59:27 -07:00
Eli Barzilay
9f1de12e82
New Racket version 5.2.0.5.
2011-12-01 04:02:03 -05:00
Eli Barzilay
fac07b964d
Make get-libs retry downloads if they look stuck.
...
This resolves a problem with the osx64 machine, where downloads seem to
just get stuck after a while, without timeout errors. Re-enable that
build.
2011-12-01 03:40:27 -05:00
Matthew Flatt
779b419c03
first cut at cross-module function inlining
...
Inline only trivial functions, such as `(empty? x)' -> `(null? x)',
to avoid generating too much code.
Bytecode includes a new `inline-variant' form, which records a
version of a function that is suitable for cross-module inlining.
Mostly, the variant let the run-time system to retain a copy
of the bytecode while JITting (and dropping the bytecode of)
the main variant, but it may be different from the main variant
in other ways that make it better for inlining (such a less loop
unrolling).
2011-11-30 07:39:36 -07:00
Matthew Flatt
1ebde53db7
fix `compiler-sizeof' docs and error message
2011-11-30 07:39:36 -07:00
Matthew Flatt
fa685207a3
add explicit `void's in some prototypes
...
Closes PR 12384
2011-11-30 07:39:36 -07:00
Robby Findler
2cacbfe8e2
update the mac os x icons to use the newer, higher-resolution images
2011-11-28 00:13:59 -06:00
Matthew Flatt
d607189035
fix error message that is misleading on some platforms
...
Closes PR 10049
2011-11-27 17:35:06 -07:00
Matthew Flatt
8b7370a4f9
fix printing of hash tables with chaperones
...
Closes PR 12276
2011-11-27 09:56:44 -07:00
Matthew Flatt
10246d7ade
fix `current-memory-use'
...
Closes PR 9896
2011-11-27 09:18:52 -07:00
Matthew Flatt
291a18b045
windows: avoid SetFilePointer() on unsupported file-stream types
...
Closes PR 12339
2011-11-26 18:10:55 -07:00
Matthew Flatt
3883594af3
fix future bugs mostly related to `touch' within a future
2011-11-26 10:32:24 -07:00
Matthew Flatt
828848811d
fix GC bug in futures when a blocking result is a tail call
2011-11-25 08:13:35 -07:00
Matthew Flatt
d9eb803e9c
add hook to force a minor GC
2011-11-25 08:13:23 -07:00
Matthew Flatt
a7ae78f3cc
fix mac- and gui-specific GC bug
...
This bug was introduced indirectly in the switch to
poll()/epoll()/kevent().
2011-11-24 15:59:12 -07:00
Matthew Flatt
e438793d43
implement JITted x86 floating-point operations with SSE
...
Currently, the choice of SSE vs. x87 is when Racket is compiled.
SSE is always used for x86_64 and on Mac OS X, and x87 is used
for other platforms.
2011-11-24 05:58:30 -07:00
Eli Barzilay
48f64ad3ae
New Racket version 5.2.0.4.
2011-11-22 14:16:07 -05:00
Matthew Flatt
e44bd3f79d
intern literal strings, byte strings, regexps, characters, and numbers
2011-11-22 08:54:37 -07:00
Matthew Flatt
cc1b7bb8b4
fix xform-related bug triggered by making atomic timeout place-local
2011-11-22 05:50:18 -07:00
Matthew Flatt
6784007206
fix, generalize, and speed up GC ownership check
2011-11-22 05:50:18 -07:00
Matthew Flatt
d416dfaa8c
fix copy-file' reporting of
exn:fail:filesystem:exists?'
...
Fixes re-report for PR 12074
2011-11-19 19:40:49 -07:00
Matthew Flatt
76c9996ac7
fix phase-related export bug
...
which was previously masked by another bug
2011-11-18 22:59:21 -07:00
Matthew Flatt
c1477e945d
fix `namespace-require' on marked syntax
...
Closes PR 12381
2011-11-18 20:06:15 -07:00
Matthew Flatt
2ad78a33fb
fix `provide' for macro-introduced bindings in phase != 0,#f
2011-11-18 20:06:15 -07:00
Matthew Flatt
764f0774a4
tweaks to reduce the stack-frame size of the interpreter loop
2011-11-18 20:06:15 -07:00
Matthew Flatt
004afd88a3
fix xform problems related to epoll() change
2011-11-17 16:13:15 -07:00
Matthew Flatt
8483b8eea5
atomic timeout hook must be place-local
2011-11-16 20:38:58 -07:00
Matthew Flatt
eae7c5d5d7
fix place-GC problem with empty_self_modidx's shift cache
2011-11-16 20:38:58 -07:00
Matthew Flatt
851cbf4fcc
avoid weak links in the master GC space
2011-11-16 20:38:58 -07:00
Matthew Flatt
63f3a51ae6
win32: get default frame icon from application
...
Also, clean up icon- and cursor-loading code
2011-11-16 14:45:32 -07:00
Eli Barzilay
1b69b79f6e
New Racket version 5.2.0.3.
2011-11-16 03:50:12 -05:00
Matthew Flatt
3bffcae3c2
fix places & executable interaction
...
Added `module-predefined?' and changed `racket -k ...'
2011-11-15 18:42:21 -07:00
Matthew Flatt
45b8e103e5
places: fix GC of unreceived place-channel messages
...
An unreceived message can have a reference to a master-allocated
value, in which case that value must be marked. This marking
is implemented by embedding a linked link within the message
memory.
2011-11-14 18:04:45 -07:00
Matthew Flatt
aefb574f81
remove unused symbol
2011-11-14 17:57:11 -07:00
Matthew Flatt
a0378a2b02
fix bug in prefab syntax marshaling
...
Closes PR 12352
2011-11-12 06:08:42 -07:00
Matthew Flatt
3cd071beb2
fix fd polling in atomic mode
2011-11-11 07:05:16 -07:00
Eli Barzilay
41345deff6
New Racket version 5.2.0.2.
2011-11-11 03:50:09 -05:00
Matthew Flatt
43e421faf4
fix bytecode compiler bug
2011-11-10 13:25:06 -07:00
Matthew Flatt
5139de9cec
add `port-closed-evt'
2011-11-10 10:01:57 -07:00
Matthew Flatt
eb25a2db47
add epoll() support for Linux, kqueue() support for BSDs
...
This change builds on the blocking-I/O change to provide substantially
better performance when waiting on lots of sockets.
2011-11-10 10:01:56 -07:00
Matthew Flatt
67df1f7bce
change handling of blocking I/O to collapse sources to a single poll
...
This improvement applies to both poll() and select() modes, and it
can reduce scheduling overhead when blocking on many I/O sources
at once.
This mode is not enabled for Windows, however, since Racket doesn't
exactly use select() on Windows.
2011-11-10 05:46:53 -07:00
Matthew Flatt
dfe5e599e4
fix problem with background thread for address lookup
2011-11-10 05:46:52 -07:00
Matthew Flatt
646f7e70e7
prefer poll() to select() on Linux
...
On Mac OS X, poll() doesn't work right in versions earlier than 10.5.5,
select() is always faster, and large number of sockets will be
better handled via kqueue(). On Linux, poll() is defintely better.
Otherwise, we stick with select() to be conservative.
2011-11-10 05:46:04 -07:00
Matthew Flatt
6e7ad71ae5
ffi/unsafe: handle out-of-memory on malloc
...
Also fix some int vs. intpt_t problems.
2011-11-04 15:29:28 -06:00
Tony Garnock-Jones
4f007cc9ce
uClibc doesn't support getcontext().
2011-11-04 11:16:35 -04:00
Matthew Flatt
9896cb6851
streamline get-byte' (especially as used by
read-[bytes-]line')
...
Applies in the case of simple ports without line counting, etc.
Also, `read-line' keeps track of whether all bytes are ASCII
(which is easy) to shortcut general UTF-8 decoding.
2011-11-03 09:12:13 -06:00
Matthew Flatt
a495c9f349
fix channel/semaphore sync bug
2011-11-03 09:12:13 -06:00
Matthew Flatt
98cde53fa0
fix rename trans `free-identifier=?' propagation in int-def context
...
Closes PR 12333
2011-11-02 10:02:19 -06:00
Matthew Flatt
b42daeacf0
remove unused field
2011-11-02 08:12:58 -06:00
Matthew Flatt
d9b9cbe16a
fix space-safety bug in composable continuations
2011-10-29 09:37:12 -06:00
Matthew Flatt
2b7fedb79b
better comment to explain a subtle corner of the expander
...
Also added a minor shortcut for cases where the corner isn't
relevant.
2011-10-28 06:43:20 -06:00
Matthew Flatt
35526a7bd7
fix JIT early reference to JIT generated address
...
On x86_64, if the scratch-space address fits into 32
bits and the final place for shared code doesn't
fit into a 32-bit address, then the size of the generated
code could change, leading to a JIT buffer overflow.
Merge to 5.2
2011-10-20 14:30:02 -06:00
Matthew Flatt
a4011890e1
CGC fix for OpenBSD x86_64
...
Merge to 5.2
2011-10-20 14:30:02 -06:00
Matthew Flatt
245f45d183
switch Mac OS X build default (32-bit vs 64-bit) to compiler default
...
That means the default is 64-bit for a typical Mac OS X 10.6 or 10.7
installation.
2011-10-20 14:30:02 -06:00
Matthew Flatt
a81054fef4
fix a marshaling bug for syntax objects
...
Closes PR 12300
Merge to 5.2
2011-10-18 20:53:43 -06:00
Matthew Flatt
099e4d7dad
fix a type name
...
Closes PR 12297
Merge to 5.2
2011-10-17 12:35:54 -06:00
Eli Barzilay
7f8540949d
Use racket/*' instead of
scheme/*' in gracket etc.
2011-10-16 18:53:30 -04:00
Eli Barzilay
29643f8120
Removed two references to /home/scheme that were not used elsewhere.
2011-10-16 18:53:30 -04:00
Eli Barzilay
9ade64cc84
Some "Scheme" -> "Racket" changes and similar.
2011-10-16 18:53:30 -04:00
Matthew Flatt
c514fd3470
fix an identifier binding bug
...
Merge to 5.2
2011-10-16 07:11:34 -07:00
Matthew Flatt
84b615a005
fix timing of `place-break' checks in scheduler
...
Otherwise, a place in a `sleep' call could fail to
see the break until waking up.
2011-10-11 17:17:58 -06:00
Matthew Flatt
0993408c19
fix `place-break' on terminated place
...
Merge to 5.2
2011-10-11 17:17:58 -06:00
Matthew Flatt
fe9e34f938
skip future mutex if no futures started
...
Skipping the check makes a measurable difference when
several places are running.
2011-10-11 15:09:23 -06:00
Matthew Flatt
a9b1a38f34
reduce place-channel allocation
2011-10-11 15:09:22 -06:00
Matthew Flatt
04e75dd82a
revert GC block cache to reasonable size
2011-10-11 14:36:53 -06:00
Matthew Flatt
5c0956d7b1
more memory accounting fixes for places
...
Fix memory accounting to detect when messages pile up in a
place channel and when shared values (such as the result of
`make-shared-bytes') pile up. Also fix problems where a GC
or free-page purge needs to be triggered.
The implementation causes a minor API change, which is that
a place channel sent multiple times as a message generates
values that are `equal?' but no longer eq?'.
Closes PR 12273
[Do not merge to 5.2]
2011-10-11 11:26:11 -06:00
Matthew Flatt
32b5390ad2
add missing GC registration for places
...
Merge to 5.2
2011-10-11 06:45:14 -06:00
Kevin Tew
1a2d425ece
Fix QNX merge to 5.2
2011-10-10 11:07:29 -06:00
Kevin Tew
58b1f86326
pr 12268 fix merge to 5.2
2011-10-10 11:07:29 -06:00
Vincent St-Amour
90aa9c9d75
Typoes.
2011-10-10 11:40:51 -04:00
Matthew Flatt
c805728d3e
fix compiler confusion: non-mutating vs reorderable unsafe ops
...
Reordering `unsafe-vector-ref' past an `unsafe-vector-set!' was
particularly bad. Meanwhile, some non-mutating operations like
`unsafe-mcar' were treated too conservatively.
Merge to 5.2
2011-10-09 19:46:24 -06:00
Matthew Flatt
b377cafdac
mark OS jmpbuf as GC-ignored
...
This change is intended to make the QNX port work, but it
should also future-proof Racket a little for other platforms.
2011-10-09 10:45:24 -06:00
Matthew Flatt
e2bcbb0dfb
fix QNX sconfig entry
...
Merge to 5.2
2011-10-09 10:34:40 -06:00
Eli Barzilay
ceacfe5ef5
New Racket version 5.2.0.1.
2011-10-09 03:50:16 -04:00
Matthew Flatt
1bc80310e3
fix compiler bug that could cause infinite inlining loop
...
The bug was that a procedure could be incorrectly marked as
a "leaf" procedure, which could in turn cause the compiler
to keep inlining a very small procedure that calls itself.
Closes PR 12270
Merge to 5.2
2011-10-08 16:40:34 -06:00
Matthew Flatt
41b18e3608
windows: add sqlite3.dll
...
Merge to 5.2
2011-10-08 07:18:49 -06:00
Ryan Culpepper
ecd7519f56
Post-release version for the v5.2 release
2011-10-07 22:10:32 -06:00