diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2014-01-04 00:06:13 -0800 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2014-01-04 00:08:03 -0800 |
| commit | dcaf10f8de7be79d7ef8aa5e048bf6535108dc16 (patch) | |
| tree | 2a5a09d84e6db2421076fe36f407f736e989266e /src/libstd | |
| parent | a1cb8dc30c6adc88703763a8703b6a3027598b2d (diff) | |
| download | rust-dcaf10f8de7be79d7ef8aa5e048bf6535108dc16.tar.gz rust-dcaf10f8de7be79d7ef8aa5e048bf6535108dc16.zip | |
Add a stack_bounds function to the Runtime trait
This allows inspection of the current task's bounds regardless of what the underlying task is. Closes #11293
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/rt/mod.rs | 1 | ||||
| -rw-r--r-- | src/libstd/rt/task.rs | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/libstd/rt/mod.rs b/src/libstd/rt/mod.rs index 9bd804f7bab..050caef86eb 100644 --- a/src/libstd/rt/mod.rs +++ b/src/libstd/rt/mod.rs @@ -159,6 +159,7 @@ pub trait Runtime { // you're in. fn spawn_sibling(~self, cur_task: ~Task, opts: TaskOpts, f: proc()); fn local_io<'a>(&'a mut self) -> Option<rtio::LocalIo<'a>>; + fn stack_bounds(&self) -> Option<(uint, uint)>; // (lo, hi) // XXX: This is a serious code smell and this should not exist at all. fn wrap(~self) -> ~Any; diff --git a/src/libstd/rt/task.rs b/src/libstd/rt/task.rs index 583a1e0657c..3fdbc8938ba 100644 --- a/src/libstd/rt/task.rs +++ b/src/libstd/rt/task.rs @@ -277,6 +277,13 @@ impl Task { pub fn local_io<'a>(&'a mut self) -> Option<LocalIo<'a>> { self.imp.get_mut_ref().local_io() } + + /// Returns the stack bounds for this task in (lo, hi) format. The stack + /// bounds may not be known for all tasks, so the return value may be + /// `None`. + pub fn stack_bounds(&self) -> Option<(uint, uint)> { + self.imp.get_ref().stack_bounds() + } } impl Drop for Task { |
