cold errors, benchmark updated, unstable features added
This commit is contained in:
parent
4f9c5c00bb
commit
f735348762
|
@ -98,20 +98,22 @@ fn join_praetor(b: &mut Bencher) {
|
|||
|
||||
let tree = tree::Tree::new(TREE_SIZE, 1u32);
|
||||
|
||||
fn sum(tree: &tree::Tree<u32>, node: usize) -> u32 {
|
||||
fn sum(tree: &tree::Tree<u32>, node: usize, scope: &Scope) -> u32 {
|
||||
let node = tree.get(node);
|
||||
Scope::with(|s| {
|
||||
let (l, r) = s.join(
|
||||
|| node.left.map(|node| sum(tree, node)).unwrap_or_default(),
|
||||
|| node.right.map(|node| sum(tree, node)).unwrap_or_default(),
|
||||
let (l, r) = scope.join(
|
||||
|s| node.left.map(|node| sum(tree, node, s)).unwrap_or_default(),
|
||||
|s| {
|
||||
node.right
|
||||
.map(|node| sum(tree, node, s))
|
||||
.unwrap_or_default()
|
||||
},
|
||||
);
|
||||
|
||||
node.leaf + l + r
|
||||
})
|
||||
}
|
||||
|
||||
b.iter(move || {
|
||||
let sum = pool.scope(|_| sum(&tree, tree.root().unwrap()));
|
||||
let sum = pool.scope(|s| sum(&tree, tree.root().unwrap(), s));
|
||||
// eprintln!("{sum}");
|
||||
assert_ne!(sum, 0);
|
||||
});
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
vec_deque_pop_if,
|
||||
unsafe_cell_access,
|
||||
debug_closure_helpers,
|
||||
cell_update,
|
||||
cold_path,
|
||||
let_chains
|
||||
)]
|
||||
|
||||
|
|
|
@ -166,6 +166,7 @@ mod job {
|
|||
any::Any,
|
||||
cell::UnsafeCell,
|
||||
fmt::Debug,
|
||||
hint::cold_path,
|
||||
marker::PhantomPinned,
|
||||
mem::{self, ManuallyDrop, MaybeUninit},
|
||||
pin::Pin,
|
||||
|
@ -554,6 +555,7 @@ mod job {
|
|||
let err = unsafe { (&mut *self.err_or_link.get()).error.take() };
|
||||
|
||||
let result: std::thread::Result<T> = if let Some(err) = err {
|
||||
cold_path();
|
||||
Err(err)
|
||||
} else {
|
||||
let val = unsafe {
|
||||
|
|
Loading…
Reference in a new issue