about summary refs log tree commit diff
path: root/src/rt/rust_upcall.cpp
AgeCommit message (Collapse)AuthorLines
2011-08-29Implement non-internal ivecsMarijn Haverbeke-65/+19
Vectors are now similar to our old, pre-internal vectors, except that they are uniquely owned, not refcounted. Their name should probably change too, then. I've renamed them to vec in the runtime, will do so throughout the compiler later.
2011-08-25rustc: Add an extra flag to object tydescs so that shapes know how to find ↵Patrick Walton-2/+4
the captured subtydescs
2011-08-24Optimize += [x] into a simple push operationMarijn Haverbeke-0/+24
This is a preparation for making vectors always-on-the-heap again, which would cause way too much malloc traffic for this idiom. I will add an efficient std::vec::push in the future, and migrate += [x] to that instead. Reduces compiler code size by 3%
2011-08-22Rename copy_glue back to take_glueMarijn Haverbeke-3/+3
2011-08-19rt: Remove rustboot's GC infrastructurePatrick Walton-15/+0
2011-08-19rt: Call maybe_gc on mallocsPatrick Walton-0/+3
2011-08-18Rename rust_vec to rust_evecBrian Anderson-14/+14
2011-08-18Rename some vec upcalls and trans functions from vec* to evec*Brian Anderson-2/+8
2011-08-18Remove upcall_new_vecBrian Anderson-18/+0
2011-08-17rustc: Use obstacks in lieu of dynamically-allocated frames only when the ↵Patrick Walton-1/+1
frame is actually dynamically-sized
2011-08-17Revert "rt: Use obstacks in lieu of dynamically-sized frames"Patrick Walton-1/+1
This reverts commit cc5fcfce89312042e52401eb883160ebf289235f.
2011-08-17rt: Use obstacks in lieu of dynamically-sized framesPatrick Walton-1/+1
2011-08-16rt: Implement obstacks, untested as of yetPatrick Walton-0/+22
2011-08-16Removing task, chan and port upcalls.Eric Holk-175/+0
2011-08-15Properly ref counting to fix valgrind issues on linux.Eric Holk-12/+16
2011-08-10rustc: Remove unused "trace" upcallsPatrick Walton-12/+0
2011-08-10rt: Shutdown gracefully on failureBrian Anderson-1/+1
When the kernel fails, kill all tasks and wait for the schedulers to stop instead of just exiting. I'm sure there are tons of lurking issues here but this is enough to fail without leaking (at least in the absence of cleanups).
2011-08-08Introduced task handles.unknown-11/+17
This is the new way to refer to tasks in rust-land. Currently all they do is serve as a key to look up the old rust_task structure. Ideally they won't be ref counted, but baby steps.
2011-08-05Atomic ref counting for chans.Eric Holk-0/+16
2011-08-05Basic async IO module using libuvRob Arnold-14/+1
2011-08-01Adding an intrinsic for recv.Eric Holk-2/+0
2011-08-01Added send and receive to comm library.Eric Holk-21/+3
2011-08-01Started working on a library-based comm system. Creating and deleting ports ↵Eric Holk-19/+12
work.
2011-07-29Lock the new task's scheduler when creating a taskBrian Anderson-1/+0
Previously we were locking the spawning task's scheduler. I couldn't see that that was protecting anything. The newborn_task list in the new task's scheduler though was unprotected from concurrent access. So now we're locking the new task's scheduler.
2011-07-29Removing proxies and message queues.Eric Holk-4/+2
2011-07-28Atomic reference counting for tasks.Eric Holk-22/+9
2011-07-28Adding upcalls to to ref() and deref() tasks. This is the first step towards ↵Eric Holk-0/+17
atomic reference counting of tasks.
2011-07-28Per-thread scheduling. Closes #682.Eric Holk-5/+5
Tasks are spawned on a random thread. Currently they stay there, but we should add task migration and load balancing in the future. This should drammatically improve our task performance benchmarks.
2011-07-21Improving move semantics for channel operations.Eric Holk-1/+1
This lets us un-XFAIL task-comm-10.rs.
2011-07-21Lots of work on memory tracking and channels.Eric Holk-14/+24
We're trying to get closer to doing correct move semantics for channel operations. This involves a lot of cleanup (such as removing the unused sched parameter from rust_vec constructor) and making circular_buffer kernel_owned. Added tagging for memory allocations. This means we give a string tag to everything we allocate. If we leak something and TRACK_ALLOCATIONS is enabled, then it's much easier now to tell exactly what is leaking.
2011-07-15rustc: Implement interior string logging in DPSPatrick Walton-0/+10
2011-07-14Modify upcall_fail so that failing tasks relinquish control to the schedulerBrian Anderson-0/+3
This is sufficient to let unsupervised tasks that don't allocate fail without crashing or leaking.
2011-07-13Prohibit trailing whitespace under 'tidy' script. Clean up all caught cases.Graydon Hoare-6/+5
2011-07-13Remove 'Nop.' comments, add emacs lines, remove obsolete file.Graydon Hoare-1/+0
2011-07-13Fix compile-command lines in rt.Graydon Hoare-1/+1
2011-07-13Remove obsolete nargs counts from runtime.Graydon Hoare-6/+6
2011-07-13Attempt to correct buggy win32 timer code (causing tinderbox failures).Graydon Hoare-2/+2
2011-07-12rt: Remove the locks around upcall_shared_malloc and upcall_shared_freePatrick Walton-2/+1
2011-07-10rt: Remove the now-unused upcall_ivec_resize and upcall_ivec_spill, which ↵Patrick Walton-40/+0
allocated from the wrong heap
2011-07-07Work on debugging race conditions.Eric Holk-17/+26
Ports and channels have been moved to the kernel pool, since they've been known to outlive their associated task. This probably isn't the right thing to do, the life cycle needs fixed instead. Some refactorying in memory_region.cpp. Added a helper function to increment and decrement the allocation counter. This makes it easier to switch between atomic and non-atomic increments. Using atomic increments for now, although this still does not fix the problem.
2011-07-07Removing most of the locks in rust_upcall.cpp and elsewhere.Eric Holk-51/+38
2011-07-06Allocate rust_ivec buffers out of the kernel poolRob Arnold-0/+72
The duplication of upcalls is due to the fact that the runtime is shared between stage0/rustc and stage1/rustc. Once snapshots are updated, they should be de-duplicated.
2011-07-06rt: Add a stack check to upcall_get_type_descPatrick Walton-0/+17
2011-07-01Move the channel destroy code into rust_chan.Rob Arnold-29/+1
This lets native code more easily destroy channels since directly deleting a channel is not always the right way to destroy it.
2011-07-01Move channel cloning logic into a method on rust_chan.Rob Arnold-15/+1
This will allow us to more easily clone channels from native code.
2011-06-30rt: Add room for the new fill slot when resizing interior vectorsPatrick Walton-1/+1
2011-06-29Re-enable tidy (it was broken) and fix various non-tidy things.Graydon Hoare-1/+2
2011-06-29rt: Remove the lock around upcall_vec_append. Add a test case. Closes #156.Patrick Walton-1/+0
2011-06-28rustc: Move duplicate_heap_parts to copy glue; add a test casePatrick Walton-3/+2
2011-06-28rustc: Rename take glue to copy gluePatrick Walton-3/+4