Merge pull request #34862 from TimNN/revert-34836-panic-counter

Revert #34836 "Refactored code to access TLS only in case of panic"
This commit is contained in:
Alex Crichton 2016-07-16 13:38:06 -07:00 committed by GitHub
commit 60564d072f

View File

@ -232,9 +232,10 @@ fn default_hook(info: &PanicInfo) {
pub unsafe fn try<R, F: FnOnce() -> R>(f: F) -> Result<R, Box<Any + Send>> {
let mut slot = None;
let mut f = Some(f);
let ret;
let ret = PANIC_COUNT.with(|s| {
let prev = s.get();
s.set(0);
{
let mut to_run = || {
slot = Some(f.take().unwrap()());
};
@ -247,21 +248,18 @@ pub unsafe fn try<R, F: FnOnce() -> R>(f: F) -> Result<R, Box<Any + Send>> {
dataptr,
&mut any_data,
&mut any_vtable);
s.set(prev);
if r == 0 {
ret = Ok(());
Ok(())
} else {
PANIC_COUNT.with(|s| {
let prev = s.get();
s.set(prev - 1);
});
ret = Err(mem::transmute(raw::TraitObject {
Err(mem::transmute(raw::TraitObject {
data: any_data as *mut _,
vtable: any_vtable as *mut _,
}));
}))
}
}
});
debug_assert!(PANIC_COUNT.with(|c| c.get() == 0));
return ret.map(|()| {
slot.take().unwrap()
});