Commit Graph

3556 Commits

Author SHA1 Message Date
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