Commit Graph

3971 Commits

Author SHA1 Message Date
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
Matthew Flatt
3fd5b5eb6e backtrace fix 2012-11-02 13:01:32 -06:00
Matthew Flatt
a635fe817b remove unused local variable 2012-11-02 11:44:43 -06:00
Matthew Flatt
3d68fc2505 fix allocation of bytecode-validation stack overflow 2012-11-02 10:34:17 -06:00
Matthew Flatt
466d6e7394 fixes for PPC JIT
Related to recent structure-operation changes.
2012-11-02 09:56:07 -06:00
Asumu Takikawa
948e898406 Fix continuation mark chaperones
Failed to redirect correctly on `continuation-mark-set-first`
when the mark set argument was #f.
2012-11-02 11:26:40 -04:00
Matthew Flatt
3ca7300a0d improvements to GC backtrace info 2012-11-02 07:45:57 -06:00
Matthew Flatt
b520523950 change GC to specialize pairs a little more
This change doesn't speed up anything, so far. GC performance
of pairs (or anything) is determined almost completely by
its size in bytes, and this change doesn't affect the size of
pairs. At the same time, the change mostly replaces the obsolete
"xtagged" support, and I might have a better idea that builds on
this change, so I'm keeping it for now.
2012-11-02 07:45:57 -06:00
Matthew Flatt
f832c961a8 change `Scheme_Symbol' declaration to avoid compiler warnings 2012-11-01 09:09:36 -06:00
Matthew Flatt
0e4305fc45 fix problem with places and `struct-type-info'
Merge to v5.3.1
2012-11-01 07:19:53 -06:00
Matthew Flatt
8f73ebbc36 fix error-message code
Closes PR 13222
2012-10-31 12:17:49 -06:00
Matthew Flatt
08c659c5d5 fix a bug in `free-identifier=?'
The bug is related to macro-introduced `require' and rename on
export.
2012-10-31 08:03:47 -06:00
Eli Barzilay
f852b9eb92 New Racket version 5.3.1.4. 2012-10-31 03:30:17 -04:00
Matthew Flatt
195cbe832c fix problem with compiler's cross-module shape tracking 2012-10-30 17:47:15 -06:00
Matthew Flatt
8fab527ce3 fix problems with `would-be-future' 2012-10-30 17:28:37 -06:00
Matthew Flatt
8aee78a4bb fix thread-swap callbacks 2012-10-30 17:24:04 -06:00
Matthew Flatt
d7bf677645 track import "shapes" as procedure or structure type
Shape information allows the linker to check the importing
module's compile-time expectation against the run-time
value of its imports. The JIT, in turn, can rely on that
checking to better inline structure-type predicates, etc.,
and to more directy call JIT-generated code across
module boundaries.

In addition to checking the "shape" of an import, the import's
JITted vs. non-JITted state must be consistent. To prevent shifts
in JIT state, the `eval-jit-enabled' parameter is now restricted
in its effect to top-level bindings.
2012-10-30 13:29:28 -06:00
Matthew Flatt
cfb256fe16 cocoa: update PSMTabBarControl for x86_64
The update avoids a now-deprecated method.
2012-10-28 12:04:37 -06:00
Eli Barzilay
cdf7cad8ac New Racket version 5.3.1.3. 2012-10-28 03:35:15 -04:00
Matthew Flatt
fadf8a8860 avoid compiler warnings 2012-10-27 21:34:08 -06:00
Matthew Flatt
847360aa60 avoid compiler warning 2012-10-27 09:24:02 -06:00
Matthew Flatt
5f30cc87ea track information about `struct' bindings during compilation
This tracking allows the compiler to treat structure sub-type
declarations as generating constant results, and it also allows
the compiler to recognize an applications of a constructor or
predicate as functional.
2012-10-27 07:58:56 -06:00
Matthew Flatt
e698be778b remove a level of indirection in struct selectors/mutators 2012-10-27 06:53:21 -06:00
Matthew Flatt
736e6efc2d recognize `struct' bindings as constant
The JIT takes advantage of known-constant bindings to avoid the
check that a variable is still bound to a structure predicate,
selector, or mutator; that makes the code short enough to really
inline. The inlined version takes about half the time of the
indirect version.

The compiler does not yet track bindings precisely enough to
recognize constants for sub-type declarations.
2012-10-27 06:53:21 -06:00
Matthew Flatt
1bf5fda869 fix `chaperone-prompt-tag' 2012-10-24 13:18:53 -07:00
Matthew Flatt
a2c4f6064d fix GC alignment bug
Merge to v5.3.1
2012-10-24 05:47:46 -07:00
Matthew Flatt
1b589c1529 fix a JIT problem with inline stuct allocation 2012-10-23 11:39:23 -07:00
Matthew Flatt
9708a01a0a ffi/unsafe: defend against some finalization bugs
Turn use of a finalized ffi callout into a reported error,
instead of a crash. Clarify the existence of the finalizer
in the docs. Fix error logging of the finalizer thread.

Merge to v5.3.1
2012-10-21 08:11:45 -06:00
Matthew Flatt
70fee17ef9 fix mismanagement of temporary print buffer
Closes PR 13199

Merge to v5.3.1
2012-10-20 09:37:16 -06:00
Matthew Flatt
3407b2e73f more clean-up for even?'/odd?' change
Along the same lines as 44078a1f01.
2012-10-20 09:36:23 -06:00
Eli Barzilay
ad4af39146 New Racket version 5.3.1.2. 2012-10-20 03:30:16 -04:00
James Swaine
44078a1f01 Eliminate code duplication for futures/non-futures mode 2012-10-20 01:36:14 -05:00
James Swaine
9a0f19da59 Fix futures-disabled build errors introduced by changes to even? and odd? 2012-10-19 13:49:05 -05:00
Matthew Flatt
e59066debe bytecode validator: check "constant" annotations on variable references
Bytecode changes in two small ways to help the validator:
 * a cross-module variable reference preserves the compiler's
   annotation on whether the reference is constant, fixed, or other
 * lifted procedures now appear in the module body just before the
   definitions that use them, instead of at the beginning of the
   module body
2012-10-19 11:27:52 -06:00
James Swaine
05e0836b88 Make odd? and even? future-safe 2012-10-18 21:22:11 -05:00