Commit Graph

3873 Commits

Author SHA1 Message Date
Kevin Tew
4f3bec1792 pr# 12542 fixed - All symbol types are now allowed across place channels. 2012-02-08 10:21:59 -07:00
Kevin Tew
2de9de9b26 place-channel-put: value not allowed in a message
prints out just the invalid object, not the whole message
2012-02-07 13:07:02 -07:00
Matthew Flatt
8cf49dfdb1 fix format of some error messages
Closes 12536
2012-02-04 05:32:00 -07:00
Eli Barzilay
456fcd8aeb There is no "gc2/xform-collects" in the gracket build tree. 2012-02-04 03:03:18 -05:00
Eli Barzilay
dc7d14580f New Racket version 5.2.1.5. 2012-02-03 03:30:20 -05:00
Matthew Flatt
2f5430e227 update pre-built libraries 2012-02-02 08:04:12 -07:00
Sam Tobin-Hochstadt
4ea306ed61 Rewrite install code in '#%kernel to avoid startup time. 2012-02-02 06:32:55 -07:00
Robby Findler
f5a8c62823 Fix for NetBSD from Aleksej Saushev 2012-02-01 20:09:29 -06:00
Robby Findler
e4b1ef1b6e a second attempt to fix the icns files 2012-02-01 06:41:11 -06:00
Robby Findler
5db88e3ea7 added in smaller size icons in an attempt to see if that was the problem on
10.5 and 10.4
2012-01-31 21:11:16 -06:00
Matthew Flatt
ef846caaa1 tighten bound for Mac OS X 10.6 localtime() hack
It looks like my bound for last time was too conservative,
in that I looked for the lowest number that didn't seem
to fail in 10.6. The range of failing values is apparently
not continuous.

I've tightened the bound to match the lowest
number that produces a useful result on my 10.7 machine,
assuming that it works for a continuous range there.
(The new bound is higher than the number previously used as
a lower bound.)

Merge to 5.2.1
2012-01-30 14:03:35 -07:00
Matthew Flatt
6b6beb601e add PLT_VALIDATE_COMPILE to enable extra checking of the compiler
Setting the environment variable causes the bytecode compiler to run
the bytecode validator (which is normally applied to input from a
bytecode file) immediately on all of the compiler's own results.
2012-01-30 10:31:37 -07:00
Matthew Flatt
706d5026ac fix bytecode compiler bug
Certain `lambda'-lifting operations can cause information
about the flonumness of a variable to get lost, leading
to a mismatch between the closure's flags and flags on
a variable reference. (The bytecode validator could detect the
bug when loading the broken bytecode. The broken information,
meanwhile, was only used by the JIT.)
2012-01-30 10:30:51 -07:00
Eli Barzilay
4f52392dfc New Racket version 5.2.1.4. 2012-01-27 03:35:17 -05:00
Matthew Flatt
13a5b0c623 change `ffi-lib' to not make library symbols global by default 2012-01-26 09:30:25 -05:00
Matthew Flatt
481e061440 adjust `raco ctool --c-mods' and related to work with places
That is, the generated declare_modules() function registers the
module-declaration code so that it is run in any new place, too.

Merge to 5.2.1
2012-01-19 13:14:02 -07:00
Matthew Flatt
c723aeeb6a fix position counting in `read-byte'
Merge to 5.2.1
2012-01-19 13:14:02 -07:00
Matthew Flatt
4e4c40ae8c Mac OS X: work around a localtime() bug in 64-bit 10.6.8
For numbers around -67768122973228093, localtime() doesn't return in
10.6.8, while it returns NULL for 10.7.2. Work around the bug by
setting a lower bound that seems to be high enough to avoid the
problem (and that's lower than the lowest value that succeeds, so no
results are lost, at least for now).

Merge to 5.2.1
2012-01-17 16:09:46 -07:00
Matthew Flatt
d85f251eb2 fix stack unsafety for rest-arg functions
If a function with a rest arg is called with argv not at the
start of the runstack, then space is allocated for the rest-arg list
on the runstack without clearing the allocated slot. The value in
the slot could be a pointer that wasn't traversed by the most recent
GC, so it could crash a GC during allocation of the rest-arg list.

Also, tweak setup code for a function of no arguments, and improve
comments in the code.

Merge to 5.2.1
2012-01-17 08:58:14 -07:00
Matthew Flatt
ddd246232e fix JIT-generated code in case of arity mismatch
The generated code was checking arity after potentially copying
arguments to the start of the runstack (i.e., if the arguments
were not already there). If too few arguments are provided, then
the copy might access past the end of the given array.

The redundant arity check removed in commit f7c506471b
had previously masked this problem. (Or the check wasn't redundant
in that sense, but it's better this way.)

Merge to 5.2.1
2012-01-17 07:33:58 -07:00
Matthew Flatt
108c32e11f fix macro expander performance problem
The problem is related to marks that should cancel eagerly when
a form passes through many layers of macro expansion, such as in
the sieve stress test for `syntax-rules'.
2012-01-13 06:18:38 -07:00
Matthew Flatt
84d66ca8fe MysterX repairs
Merge to 5.2.1
2012-01-12 10:55:18 -07:00
Matthew Flatt
45d72785de skip `libtool --finish' if DESTDIR is set
Merge to 5.2.1
2012-01-12 06:55:38 -07:00
Eli Barzilay
7e86136545 New Racket version 5.2.1.3. 2012-01-12 03:50:23 -05:00
Matthew Flatt
a1fd742ed0 change Scribble xref formats, so that HTML info works for Latex
There's no particular reason that any one format will have all
the information that other formats need, but it conveniently works
for now that HTML info can subsume Latex info.
2012-01-11 16:39:52 -07:00
Matthew Flatt
af9d0e6976 add missing OS X thread-data synchronization
Merge to 5.2.1
2012-01-11 14:48:21 -07:00
Matthew Flatt
8976a4c99a avoid some unnecessary work in string port creation
These changes speed up string-port creation by 10% or so in my
tests --- nearly all of that by avoiding the repeated interning
of the symbol 'string.
2012-01-11 09:42:06 -07:00
Matthew Flatt
8c092f093b clean up and generalize optimizer support for omittable primitives
For example, the optimizer knew to drop `(cons x y)' if the result
is unused, but not `(pair? x)'.
2012-01-11 06:58:39 -07:00
Matthew Flatt
7850a26dfe fix bytecode optimizer bugs
Certain unsafe operations were allowed to propagate across a
`lambda' boundary (where space safety is known not to be an issue),
which could lead to duplicate uses of a "once used" variable if
the relevant `lambda' is inlined.

Furthermore, `lambda' boundary crossing wasn't detected in the case
that the operation to propagate was propagated through an intermediate
variable without a `lambda' crossing.

Merge to 5.2.1
2012-01-11 05:30:11 -07:00
Eli Barzilay
dc2aa3ea5c New Racket version 5.2.1.2. 2012-01-10 03:50:17 -05:00
Matthew Flatt
8b54dc43c8 fix problem printing symbols with unicode chars
Specifically, special-casing letters (such as sigma) were not
handled correctly.

Merge to 5.2.1
2012-01-09 16:55:39 -07:00
Matthew Flatt
23010fc495 add #:fail' option to collection-file-path' and `collection-path'
Merge a variant to 5.2.1
2012-01-09 15:59:05 -07:00
Ryan Culpepper
c310292f60 Post-release version for the v5.2.1 release 2012-01-08 23:41:47 -07:00
Matthew Flatt
8d9614c41c better JIT repair
I'm fairly certain that the change in commit 25e9bd2a190acf861 isn't
right, but I'm having trouble generating tests to demonstrate the
original bug or this correction.
2012-01-08 15:37:05 -07:00
Matthew Flatt
824e540cb0 fix JIT bug 2012-01-08 12:14:51 -07:00
Matthew Flatt
2b2c44774f fix scheme_basic_env() reset behavior
Also, fix test to that it DrDr will run it.
2012-01-02 15:03:49 +01:00
Eli Barzilay
3718600125 2011 -> 2012 2011-12-31 15:16:59 -05:00
Matthew Flatt
12baa07e7e fix missing initialization 2011-12-31 06:32:13 -07:00
Matthew Flatt
4fe30cf433 fix cross-module inlining for multi-arity functions
First use of the function was determining a single arity for
the enclosing module, and that arity could trigger warnings
in addition to failures to inline. For example, using `map'
on 3 arguments would trigger incorrect warnings for later
uses of `map' on 2 arguments.
2011-12-28 20:35:53 -06:00
Matthew Flatt
580c952e46 fix locale sensitivity of inexact-number parsing
Closes PR 12070
2011-12-28 19:06:07 -06:00
Matthew Flatt
5cd324af15 src/README corrections (of out-of-date information) 2011-12-21 16:43:01 -07:00
Matthew Flatt
d020c75202 remove libfit 2011-12-21 16:17:56 -07:00
Matthew Flatt
24991f0c1a win64: fix JIT SSE-based FP
XMM6-15 are preserved in the Win64 ABI
2011-12-21 11:27:24 -07:00
Matthew Flatt
58b111485f int -> intptr_t fixes 2011-12-21 11:27:22 -07:00
Matthew Flatt
7fbe3c7224 avoid accidental XFORM-LOCK file in the future 2011-12-19 07:05:27 -07:00
Matthew Flatt
35d800f109 remove accidentally added file 2011-12-19 07:03:25 -07:00
Matthew Flatt
67f83bfd6d win64: fix JIT
Repairs commit 558b03034a.
2011-12-18 16:35:33 -07:00
Matthew Flatt
c9d214138e make `choice-evt' take O(N) time for N arguments
Delay flattening nested `choice-evt's to `sync'.
2011-12-15 16:04:08 -07:00
Eli Barzilay
6960767508 New Racket version 5.2.0.7. 2011-12-15 03:50:18 -05:00
Matthew Flatt
ee775c3cc3 intern strings, etc. only when making syntax objects, not in `read'
Rename `read-intern-literal' to `datum-intern-literal'.

Interning is needed only in `read-syntax' or `datum->syntax' to
set up the invariants that the bytecode compiler needs for cross-module
optimization. When `read'ing numbers from a data file, meanwhile,
interning slows things down a lot and doesn't seem worthwhile.
2011-12-14 16:03:44 -07:00
Matthew Flatt
7ac1232c46 restore and fix chaperone-apply path
with another little performance improvement
2011-12-14 09:56:48 -07:00
Matthew Flatt
a7ddbedc7d disable a part of the new chaperone eval path that isn't right 2011-12-14 09:17:47 -07:00
Matthew Flatt
558b03034a streamline thread-local setup in JIT-generated code
Pass a pointer to the thread-local table on entry to JIT-generated
code, instead of having the JIT-generated code call a C function
to get the table. This doesn't seem to improve performance on my
machine, but it generates less code and is probably faster in
some cases.
2011-12-14 06:21:06 -07:00
Matthew Flatt
761a40d483 faster paths for chaperone application 2011-12-14 06:21:06 -07:00
Matthew Flatt
f7c506471b remove redundant arity checking calling JIT-generated code
JIT-generated code has arity checking built in, but the
interpreter-to-JIT path unnecessarily checked arity before
jumping to JITted code.
2011-12-14 06:20:08 -07:00
Matthew Flatt
be2afcdcc9 add missing bytecode-unmarshal check 2011-12-10 11:43:59 -07:00
Matthew Flatt
bf90cf9028 fix problems printing symbols with unicode chars 2011-12-10 11:43:59 -07:00
Eli Barzilay
ccbd5d51fd New Racket version 5.2.0.6. 2011-12-10 03:50:13 -05:00
Matthew Flatt
287d5cedf5 add `pseudo-random-generator-vector?'
Also, adjust docs to clarify that `vector->pseudo-random-generator!'
can be used as a more complete seeding function.
2011-12-09 09:12:17 -07:00
Vincent St-Amour
c980abf35b Add comments to the inliner. 2011-12-08 17:13:28 -05:00
Matthew Flatt
4a387c5b6a add some missing checks on bytecode parsing
The `tests/racket/stress/fuzz' test fails much less frequently,
though problems certainly remain.
2011-12-08 13:42:09 -07:00
Matthew Flatt
657be87c66 generalize gcd' and lcm' to work on rationals 2011-12-08 09:25:39 -07:00
Matthew Flatt
958352eefc fix futures bug related to GC
When a future is blocked on JIT generation, a lightweight closure
is captured, and then the future moves on, the runtime thread would
correctly shift the on-demand JIT argument to the captured copy
of the runstack. However, it would also add 2 to that pointer
to use as the argv array, and the captured runstack is not allocated
to allow interior pointers, so a GC during on-demand JIT could
crash. The solution is to keep an offset alongside the argv pointer
during JITting.
2011-12-06 09:31:52 -07:00
Matthew Flatt
4f669f0d7e fix futures handling of tail-call results 2011-12-05 19:11:32 -07:00
Matthew Flatt
55b6670084 mysterx patch from Antonio Menezes Leitao 2011-12-05 19:11:32 -07:00
Kevin Tew
9f7e730a77 another round of unused variable clean-ups 2011-12-05 19:11:32 -07:00
Matthew Flatt
b25d1b42d6 minor clean up 2011-12-05 19:10:22 -07:00
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
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
Matthew Flatt
035ab04b67 PPC JIT fix 2011-09-30 07:55:33 -06:00
Eli Barzilay
3441d0f7d0 New Racket version 5.1.3.11. 2011-09-30 03:50:17 -04:00
Matthew Flatt
99fe14b080 fix problems with phase-1 syntax definitions
Closes PR 12234
2011-09-29 16:54:08 -06:00
Matthew Flatt
a857e9e041 fix JIT bug in `fl->fx'
For the case that the argument is unboxed.

Closes PR 12240
2011-09-29 16:54:08 -06:00
Matthew Flatt
73071ad186 improve GC logging (3m)
Show process time of start of GC and otherwise adjust to make
the output more compact, and attach a prefab struct to the
logged message to report all available data in Racket form
(including real start and end times, which are not shown in
the output).
2011-09-29 16:54:08 -06:00
Kevin Tew
f2b7d1eca3 Start of port to QNX 2011-09-29 14:42:04 -06:00
Kevin Tew
dc481d2d20 Fix place crash due to race condition 2011-09-29 13:45:25 -06:00
Matthew Flatt
ac8990d519 add date*' and exn:fail:syntax:unbound'
The `date*' structure type is an extension of `date' with
`nanosecond' and `time-zone-name' fields.

The `seconds->date' function now accepts a real and returns a
`date*'. The fractional part of its argument goes into the
`nanosecond' field.
2011-09-29 09:22:10 -06:00
Matthew Flatt
58097a12fe inside: export scheme_alloc_flvector() and scheme_alloc_fxvector() 2011-09-29 09:14:00 -06:00
Kevin Tew
95037828f7 Place channels correctly use refcount on place_objects 2011-09-28 13:15:46 -06:00
Matthew Flatt
2ae6d0c55f fix expand of `#%variable-reference' on local variable
Closes PR 12231
2011-09-27 18:53:28 -06:00
Kevin Tew
3e830712aa fix uninitialized variable messages 2011-09-27 10:26:30 -06:00
Matthew Flatt
f9dabb8994 add -J/--wm-class argument to set the WM_CLASS class on Unix 2011-09-26 18:07:18 -06:00
Matthew Flatt
1ae6cc0505 change `syntax-local-lift-module-end-declaration' for phase N
Lift to the end of the module, instead of the end of the
enclosing `begin-for-syntax'.

Also, fix a bug in phase 2+ visits.
2011-09-24 22:30:56 +09:00
Matthew Flatt
051f164f3f fix parsing of protect-out' on for-syntax' bindings 2011-09-24 22:30:56 +09:00
Eli Barzilay
5024b690ca New Racket version 5.1.3.10. 2011-09-21 03:50:16 -04:00
Matthew Flatt
6e6e30a73a don't check for future or foreign work in atomic mode 2011-09-20 16:12:59 -06:00
Matthew Flatt
27be90e7b7 adjust cycle-detection valeu to avoid fixnum encoding
Just in case.
2011-09-20 16:12:59 -06:00
Matthew Flatt
37823107d1 convert C++-style comments to C-style comments
As far as I know, "//" isn't a C comment form, although
MSVC and gcc both accept it.
2011-09-20 16:12:59 -06:00
Ryan Culpepper
30d5381e98 updated macro debugger to work with begin-for-syntax changes
Also cleaned up support for lazy instantiation of phase>0
environments.
2011-09-20 14:49:49 -06:00
Matthew Flatt
0197902309 add var-ref->mod-decl-insp' and switch cur-code-insp' uses
Macros and other tools that need syntax privilege used
`(current-code-inspector)' at the module top-level to try to
capture the right code inspector at load time. It's more
consistent to instead use the enclosing module's declaration-time
inspector, and `var-ref->mod-decl-insp' provides that. The
new function works only on references to anonymous variables,
which limits access to the inspector.

The real function name is longer, of course.
2011-09-20 13:50:36 -06:00
Kevin Tew
36e53c56cb Fix cleanup of place_obj mutex and semaphore 2011-09-20 12:04:33 -06:00
Matthew Flatt
a7c607a708 fix module expand bug 2011-09-20 09:48:48 -06:00
Matthew Flatt
5351d4c7b9 fix gc and stack-overflow problems in JIT, module expansion & run
The GC problem was related to generational GC and the way constant
values are associated to JIT-generated code. See `retaining_data'.

The stack-overflow problems affects the JIT, module expansion,
and module invocation.
2011-09-20 08:34:29 -06:00
Matthew Flatt
df43d90513 windows: fix `copy-file' changes 2011-09-19 14:26:07 -06:00
Matthew Flatt
7f887fdf60 fix problems in copy-file'; add exists-ok?' argument
The non-Windows `copy-file' had a race condition, and it could
behave in bad ways if the source of a copy is not a regular
file.
2011-09-19 08:20:22 -06:00
Matthew Flatt
6401b30399 fix winsock init and shutdown for places 2011-09-16 18:03:32 -06:00
Matthew Flatt
dcda2b60d3 fix write() and read() calls for in-thread gethostbyname() 2011-09-16 16:42:14 -06:00
Matthew Flatt
b79c410e5b fix in-thread gethostbyname() for places
Uncovered by "place-parallel.rkt" test; not found in previous runs
because in-thread gethostbyname() wasn't enabled for Linux, but it
is now.
2011-09-16 16:19:04 -06:00
Matthew Flatt
1bfd9987c4 fix pointer-ownership check so that it works
A working check uncovered one of the badly registered statics.
2011-09-16 16:19:04 -06:00
Matthew Flatt
aa1eb065c5 fix initialization of place-shared statics 2011-09-16 16:19:04 -06:00
Matthew Flatt
24e587a64e lock is needed for writing after all 2011-09-16 16:19:04 -06:00
Kevin Tew
fa50c780a4 close fds on error 2011-09-16 14:11:34 -06:00
Kevin Tew
a605a97132 place* throw error on closed port 2011-09-16 13:24:39 -06:00
Matthew Flatt
7a00fbddc7 remove incorrect port shutdown; windows: fix console ports for places
Ports must be forced closed in the case of kill a place,
and the existing code takes care of that.

The Windows fix is especially needed for the new places port
handling, but it turns out that the console handlign was broken for
places anyway.
2011-09-16 08:12:51 -06:00
Matthew Flatt
5f21abbaf3 place ports are not regular files and should not be in text mode 2011-09-16 07:05:58 -06:00
Matthew Flatt
50bd8c6153 fix bad return for a void function 2011-09-16 07:04:15 -06:00
Matthew Flatt
d173879f39 fix places pipe for Windows
And also fix int-vs-ptr mismatches for the pipe layer
that is also used by `subprocess'
2011-09-16 07:03:29 -06:00
Kevin Tew
b6972a3b7f dynamic-place now pipes standard io to standard out and error much like system. 2011-09-15 14:53:58 -06:00
Matthew Flatt
039f9c10f3 fix calculation for hash code of a hash table 2011-09-15 14:23:44 -06:00
Matthew Flatt
cc9514f8ca another place-channel finalization repair 2011-09-15 06:38:41 -06:00
Matthew Flatt
051d677f0f place-channel fixes
Finalization for a place channel used a recursive, non-atomic
function, which meant that a thread switch could happen during
place-channel finalization, leaving the new thread with the
master GC and generally confused. (The random-message test
found the bug right away on my machine.)

We already have a non-recursive, non-atomic function to traverse
place messages, so collapse all modes into that one implementation.

Along the way, problems with empty structs (found by random tester)
and checking of file descriptors (test added) also fixed.
2011-09-14 20:43:36 -06:00
Matthew Flatt
3b077078de adjust module name resolve to use cc-marks less
Use `continuation-mark-set-first', instead.
Also, re-enable bytecode for Racket code that is built into
the binary, which had been left disabled accidentally.
2011-09-14 15:01:18 -06:00
Matthew Flatt
7315bfa554 drop an unnecesary lock
The recent addition of a shared table of names for shared code
caused bad performance on some machines (such as Robby's)
due to the lock on the table. The lock dosn't seem to be necessary
for platforms where places are supported, though.
2011-09-14 15:00:45 -06:00
Eli Barzilay
50ead29fb9 New Racket version 5.1.3.9. 2011-09-14 03:50:15 -04:00
Matthew Flatt
a233697f08 fix errortrace (required API changes), add `syntax-shift-phase-level'
Also fix a bug in the `module' expander and streamline lazy
visits.
2011-09-13 21:04:10 -06:00
Eli Barzilay
9a034c44ad New Racket version 5.1.3.8. 2011-09-13 03:50:16 -04:00
Matthew Flatt
b7bef3b3aa add syntax-transforming-module-expression?', variable-reference->module-base-phase' 2011-09-12 17:08:50 -06:00
Matthew Flatt
c352ef8fce allow different phases for `free-identifier=?' arguments 2011-09-12 17:08:50 -06:00
Matthew Flatt
3565c7e820 share table of shared code pointers
Allows stack traces to report information in places other than
the main place
2011-09-12 09:35:47 -06:00
Matthew Flatt
f3a79350e2 avoid custodian shutdown during atomic FFI callback 2011-09-10 14:36:49 -06:00
Matthew Flatt
28afc4490e cocoa: distinguish CFBundleIdentifier for 64-bit vs. 32-bit apps
This is another attempt at fixing PR 12135
2011-09-10 10:53:43 -06:00
Matthew Flatt
9d4fcd8e84 better fix for TransformProcessType issue
GRacket registers witht a global table to indicate that
no transform is needed. (This change was intended to address
a 64-bit problem on Lion. It didn't help, but this seems
better than ignoring an error.)
2011-09-10 10:53:42 -06:00
Matthew Flatt
ed36c5d21c fix another warning (gcc) 2011-09-09 21:11:33 -06:00
Matthew Flatt
8d766480da fix for build with link-time optimization enabled 2011-09-09 21:06:17 -06:00
Matthew Flatt
b1417cd9f9 fix plot bug
No idea whether it matters; hopefully this code goes away soon.
The bug was pointed out by clang.
2011-09-09 20:49:08 -06:00
Matthew Flatt
446fb89af1 avoid clang warnings
The main change is to use C99 flexible array declarations
in structs, instead of declaring single-element arrays.
There are still a few -Wtautological-compare warnings
in 3m due to marco expansion.
2011-09-09 20:45:43 -06:00
Eli Barzilay
29d4bba008 New Racket version 5.1.3.7. 2011-09-09 03:50:19 -04:00
Matthew Flatt
0229e762bc fix place-unfriendly static in ffi
Lazy initialization of statics shared across places doesn't work.
Also, each static must be registered with the GC exactly once;
I'm not sure why regstering on every callback didn't cause more
problems.
2011-09-08 18:29:37 -06:00
Matthew Flatt
d3c56c9f13 generalized `begin-for-syntax' 2011-09-08 14:06:00 -06:00
Matthew Flatt
83e7f92250 fix non-places build 2011-09-06 05:48:17 -06:00
Matthew Flatt
6d944453a7 make memory accounting and places work together
The `current-memory-use' function's result now includes the memory
use of places created from the calling place, and custodian memory
limits apply to memory use by places (owned by the custodian).

This change is relevant to PR 12004 in that DrRacket will no longer
crash on the example if a memory limit is in effect, but plain
Racket starts with no such limit and will exhaust all memory.
2011-09-05 13:24:22 -06:00
Matthew Flatt
ee6104b4fc fix `subprocess-status' when places are enabled
Closes PR 12158
2011-09-04 15:55:26 -06:00
Kevin Tew
dbcf70db30 Fix check for interactively defined module paths. 2011-09-01 15:17:22 -06:00
Matthew Flatt
29205fa91a fix changes to command-line handle that broke the Windows build 2011-09-01 12:48:20 -06:00
Kevin Tew
81f9bf4e1d Fix dup errors, bignum deserialization, and port names across place channels
Fix bignum deserialization
Error reporting for failed dups during place channel communications
communicate socket port names across place channels
2011-09-01 12:02:21 -06:00
Kevin Tew
261f002ce2 Error messages for using places with symbol module paths 2011-09-01 12:02:20 -06:00
Matthew Flatt
db0db9463e adjust -X handling to make `raco exe' work on Unix
Closes PR 12151
2011-09-01 08:49:26 -06:00
Matthew Flatt
d75aaa3c0e fix printed form of place channels 2011-08-31 09:48:56 -06:00
Matthew Flatt
5978717fa3 use closesocket() etc. for scheme_close_socket_fd() 2011-08-31 09:48:56 -06:00
Matthew Flatt
468bfc5437 fix "GRacketCGC.app" install 2011-08-31 09:48:56 -06:00
Kevin Tew
4d8833eab2 abandon unused scheme_socket_to_ports during place copy 2011-08-30 16:21:32 -06:00
Kevin Tew
50745a8219 Accumulate fds for cleanup on exception 2011-08-30 10:02:50 -06:00
Matthew Flatt
638dc2ed62 implement MZ_DO_NOT_INLINE() for MSVC
For 64-bit builds, MSVC has become smart enough to inline functions
in a way that interferes with the implementation of continuations,
so that (planet "williams/simulation/examples/model-2b") crashes,
for example. Explicitly disabling inlining avoids the problem by
making the C stack layout match the implementation's expectation.
2011-08-29 23:22:09 -06:00
Eli Barzilay
f3f3af124f Removed SrPersist.
Blessed-by: Ryan
2011-08-29 16:55:42 -04:00
Kevin Tew
18e14aed80 Reduce duplicate code in place.c, fixes 2011-08-29 07:30:46 -06:00
Matthew Flatt
b02e37b0b9 restore module cache
The module cache was added in 97ce26b1 (April 16, 2011),
but it was accidentally disabled in e9721058 (May 5, 2011).

This time, I figured out a way to test whether the cache is
working (other than to benchmark examples, which is how I
discovered that it wasn't working).
2011-08-28 18:15:44 -06:00
Matthew Flatt
98bc4067c3 make bytecode compiler less picky about exports
Closes PR 12134
2011-08-28 11:21:15 -06:00
Matthew Flatt
4f83f7f279 allow phase 1+ references to not-yet-defined bindings
For example,

 (define-for-syntax (f x) (g x))
 (define-for-syntax (g y) y)

is now allowed. The unbound-variable check for phase 1
and up is delayed until after the module body is partially expanded.
2011-08-28 10:27:31 -06:00
Kevin Tew
5d27959c57 Place sockets and file port fixes 2011-08-26 14:25:18 -06:00
Kevin Tew
801e5dbe0e Fix serious clang warnings 2011-08-26 14:04:28 -06:00
Kevin Tew
6ee0c0298a Fix warnings in place.c 2011-08-26 11:46:57 -06:00
Matthew Flatt
290fe066b6 add optional argument to weak-box-value' and ephemeron-value' 2011-08-26 06:24:34 -06:00
Matthew Flatt
ecc058de4a change `raco exe' to disable collection lookup by default 2011-08-25 09:15:30 -06:00
Eli Barzilay
7bb8c6c4b3 New Racket version 5.1.3.6. 2011-08-25 03:50:21 -04:00
Matthew Flatt
ec29a2d85c add `use-collection-link-paths' 2011-08-24 20:08:19 -06:00
Matthew Flatt
84e3ab2a20 add support for collection roots to the collection links file 2011-08-24 20:08:19 -06:00
Kevin Tew
5a30aa89eb Allow TCP sockets and file ports to be communicated across places 2011-08-24 14:33:54 -06:00
Matthew Flatt
a7855e20a8 add `raco link'
includes a rewrite the "Module Basics" section of the Guide
2011-08-24 09:07:14 -06:00
Kevin Tew
8782f4c445 send ffi pointers across places 2011-08-23 13:33:06 -06:00
Eli Barzilay
41ae2b57b6 New Racket version 5.1.3.3. 2011-08-21 03:50:12 -04:00
Matthew Flatt
345b06838d FFI: add C arrays and unions 2011-08-20 10:24:32 -06:00
Eli Barzilay
2fbfe341b9 New Racket version 5.1.3.2. 2011-08-20 03:50:14 -04:00
Matthew Flatt
dc1a97cec7 another subprocess fix like d7a996ee0b 2011-08-19 16:56:10 -06:00
Matthew Flatt
d7a996ee0b fix for subprocess management (when places are enabled) 2011-08-19 13:57:28 -06:00
Matthew Flatt
6073ef5ff5 fix `place-break' on a terminated place 2011-08-19 12:52:19 -06:00
Matthew Flatt
0c7b1925a5 change bad code to an assertion that's never needed 2011-08-19 12:52:08 -06:00
Matthew Flatt
d185c2a0df fix optimizer bug
Also fix missing copy-propagation opportunity
2011-08-19 07:35:39 -06:00
Matthew Flatt
7eb2042bd9 fix compiler handling of top-/module-level constants
The JIT and bytecode compiler disagreed on the definition of
"constant". Now there are two levels: "constant" means constant across
all instantiations, and "fixed" means constant for a given instantation.
The JIT uses this distinction to generate direct-primitive calls
or not. (Without the distinction, a direct jump to `reverse' could
be wrong, because `racket/base' might get instantiated with the
JIT disabled or not.)

Also, fixed a bug in the JIT's `vector-set!' code in the case that
the target vector is a top-/module-level reference that is ready,
fixed, or constant.
2011-08-19 06:32:44 -06:00
Matthew Flatt
1d6c3aa4ea avoid pointless digits when printing single-precision floats
Closes PR 12118
2011-08-18 13:21:38 -06:00
Matthew Flatt
69929b7499 configure: make --disable-jit imply --disable-futures 2011-08-18 12:41:36 -06:00
Matthew Flatt
8291fef9de fix optimizer problems with mutability checking, inlining
The inlining adjustment can sometimes trigger different
inlining than before. (One common benchmark wins; one loses.)
2011-08-18 12:32:01 -06:00
Matthew Flatt
8eefaba187 fix `regexp-match' performance for short matches on long strings
More specifically, for a string of length N and a match that
only looks at the first M characters, the complexity of
`regexp-match' is now O(M) instead of O(N). This allows
`regexp-split' to be O(N) for a string instead of O(N^2).

Also, fixed a bug in non-greedy matching that could affect
both long strings and input ports.
2011-08-18 09:26:09 -06:00
Matthew Flatt
591e08fb10 fix bug in identifier resolution
Commit 311d55b5cf fixed a shallow bug that masked a deeper
bug in the interaction of local bindings and module-level
bindings. This one fixes the deeper problem, which is that
the recursive resolution that ignores module bindings should
start from the beginning of the wraps, not the wrap after
a module renaming.

Closes PR 12116
2011-08-16 20:24:08 -06:00
Matthew Flatt
8f27112c83 slightly safer CPP macros 2011-08-16 20:24:00 -06:00
Matthew Flatt
311d55b5cf fix bug that affects `free-identifier=?'
This bug is in the "amazing that it lurked for years" category,
as well as the "stupid use of C preprocessor" category.
2011-08-16 10:42:56 -06:00
Vincent St-Amour
02ba6e5d32 Remove trailing whitespace. 2011-08-15 12:19:53 -04:00
Matthew Flatt
8989e810fb fix over-eager bytecode transformation 2011-08-15 09:36:38 -06:00
Matthew Flatt
40197835c9 repair `dynamic-require-for-syntax'
That primitive is probably a bad idea, but maybe it's useful
until we have separaely loadable parts of a module.
2011-08-15 07:06:40 -06:00
Eli Barzilay
db1aa1479a New Racket version 5.1.3.1. 2011-08-15 03:50:14 -04:00
Eli Barzilay
05dc8a596d Post-release version for the v5.1.3 release 2011-08-14 08:43:02 -04:00
Matthew Flatt
ca92376381 detect __sync_bool_compare_and_swap() via `configure' 2011-08-12 17:03:28 -06:00
Matthew Flatt
1c04cf1b02 make `port-try-file-lock?' work for Solaris
Shared locking now allowed only on input port, and exclusive
locking is allowed only on output ports, which allows an implementation
via fcntl(...,F_SETLK,...).
2011-08-11 13:11:26 -06:00
Eli Barzilay
b27eacd4d0 New Racket version 5.1.2.4. 2011-08-10 03:50:14 -04:00
Matthew Flatt
f646511ca7 first small step toward cross-module optimization
Mainly propagates constantness for the benefit of keyword
applications, but also propagates simple constants
2011-08-09 16:33:17 -06:00
Matthew Flatt
5352d670c4 generalize #%variable-reference' and add variable-reference-constant?'
Use the new functions to make the expansion of keyword applications
to known procedure work  with mutation.
2011-08-09 16:33:17 -06:00
Matthew Flatt
39a96dd699 add `prop:liberal-define-context' 2011-08-09 16:33:16 -06:00
Matthew Flatt
ff024068d9 fix syntax-taint problem in expander 2011-08-09 16:33:16 -06:00
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