I think the check should be left out in `rt::heap` because the compiler is guaranteed to never call it with a null pointer (`~()` is non-null to avoid breaking `Some(~())`). LLVM won't be able to optimize out the branches as redundant in most cases.

Eventually, I would like for `Vec<T>` to stop guaranteeing that a 0-capacity vector has a null self.ptr, so `Option<Vec<T>>` can have three words. The explicit checks would end up needing to be required again.