Commit Graph

4005 Commits

Author SHA1 Message Date
Matthew Flatt
9f5324b754 fix quoted submodule path in `all-from-out' 2012-11-23 08:30:01 -07:00
Matthew Flatt
4e0fac0477 JIT: fix allocation of came-lambda closures over flonums
Also, clean up code and assumptions related to fixnum-producing
functions and unboxing (not related to the bug).
2012-11-23 08:20:05 -07:00
Matthew Flatt
961f5e40bf fix untagged cpointer as place-channel message
(repair by Kevin)

Closes PR 13282
2012-11-23 08:20:05 -07:00
Matthew Flatt
fc68d02027 JIT: more buffer-limit adjustments
To cut down on PPC-specific problems, make the JIT buffer's padding
larger on that platform (since instructions tend to be larger).
2012-11-20 06:27:05 -07:00
Eli Barzilay
95541928f1 New Racket version 5.3.1.8. 2012-11-20 03:30:15 -05:00
Matthew Flatt
06db2f9a74 JIT: add missing buffer-limit check
The missing check affected PPC especially.
2012-11-19 19:24:45 -07:00
Matthew Flatt
deb3c87c32 avoid a compiler warning 2012-11-19 09:41:32 -07:00
Matthew Flatt
be20ecc8f3 minor bytecode-compiler fix
A bogus flag was propagated to closure information. This flag
was ignored by the validator, but not `zo-parse'. Make the validator
reject the bogus flag, too, while fixing the compiler.
2012-11-19 09:36:16 -07:00
Matthew Flatt
345fce71d5 another fix to bytecode compiler's propoagation of local-type info
This one is related to shifting type info when the closure is
made smaller due to lifting of something that used to be in
the closure. The `games/pousse/robot' module exposed the bug.
2012-11-18 10:31:20 -07:00
Matthew Flatt
afca33b78b fix to bytecode compiler's propoagation of local-type info
This is another old bug that could have caused validation failures
with flonums, but it showed up with fixnum tracking because fixnums
are more common (e.g., from `string-length').

There were really two bugs: information installed at the
wrong offet in one place, and a failure to detect that information
should be propagated in a different place. Fixing both avoids
a validation problem with `html/sgml-reader'.
2012-11-18 10:31:20 -07:00
Matthew Flatt
81fc033f93 JIT: refactor unboxing flostack to better support other datatypes
Instead of keeping offsets in terms of `double's, keep it in
terms of bytes. This change is a step toward putting other kinds
of values on the flostack, such as extended-precision floats.
2012-11-18 10:31:20 -07:00
Matthew Flatt
4e6f8af667 JIT: fix a bug related to self-tail calls
The last argument in a self-tail cal is treated specially and
not immediately stored on the "runstack". Space was formerly
allocated for it, though, and under certain circumstances
that space was not initialized. I think a combination of thread
timing, GC timing, and flonum boxing could potentially lead to a
crash (but constructing a test case is really difficult).
2012-11-18 10:31:20 -07:00
Matthew Flatt
7a8f5f20fc bytecode compiler: replace table of local types with flags on primitives
This change makes it easier to annotate more primitives, so functions like
`integer-length' are now annotated as producing a fixnum.
2012-11-18 10:31:20 -07:00
Matthew Flatt
c5d3178602 change representation of optimization flags on primitives
Makes room for a lot more.
2012-11-18 10:31:20 -07:00
Matthew Flatt
42f74b5982 JIT tweak: stack-clearing operations do not disturb registers 2012-11-18 10:31:20 -07:00
Matthew Flatt
be4ce3ed66 skip some unneeded fixnum tests in JIT-generated code 2012-11-18 10:31:20 -07:00
Matthew Flatt
4041e65a86 JIT simplification
The scheme_generate_arith() function effectively had its own
copy of of the general scheme_generate_two_args() function that
predates the general one. Using scheme_generate_two_args()
instead simplifies and clarifies the code.
2012-11-18 10:31:20 -07:00
Matthew Flatt
eaf68e6e85 GMP and MPFR as pre-build libraries for Mac OS X and Windows
Also, add versions for Unix references, and adjust the way that
missing bindings are handled.
2012-11-16 22:21:54 -07:00
Matthew Flatt
8d30f1738c fix a sorting problem in a bytecode's submodule table 2012-11-16 14:10:32 -07:00
Matthew Flatt
c3cd089758 fix error message for `map', etc. on arity mismatch
Closes PR 13244
2012-11-16 14:10:32 -07:00
Matthew Flatt
9ef485d802 fix configuration for QNX
Patch from Tobias Hammer.

Closes PR 13265
2012-11-16 06:37:23 -07:00
Matthew Flatt
ed89b32de4 fix argument checking of semi-inlined `continuation-mark-set-first'
Closes PR 13256
2012-11-15 07:03:24 -07:00
Matthew Flatt
6ee62ec5ad check fixnum-literal range before claiming it's always a fixnum 2012-11-15 06:18:05 -07:00
Matthew Flatt
367f47f92d fix bad aliasing 2012-11-15 06:18:05 -07:00
Eli Barzilay
8c021b60ce New Racket version 5.3.1.7. 2012-11-15 03:30:14 -05:00
Matthew Flatt
bdf1c3e165 bytecode compiler: generalize local-type tracking for unboxing
Track fixnum results in the same way as flonum results to enable
unboxing, if that turns out to be useful. The intent of the change,
though, is to support other types in the future, such as "extnums".

The output `raco decompile' no longer includes `#%in', `#%flonum',
etc., annotations, which are mostly obvious and difficult to
keep in sync with the implementation. A local-binding name now
reflects a known type, however.

The change includes a bug repair for he bytecode compiler that
is independent of the generalization (i.e., the new test case
triggered the old problem using flonums).
2012-11-14 19:37:01 -07:00
Matthew Flatt
5400b41bce add `unsafe-cons-pair'
Also, make `list?' more optimistic about checking is  the "is list?"
flag on a pair.
2012-11-14 19:17:42 -07:00
Matthew Flatt
9e3f9fbe3e JIT x86: streamline store of a 32-bit constant 2012-11-14 19:17:42 -07:00
Matthew Flatt
91a5347d5b JIT: push alternate target-register handling into inlined code
This change streamlines generated code slightly.

New release checklist item: double-check by building with
TEST_ALTERNATE_TARGET_REGISTER.
2012-11-14 19:17:42 -07:00
Matthew Flatt
335711bc3f tweak JIT-inlined `cons'
Handle better the case where the first argument is more
complex than the second.
2012-11-14 19:17:41 -07:00
Matthew Flatt
f1807d2ecc JIT: skip an unused load 2012-11-14 19:17:41 -07:00
Matthew Flatt
d99888d700 x86_64: more direct thread-local access in JIT
Use one instruction instead of two.
2012-11-14 19:17:41 -07:00
Matthew Flatt
483148e528 repair to `custodian-shutdown-all'
This appears to be an old bug where a check and use are misordered, so
I'm not sure why it hasn't caused more trouble before, but it depends
on a GC happening at the right time.

Closes PR 13245
2012-11-12 07:01:12 -07:00
Matthew Flatt
4c3ee9c3c9 fix for Win64 build
Repairs a problem introduced by recent JIT changes.
2012-11-12 06:08:11 -07:00
Matthew Flatt
9c4cfdecc4 fix problem with require' inside begin-for-syntax'
The dependency wasn't recorded under the right phase.
2012-11-11 09:38:15 -07:00
Matthew Flatt
54c4a1f21a x86 JIT: use LEA for fixnum tagging
This has no effect on performance that I can detect, but it
looks better.
2012-11-11 09:38:15 -07:00
Matthew Flatt
b223ad2d90 x86_64 JIT: use 32-bit jumps until forced to allocate far away
The JIT was pessimistically using 64-bit jumps for long branches
or any jump between code that is allocated at different times.
Normally, though, code allocation stays within the same 32-bit
range of the heap, so stick to 32-bit jumps until forced by
allocation addresses to use 64-bit jump targets.
2012-11-11 09:38:15 -07:00
Matthew Flatt
e217aaa507 remove accidental declaration 2012-11-11 09:38:15 -07:00
Eli Barzilay
5589bcb278 New Racket version 5.3.1.5. 2012-11-08 03:30:18 -05:00
Matthew Flatt
ab5bbb5b37 flatten simple `define-values' within a module
This flattening is useful for the definition of `assq', for example.
2012-11-07 07:46:25 -07:00
Matthew Flatt
8033900674 add ad hoc optimization of car' to unsafe-car', etc.
In `(if (pair? x) E1 E2)', convert `(car x)' in E1 to
`(unsafe-car x)', and similarly for `(cdr x)'. Also,
`(begin (car x) (cdr x))' converts to `(begin (car x)
(unsafe-cdr x))' since `(car x)' implies a `pair?' test
on `x'.
2012-11-07 07:46:25 -07:00
Eli Barzilay
1c8001d174 Some "obvious" switching from racket' to racket/base'. 2012-11-06 13:29:09 -05:00
Matthew Flatt
25f142299b fix propagation of "multiple result" flag when optimizing `begin0' 2012-11-05 16:15:48 -07:00
Matthew Flatt
bd0e6ae941 fix problems with chaperones, printing, and cycles 2012-11-05 10:48:46 -07:00
Matthew Flatt
1126f02ddd change JIT inlining of `/' to be fast on a fixnum result 2012-11-04 17:20:11 -07:00
Matthew Flatt
eaf1fd1fe5 more consistently clear the tail-call and multiple-values buffers
More consistent clearing avoids a kind of space unsafety. There's just
one buffer per thread, so it's difficult to turn non-clearing into
a detectable leak (I wasn't abel to construct an example), but it
might be possible. More practically, failing to clear the buffer
can make it difficult to debug memory use.
2012-11-04 06:09:21 -07:00
Matthew Flatt
8079ff6c4f fix problem with prompts, call/cc, and tail-buffer allocation
Merge to v5.3.1
2012-11-04 06:09:21 -07:00
Matthew Flatt
7a256fbb72 yet another repair for backtraces
Compacting of the old generation breaks backtrace info. We
could try to fixup backtrace info, but it's simpler to just
disable compaction.
2012-11-04 06:09:21 -07:00
Matthew Flatt
55170581c4 fix locking for futures on uniprocessors
The scheme_is_multiprocessor() function wasn't the right guard
for whether to use a locking compare-and-swap instruction; any
use of pthread-based futures needs the compare-and-swap.

Merge to v5.3.1
2012-11-02 13:10:49 -06:00
Matthew Flatt
1f0508d77e fix initialization of local 2012-11-02 13:01:37 -06:00