Commit Graph

3538 Commits

Author SHA1 Message Date
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
Matthew Flatt
f02ea92250 fix compiler bug related to `#%variable-reference' on local
The first compiler pass didn't properly shift the stack offset
when adjusting the context of a varref of a local.

Closes PR 12258
2011-10-07 09:42:33 -06:00
Matthew Flatt
add50ab436 cocoa: undo hack of "-64" suffix on app names
Commit 60101618db seems to address the real problem.
2011-10-07 08:05:25 -06:00
Kevin Tew
d3037adbc0 QNX porting 2011-10-06 10:50:37 -06:00
Eli Barzilay
5ba73a6ab2 New Racket version 5.1.3.12. 2011-10-06 03:50:18 -04:00
Matthew Flatt
7680adf486 fix compiler bug related to lifting and unbox flonums
As variables are dropped for lifted functions, the bitmap
for flonum closure variables was not shifted down by the
number of dropped variables.

Closes PR 12259
2011-10-05 19:25:59 -06:00
Matthew Flatt
97d0df94bb fix "configure" and "configure.ac" for libfit 2011-10-05 11:41:05 -06:00
Neil Toronto
d3b5e21cae Added new plot library and old libfit (which plot still depends on) 2011-10-05 10:26:49 -06:00
Matthew Flatt
ec380e34ed remove built-in reader and printing support for Honu
This is a backward-incompatible change, but I think it's
unlikely that any code depends on the removed bindings
or reader syntax.
2011-10-05 09:40:27 -06:00
Matthew Flatt
6a8d3c34f1 win64: avoid msvcr90.dll
The libjpeg, libeay, and ssleay libraries for Win64 linked to
msvcr90.dll, because of the way that they were compiled with
MSVC 2008, but msvcr90.dll is not included with Win7, and
redistributing it is problematic. The new variants of the libraries
link instead of msvcrt.dll --- which you're not supposed to do
according to MS, but that's the way libraries like Gtk are
built, and it seems to be the right approach. See also

 http://kobyk.wordpress.com/2007/07/20/dynamically-linking-with-msvcrtdll-using-visual-c-2005/

I built libjpeg-8, while the other two are courtesey of
http://www.indyproject.org.

Closes PR 12246
2011-10-05 06:28:31 -06:00
Matthew Flatt
2262cd4424 windows: assume 1MB stack, but try to read actual from executable 2011-10-05 06:28:29 -06:00
Eli Barzilay
7ad7857ce2 Fixed "src/configure".
(Turns out that editing configure by hand is not a good idea...)

Also a random racket comment.
2011-10-05 04:55:25 -04:00
Eli Barzilay
e01e46b772 Removed the `plot' collection, in preparation for adding the new one instead. 2011-10-05 04:09:10 -04:00
Matthew Flatt
80ca2b34ff fix reference to statics meant to be adjusted by `raco exe' 2011-10-03 09:05:02 -06:00
Matthew Flatt
a0378d956a fix place refcount
Originally, the refcount was either 0, 1, or 2, so a `char' was
enough. It's not enough now that place channels increment the
refcount.
2011-10-03 06:39:18 -06:00
Matthew Flatt
664b95465d fix potential refcount bug
In the unlikely case that a receiving place ends while a
message is being sent.
2011-10-03 06:39:18 -06:00
Matthew Flatt
430474f4fa fix GC log value 2011-10-01 07:41:58 -06:00
Kevin Tew
e650764a4c place-channel? returns #t for place descriptors, doc clarification 2011-09-30 17:15:11 -06:00
Kevin Tew
a7b0c33896 QNX porting 2011-09-30 17:03:50 -06:00