Commit Graph

62 Commits

Author SHA1 Message Date
Matthew Flatt
8fab527ce3 fix problems with `would-be-future' 2012-10-30 17:28:37 -06:00
James Swaine
196dc3de11 FV: fix layout bug with timelines containing GC's, add GC
node to summary hierlist
2012-10-20 01:36:20 -05:00
James Swaine
797979f0ae FV: blocks/syncs on worker threads now show primitive name, etc.,
and connecting lines use different colors to show
connections between blocks on worker threads and corresponding ones
on runtime thread
2012-10-20 01:36:20 -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
Eli Barzilay
cbfb1fdb37 A whole bunch of missing newlines at EOFs (and a few other spaceages). 2012-10-19 06:47:24 -04:00
James Swaine
05e0836b88 Make odd? and even? future-safe 2012-10-18 21:22:11 -05:00
James Swaine
7c8f0ce093 FV: fix drawing code to handle truncated logs, tests 2012-10-18 14:00:04 -05:00
James Swaine
b94caa2d77 FV: refactoring, various layout/display fixes 2012-10-18 13:31:42 -05:00
Matthew Flatt
33db9589a4 make `list-ref' future-safe even for large fixnum indices 2012-10-14 11:10:23 -04:00
James Swaine
3cd4efe201 Fix process id sorting in future visualizer 2012-08-11 09:21:29 -05:00
James Swaine
6271556e1d Add GC display to future visualizer 2012-08-11 01:00:51 -05:00
James Swaine
a3a55de00a Don't wait for future log messages if futures are disabled (future-visualizer) 2012-08-08 12:01:58 -05:00
James Swaine
ca360cdaed Add test to track performance of code inside a future over time 2012-07-22 20:08:51 -05:00
James Swaine
6eed135d02 Fix "dancing flags" issue with timeline ticks in future visualizer 2012-07-22 20:03:36 -05:00
James Swaine
e4f50997ad Minor changes to future-visualizer/trace tests 2012-07-22 20:03:22 -05:00
James Swaine
5214995967 Add unit tests for future-visualizer/trace 2012-07-22 20:03:22 -05:00
James Swaine
b987be068e Move racket/future/visualizer, racket/future/trace --> future-visualizer, future-visualizer/trace 2012-07-16 12:23:46 -05:00
James Swaine
91de1fae7c Remove unused test file 2012-07-11 09:17:49 -05:00
James Swaine
dbec8765e3 Futures visualizer - reorganize modules, expose formerly private stuff as public (and docs) 2012-07-10 10:55:19 -05:00
James Swaine
2b2070f7b2 Clean up code in futures visualizer
Remove mouseover display for creation graph nodes (for now)
2012-07-10 10:54:43 -05:00
Burke Fetscher
7972adc97a Futures visualizer - Various bug fixes 2012-07-10 10:54:43 -05:00
James Swaine
b6f71ec4be Add futures visualizer, improvements to futures logging 2012-07-10 10:54:42 -05:00
Matthew Flatt
5433d2302a fix some error-message tests 2012-06-23 05:21:52 -07:00
Matthew Flatt
40c892ff80 futures: future-local handling of stack overflow
Includes the addition of 'overflow and 'start-overflow-work
events, whcih are effectively specializations of 'sync and
'start-work to expose overflow handling.

Also, fix a bug related to a potential GC during mark-stack
restore from a lightweight continuation.
2012-06-21 07:14:50 +08:00
Matthew Flatt
e8645598d7 futures: fix bug related to tail calls 2012-05-30 16:20:36 -06:00
Matthew Flatt
0d88a08c48 implement branch mode JIT generation for `box-cas!'
Also, move slow path into common code
2012-05-03 19:22:46 -06:00
Aaron Turon
868dcb6d57 Add box-cas!' and unsafe-box*-cas!'.
These primitives atomically update a box to a new value, as long
as the current value is the same as a provided value.  They also
are future-safe.

When futures are enabled, they use low-level hardware instructions
to perform the change atomically.
2012-05-03 19:19:24 -06:00
Eli Barzilay
f7c67b49a4 Big newline at EOF scan. 2012-02-29 00:28:11 -05:00
James Swaine
7114f08c0b Added tests for would-be-future
Minor fixes to would-be-future
Added futures-enabled? primitive
Added primitive name to future-event struct
2012-02-12 01:32:30 -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
James Swaine
e9460282ac Deleted junk code that was commented out in the futures test suite 2011-07-14 19:44:19 -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
3bf0f800a7 futures: make `future' work in a future, overhaul logging, fix bugs 2011-04-06 17:40:44 -06:00
Matthew Flatt
b9c4bbae67 futures: limit parallelism via custodians
Closes PR 11682
2011-03-15 14:43:18 -06:00
Matthew Flatt
6041833ac5 fsemaphore cleanup
- abstract over JIT inlining of fsemaphore operations
 - fix problems with non-parallel fsemaphores
 - adjust tests so they don't assume too much concurrency
 - clarify fsemaphore vs. semaphore in the docs
2011-02-18 09:55:01 -07:00
James Swaine
ca5c061a71 Fix fsemaphore-try-wait? so the sema's count is decremented. Make fsemaphore-wait and other futures-related functions cooperate with the GC better. 2011-02-16 21:14:14 -06:00
James Swaine
c6642de116 Added future semaphores (fsemaphores) 2011-02-15 23:27:03 -06:00
James Swaine
19dbee0405 Added semaphores for futures 2011-02-08 17:58:02 -06:00
James Swaine
0a73a9d5a1 Added semaphores for futures 2011-02-08 17:55:12 -06:00
Matthew Flatt
da6d4f3fba futures: fix `future' when given a non-JITted procedure
Merge to 5.1
2011-02-05 06:43:09 -07:00
Matthew Flatt
65ad6aee20 fix `touch' to run a suspended future in the runtime thread
if no future thread is running the future; also adjust the
 policy for suspending a future so that even synchronized
 operations can suspend if there's other work to be done;
 also also fix `current-future' for nested `touch'es and when
 parallel futures are disabled
2010-10-07 14:58:53 -06:00
Matthew Flatt
15302dc844 adjust futures to decouple blocked futures from worker threads
which required adding a notion of "lightweight continuation" to
 the runtime system, where a lightweight continuation involves
 only frames from JIT0generated code (so that details of the stack
 layout are known, for example)
2010-10-07 07:39:16 -06:00
James Swaine
1a2c0546a6 current-future now returns #f if not inside a future, instead of null. Added documentation for current-future. 2010-08-19 09:36:25 -05:00
James Swaine
a41c9b882a Added (current-future) to the futures module (as an inlined, nonblocking primitive). 2010-08-18 23:33:22 -05:00
Eli Barzilay
7b14a1f585 "Racunit" -> "Rackunit" 2010-05-17 12:07:32 -04:00
Eli Barzilay
939af28a4c Some random ".ss" -> ".rkt"s 2010-05-17 05:58:19 -04:00
Jay McCarthy
645b0b06fe Merge branch 'master' of git.racket-lang.org:plt 2010-04-30 10:57:38 -06:00
Jay McCarthy
bc5cf30ebe Renaming rktunit to racunit 2010-04-30 10:57:32 -06:00
Matthew Flatt
7ed0d4e00a futures: protect use of mfence by processor count 2010-04-29 17:11:42 -06:00
Jay McCarthy
f70ffca756 Renaming schemeunit to rktunit and adding compat layer 2010-04-29 15:00:02 -06:00