Stop inferring bot/static when types/regions are unconstrained.
Also, some other changes that came up along the way: - add a 'blk' region for the current block. - detect unused type/region variables.
This commit is contained in:
@@ -14,7 +14,7 @@ native mod rustrt {
|
||||
fn rust_task_unweaken(ch: rust_port_id);
|
||||
}
|
||||
|
||||
type global_ptr<T: send> = *libc::uintptr_t;
|
||||
type global_ptr = *libc::uintptr_t;
|
||||
|
||||
#[doc = "
|
||||
Atomically gets a channel from a pointer to a pointer-sized memory location
|
||||
@@ -22,7 +22,7 @@ or, if no channel exists creates and installs a new channel and sets up a new
|
||||
task to receive from it.
|
||||
"]
|
||||
unsafe fn chan_from_global_ptr<T: send>(
|
||||
global: global_ptr<T>,
|
||||
global: global_ptr,
|
||||
builder: fn() -> task::builder,
|
||||
f: fn~(comm::port<T>)
|
||||
) -> comm::chan<T> {
|
||||
|
||||
@@ -1168,7 +1168,9 @@ mod unsafe {
|
||||
#[inline(always)]
|
||||
unsafe fn form_slice<T,U>(p: *T, len: uint, f: fn([T]/&) -> U) -> U {
|
||||
let pair = (p, len * sys::size_of::<T>());
|
||||
let v : *([T]/&) = ::unsafe::reinterpret_cast(ptr::addr_of(pair));
|
||||
// FIXME: should use &blk not &static here, but a snapshot is req'd
|
||||
let v : *([T]/&static) =
|
||||
::unsafe::reinterpret_cast(ptr::addr_of(pair));
|
||||
f(*v)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user