about summary refs log tree commit diff stats
path: root/mu.arc.t
Commit message (Collapse)AuthorAgeFilesLines
* 292 - back to state of commit 276Kartik K. Agaram2014-11-221-1/+1
| | | | | | | | | | | | | | | | What have we learned? a) You can't detect deadlock between running a thread and waking up sleeping threads -- you may miss threads that are about to become available. b) Most of the context-switching code in 'run' shouldn't assume routine* is correctly set. That's just for 'run-for-time-slice' and for checking on blocked threads. I was implicitly requiring it when I shouldn't, and not setting it when checking blocked threads. Before I fix the next failing test I want to write unit tests for a) above.
* 291 - figured out the channel-handoff problemKartik K. Agaram2014-11-211-1/+3
| | | | | | | | 'read' and 'write' pass in the channel by value, so they block on different *local* variables. Does this kill my plan to pervasively use call-by-value everywhere? No, we might be able to salvage it if channels are the only shared pointers.
* 290 - how was channel-write-block *ever* working?!Kartik K. Agaram2014-11-211-1/+5
| | | | Oh right, because I wasn't using default-scope when checking to wake up.
* 289 - finally back to deadlock detectionKartik K. Agaram2014-11-211-3/+24
|
* 288 - support sleeping while watching a memory locationKartik K. Agaram2014-11-211-2/+50
|
* 283Kartik K. Agaram2014-11-211-2/+5
|
* 282 - scheduler skips ahead when all routines are asleepKartik K. Agaram2014-11-211-4/+18
|
* 281Kartik K. Agaram2014-11-211-2/+15
|
* 280 - waking up sleeping routinesKartik K. Agaram2014-11-211-0/+40
| | | | Tests still hanging at some point.
* 277 - back up, start refactoring the schedulerKartik K. Agaram2014-11-211-24/+64
| | | | | | | | | In trying to share pipes between routines, I realized my scheduler was actually quite brittle. Changing scheduling-interval* shouldn't be required in most tests, and shouldn't change the outcome most of the time. Current state: all scheduler tests fail, but everything else passes.
* 276 - now fork can take any argsKartik K. Agaram2014-11-191-0/+14
| | | | | | | | | No oargs, though. Hopefully we don't need them. Use channels for passing data back. Drawback: channels must all be passed in by value, and their direction isn't obvious. Hard to tell when multiple threads read/write the same channel. Hopefully it's amenable to static analysis.
* 275 - pass args to forkKartik K. Agaram2014-11-191-0/+11
| | | | Only literals for starters.
* 274 - long overdue test for 'fork'Kartik K. Agaram2014-11-191-0/+11
|
* 267 - more intuitive channel capacityKartik K. Agaram2014-11-151-5/+5
|
* 266 - update htmlKartik K. Agaram2014-11-091-1/+1
|
* 260Kartik K. Agaram2014-11-081-2/+2
|
* 259 - finally channel read/write can cause routine to sleepKartik K. Agaram2014-11-071-3/+45
|
* 258 - new channel helpers: empty? and full?Kartik K. Agaram2014-11-071-4/+88
|
* 257 - cleanup the narrative in mu.arc.tKartik K. Agaram2014-11-071-59/+103
|
* 256 - channel pointers can now wrapKartik K. Agaram2014-11-071-1/+57
|
* 255Kartik K. Agaram2014-11-071-3/+3
| | | | | As per 248, ignoring output values can reduce some of the pressure of dealing with raw locations.
* 250 - experimental support for _ oargKartik K. Agaram2014-11-071-0/+11
| | | | | | | This radically overhauls our assumption that args must always be lists, so we're probably missing things. Where we do, more tests are required. Only important trace change: .traces/dummy-oarg
* 248Kartik K. Agaram2014-11-071-8/+8
| | | | | | | | | | I've been using raw locations to make tests easy to read (test checks the same locations that code modifies). But this means I have to manage them myself, and I've been shoving variables into the storage for compounds like tagged-value. Doesn't matter in this case since we don't look at the contents of the tagged-value, but still unhygienic. Maybe we need syntax for ignoring some output values?
* 247Kartik K. Agaram2014-11-071-0/+33
|
* 246Kartik K. Agaram2014-11-071-0/+10
|
* 245 - sanity check for type tableKartik K. Agaram2014-11-061-0/+8
|
* 244Kartik K. Agaram2014-11-061-0/+1
|
* 243 - robustify channel testsKartik K. Agaram2014-11-061-9/+15
|
* 241 - 'sleep' on a memory locationKartik K. Agaram2014-11-061-0/+19
| | | | I thought we could be oblivious of channels, but that requires more work.
* 238 - avoid deadlock if all jobs are sleepingKartik K. Agaram2014-11-061-0/+24
|
* 237 - rudimentary 'sleep'Kartik K. Agaram2014-11-061-0/+24
|
* 235Kartik K. Agaram2014-11-061-4/+2
|
* 233 - start tracking global cycle countKartik K. Agaram2014-11-061-7/+11
| | | | We're gonna need this to implement 'sleep'.
* 232Kartik K. Agaram2014-11-061-0/+20
|
* 228 - rudimentary read from channelKartik K. Agaram2014-11-041-1/+22
|
* 225 - simple writes to channelKartik K. Agaram2014-11-041-0/+17
|
* 224Kartik K. Agaram2014-11-041-7/+9
|
* 223Kartik K. Agaram2014-11-041-0/+9
|
* 221Kartik K. Agaram2014-11-041-0/+15
|
* 220 - stop creating empty tracesKartik K. Agaram2014-11-041-10/+10
|
* 219Kartik K. Agaram2014-11-031-0/+7
|
* 218Kartik K. Agaram2014-11-031-0/+3
|
* 215 - allow record fields to be namedKartik K. Agaram2014-11-031-0/+21
|
* 214Kartik K. Agaram2014-11-031-11/+11
|
* 213 - bring back the fork exampleKartik K. Agaram2014-11-011-0/+12
|
* 211 - update html for readingKartik K. Agaram2014-11-011-1/+1
|
* 210 - go over mu.arc.t narrativeKartik K. Agaram2014-11-011-37/+66
|
* 209Kartik K. Agaram2014-11-011-2/+19
|
* 208Kartik K. Agaram2014-11-011-42/+42
|
* 207Kartik K. Agaram2014-11-011-139/+137
|